{"version":3,"file":"page-react-renderer.umd.cjs","sources":["../../../node_modules/.vite_external/react.js","../../../node_modules/.vite_external/react-dom.js","../../../../page-renderer-core/src/adapter/index.ts","../../../../page-renderer-core/src/context/index.ts","../../../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../../../node_modules/.vite_external/lodash.js","../../../../page-types/src/datasource/data-source.ts","../../../../page-types/src/event/node.ts","../../../../page-utils/src/is-object.ts","../../../../page-utils/src/logger.ts","../../../../page-utils/src/script.ts","../../../../page-utils/src/clone-enumerable-property.ts","../../../../page-utils/src/is-react.ts","../../../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.vite_external/prop-types.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","../../../../../node_modules/.pnpm/react-lifecycles-compat@3.0.4/node_modules/react-lifecycles-compat/react-lifecycles-compat.es.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/process/dist/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/env.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/log.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/object.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/string.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/dom.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/events.js","../../../node_modules/.vite_external/dayjs.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/customParseFormat.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/updateLocale.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/localeData.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/quarterOfYear.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/advancedFormat.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/weekOfYear.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/weekYear.js","../../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/locale/zh-cn.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/date.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/func.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/support.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/keycode.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/focus.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/htmlId.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/guid.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/index.js","../../../../../node_modules/.pnpm/moment@2.30.1/node_modules/moment/dist/moment.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/locale/zh-cn.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/config-provider/get-context-props.js","../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js","../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","../../../../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/config-provider/error-boundary.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/config-provider/config.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/config-provider/consumer.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/config-provider/cache.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/config-provider/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/util/component.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/hasClass.js","../../../../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/addClass.js","../../../../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/removeClass.js","../../../../../node_modules/.pnpm/react-transition-group@2.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-transition-group/utils/PropTypes.js","../../../../../node_modules/.pnpm/react-transition-group@2.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-transition-group/Transition.js","../../../../../node_modules/.pnpm/react-transition-group@2.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-transition-group/CSSTransition.js","../../../../../node_modules/.pnpm/react-transition-group@2.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-transition-group/utils/ChildMapping.js","../../../../../node_modules/.pnpm/react-transition-group@2.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-transition-group/TransitionGroup.js","../../../../../node_modules/.pnpm/react-transition-group@2.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-transition-group/ReplaceTransition.js","../../../../../node_modules/.pnpm/react-transition-group@2.9.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-transition-group/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/animate/child.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/animate/animate.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/animate/expand.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/animate/overlay-animate.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/animate/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/manager.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/utils/find-node.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/gateway.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/utils/position.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/position.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/overlay.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../../node_modules/.pnpm/@babel+runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../../../node_modules/.pnpm/@alifd+overlay@0.3.7/node_modules/@alifd/overlay/es/utils.js","../../../../../node_modules/.pnpm/@alifd+overlay@0.3.7/node_modules/@alifd/overlay/es/placement.js","../../../../../node_modules/.pnpm/@alifd+overlay@0.3.7/node_modules/@alifd/overlay/es/overlay-context.js","../../../../../node_modules/.pnpm/@alifd+overlay@0.3.7/node_modules/@alifd/overlay/es/overlay.js","../../../../../node_modules/.pnpm/@alifd+overlay@0.3.7/node_modules/@alifd/overlay/es/popup.js","../../../../../node_modules/.pnpm/@alifd+overlay@0.3.7/node_modules/@alifd/overlay/es/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/overlay-v2.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/popup.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/popup-v2.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/overlay/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/icon/icon.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/icon/icon-font.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/icon/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/balloon/alignMap.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/balloon/inner.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/balloon/util.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/balloon/balloon.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/balloon/tooltip.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/balloon/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/item.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/selectable-item.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/util.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/popup-item.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/sub-menu.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/menu.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/mixin-ui-state/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/checkbox/with-context.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/checkbox/checkbox.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/checkbox/checkbox-group.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/checkbox/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/radio/with-context.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/radio/radio.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/radio/radio-group.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/radio/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/checkable-item.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/checkbox-item.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/radio-item.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/group.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/divider.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/view/create.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/menu/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/button/view/button.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/button/view/group.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/button/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/tag/tag.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/tag/tag-group.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/tag/selectable.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/tag/closeable.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/tag/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/input/base.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/input/group.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/input/input.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/input/password.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/input/textarea.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/input/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/util.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/data-store.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/virtual-list/virtual-list.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/virtual-list/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/base.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/select.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/auto-complete.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/option.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/option-group.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/select/index.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/search/Search.js","../../../../../node_modules/.pnpm/@alifd+next@1.27.32_@alifd+meet-react@2.9.9_rax@1.2.3_react-dom@18.3.1_react@18.3.1__re_912900359dbf9016c61a07e80d4fd734/node_modules/@alifd/next/es/search/index.js","../../../../page-utils/src/navtive-selection.ts","../../../../page-utils/src/misc.ts","../../../../page-utils/src/check-types/is-i18n-data.ts","../../../../page-utils/src/check-types/is-jsexpression.ts","../../../../page-utils/src/check-types/is-isfunction.ts","../../../../page-shared/src/enum/transform-stage.ts","../../../../page-utils/src/check-types/is-required-prop-type.ts","../../../../../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","../../../../page-utils/src/context-menu.tsx","../../../../../node_modules/.pnpm/react-is@19.1.0/node_modules/react-is/cjs/react-is.production.js","../../../../../node_modules/.pnpm/react-is@19.1.0/node_modules/react-is/cjs/react-is.development.js","../../../../../node_modules/.pnpm/react-is@19.1.0/node_modules/react-is/index.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/has.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/checkPropTypes.js","../../../../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithTypeCheckers.js","../../../../page-utils/src/check-prop-types.ts","../../../../page-datasource-engine/src/utils.ts","../../../../page-datasource-engine/src/helpers/index.ts","../../../../page-datasource-engine/src/handlers/commonHandler.ts","../../../node_modules/.vite_external/antd.js","../../../../page-datasource-engine/src/handlers/errorHandler.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/get-env.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/get-api-prefix.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/process-response.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/traceparent.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/get.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/post.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/fetch/yt-fetch.ts","../../../../../node_modules/.pnpm/@yuntoo+fetch@1.0.16_typescript@5.8.3/node_modules/@yuntoo/fetch/utils/get-runtime-api-prefix.ts","../../../../page-datasource-engine/src/handlers/fetch.ts","../../../../../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","../../../../page-datasource-engine/src/handlers/urlParams.ts","../../../../page-datasource-engine/src/handlers/variable.ts","../../../../page-datasource-engine/src/handlers/index.ts","../../../../page-datasource-engine/src/core/adapter.ts","../../../../page-datasource-engine/src/core/RuntimeDataSourceItem.ts","../../../../page-datasource-engine/src/core/reloadDataSourceFactory.ts","../../../../page-datasource-engine/src/interpret/DataSourceEngineFactory.ts","../../../../page-renderer-core/src/components/Div.tsx","../../../../page-renderer-core/src/components/VisualDom/index.tsx","../../../../page-renderer-core/src/utils/logger.ts","../../../../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","../../../../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","../../../../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","../../../../../node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.6/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","../../../../../node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.6/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","../../../../../node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.6/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","../../../../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js","../../../../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js","../../../../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","../../../../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.1.0/node_modules/@formatjs/icu-messageformat-parser/lib/index.js","../../../../../node_modules/.pnpm/@formatjs+fast-memoize@1.2.1/node_modules/@formatjs/fast-memoize/lib/index.js","../../../../../node_modules/.pnpm/intl-messageformat@9.13.0/node_modules/intl-messageformat/lib/src/error.js","../../../../../node_modules/.pnpm/intl-messageformat@9.13.0/node_modules/intl-messageformat/lib/src/formatters.js","../../../../../node_modules/.pnpm/intl-messageformat@9.13.0/node_modules/intl-messageformat/lib/src/core.js","../../../../page-renderer-core/src/utils/common.ts","../../../../../node_modules/.pnpm/whatwg-fetch@3.6.20/node_modules/whatwg-fetch/fetch.js","../../../../../node_modules/.pnpm/fetch-jsonp@1.3.0/node_modules/fetch-jsonp/build/fetch-jsonp.js","../../../../page-renderer-core/src/utils/instance-registry.ts","../../../../page-renderer-core/src/hoc/index.tsx","../../../../page-renderer-core/src/hoc/leaf.tsx","../../../../page-renderer-core/src/utils/is-use-loop.ts","../../../../antd-meta/src/_position/button-position.ts","../../../../antd-meta/src/_action/dialog/view.tsx","../../../../antd-meta/src/_action/close-dialog/view.tsx","../../../../antd-meta/src/_action/flow-action/view.tsx","../../../../antd-meta/src/_action/message/view.tsx","../../../../antd-meta/src/_utils/request.tsx","../../../../antd-meta/src/_action/request/view.tsx","../../../../antd-meta/src/_action/link/view.tsx","../../../../antd-meta/src/_action/reset/view.tsx","../../../../antd-meta/src/_action/submit/view.tsx","../../../../antd-meta/src/_action/js-action/view.tsx","../../../../antd-meta/src/_action/index.tsx","../../../../antd-meta/src/_utils/const.ts","../../../../antd-meta/src/_utils/utils.tsx","../../../../antd-meta/src/_utils/prototype-utils.ts","../../../../antd-meta/src/_setter-snippet/dialog.tsx","../../../../antd-meta/src/_action/dialog/prototype.ts","../../../../antd-meta/src/_action/dialog/prototype-config.tsx","../../../../antd-meta/src/_action/close-dialog/prototype.ts","../../../../antd-meta/src/_action/close-dialog/prototype-config.tsx","../../../../antd-meta/src/_setters/antd-icon-setter/index.tsx","../../../../antd-meta/src/_setter-snippet/common-style.tsx","../../../../antd-meta/src/_setter-snippet/button.tsx","../../../../antd-meta/src/_action/flow-action/prototype.ts","../../../../antd-meta/src/_action/flow-action/prototype-config.tsx","../../../../antd-meta/src/_setter-snippet/message.tsx","../../../../antd-meta/src/_action/message/prototype.ts","../../../../antd-meta/src/_action/message/prototype-config.tsx","../../../../antd-meta/src/_setter-snippet/data-source.ts","../../../../antd-meta/src/_setter-snippet/request.tsx","../../../../antd-meta/src/_action/request/prototype.ts","../../../../antd-meta/src/_action/request/prototype-config.tsx","../../../../antd-meta/src/_action/link/prototype.ts","../../../../antd-meta/src/_action/link/prototype-config.tsx","../../../../antd-meta/src/_setter-snippet/form.tsx","../../../../antd-meta/src/_action/reset/prototype.ts","../../../../antd-meta/src/_action/reset/prototype-config.tsx","../../../../antd-meta/src/_action/submit/prototype.ts","../../../../antd-meta/src/_action/submit/prototype-config.tsx","../../../../antd-meta/src/_action/js-action/prototype.ts","../../../../antd-meta/src/_action/js-action/prototype-config.tsx","../../../../antd-meta/src/_action/prototype-index.tsx","../../../../antd-meta/src/_event/index.ts","../../../../antd-meta/src/components/yt-table/snippets.ts","../../../../antd-meta/src/components/yt-table/format/text.ts","../../../../antd-meta/src/components/yt-table/format/avatar-text.ts","../../../../antd-meta/src/components/yt-table/format/number.ts","../../../../antd-meta/src/components/yt-table/format/progress.ts","../../../../antd-meta/src/components/yt-table/format/percent.ts","../../../../antd-meta/src/components/yt-table/format/tag.ts","../../../../antd-meta/src/components/yt-table/format/date.ts","../../../../antd-meta/src/components/yt-table/format/datetime.ts","../../../../antd-meta/src/components/yt-table/format/custom.ts","../../../../antd-meta/src/components/yt-table/format/enum.ts","../../../../antd-meta/src/components/yt-table/format/component.ts","../../../../antd-meta/src/components/yt-table/format/index.ts","../../../../antd-meta/src/components/yt-table/meta.ts","../../../../antd-meta/src/_utils/form-item-register/meta.ts","../../../../antd-meta/src/components/yt-form/meta.ts","../../../../antd-meta/src/components/yt-filter/meta.ts","../../../../smart-schema-converter/src/const.ts","../../../../antd-smart/src/const.ts","../../../../antd-smart/src/api.ts","../../../../antd-smart/src/common/smart-meta.ts","../../../../antd-smart/src/lr-smart-table/meta.tsx","../../../../page-renderer-core/src/renderer/base.tsx","../../../../page-renderer-core/src/renderer/page.tsx","../../../../page-renderer-core/src/renderer/component.tsx","../../../../page-renderer-core/src/renderer/block.tsx","../../../../page-renderer-core/src/renderer/addon.tsx","../../../../page-renderer-core/src/renderer/temp.tsx","../../../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../../../node_modules/.pnpm/debug@4.4.1/node_modules/debug/src/common.js","../../../../../node_modules/.pnpm/debug@4.4.1/node_modules/debug/src/browser.js","../../../../page-renderer-core/src/renderer/renderer.tsx","../../../src/index.ts"],"sourcesContent":["module.exports = React;","module.exports = ReactDOM;","import { IRuntime, IRendererModules, IGeneralConstructor } from \"../types\";\n\nexport enum Env {\n  React = \"react\",\n}\n\nclass Adapter {\n  runtime: IRuntime;\n\n  builtinModules = [\n    \"Component\",\n    \"PureComponent\",\n    \"createElement\",\n    \"createContext\",\n    \"forwardRef\",\n    \"findDOMNode\",\n  ];\n\n  env: Env;\n\n  renderers: IRendererModules;\n\n  configProvider: any;\n\n  constructor() {\n    this.initRuntime();\n  }\n\n  initRuntime() {\n    const Component: IGeneralConstructor = class<T = any, S = any> {\n      state: Readonly<S>;\n      props: Readonly<T> & Readonly<{ children?: any | undefined }>;\n      refs: Record<string, unknown>;\n      context: Record<string, unknown>;\n      setState() {}\n      forceUpdate() {}\n      render() {}\n    };\n    const PureComponent = class<T = any, S = any> {\n      state: Readonly<S>;\n      props: Readonly<T> & Readonly<{ children?: any | undefined }>;\n      refs: Record<string, unknown>;\n      context: Record<string, unknown>;\n      setState() {}\n      forceUpdate() {}\n      render() {}\n    };\n    const createElement = () => {};\n    const createContext = () => {};\n    const forwardRef = () => {};\n    const findDOMNode = () => {};\n    this.runtime = {\n      Component,\n      PureComponent,\n      createElement,\n      createContext,\n      forwardRef,\n      findDOMNode,\n    };\n  }\n\n  setRuntime(runtime: IRuntime) {\n    if (this.isValidRuntime(runtime)) {\n      this.runtime = runtime;\n    }\n  }\n\n  isValidRuntime(runtime: IRuntime) {\n    if (typeof runtime !== \"object\" || Array.isArray(runtime)) {\n      return false;\n    }\n\n    return this.builtinModules.every((m) => {\n      const flag = !!runtime[m];\n      if (!flag) {\n        throw new Error(`runtime is invalid, module '${m}' does not exist`);\n      }\n      return flag;\n    });\n  }\n\n  getRuntime() {\n    return this.runtime;\n  }\n\n  setEnv(env: Env) {\n    this.env = env;\n  }\n\n  isReact() {\n    return this.env === Env.React;\n  }\n\n  setRenderers(renderers: IRendererModules) {\n    this.renderers = renderers;\n  }\n\n  getRenderers() {\n    return this.renderers || {};\n  }\n\n  setConfigProvider(Comp: any) {\n    this.configProvider = Comp;\n  }\n\n  getConfigProvider() {\n    return this.configProvider;\n  }\n}\n\nexport default new Adapter();\n","import adapter from \"../adapter\";\n\nexport default function contextFactory() {\n  const { createContext } = adapter.getRuntime();\n\n  let context = (window as any).__appContext;\n  if (!context) {\n    context = createContext({});\n    (window as any).__appContext = context;\n  }\n  return context;\n}\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","module.exports = _;","import { RequestHandlersMap } from \"./data-source-handlers\";\nimport {\n  IDataSourceRuntimeContext,\n  RuntimeDataSource,\n} from \"./data-source-runtime\";\n\nexport type DataSourceOptions<TParams = Record<string, unknown>> = {\n  [key: string]: unknown;\n  uri?: string;\n  params?: TParams;\n  method?: string;\n  isCors?: boolean;\n  timeout?: number;\n  headers?: Record<string, string>;\n  isSync?: boolean;\n};\n\n/** 数据源的状态 */\nexport enum RuntimeDataSourceStatus {\n  /** 初始状态，尚未加载 */\n  Initial = \"init\",\n\n  /** 正在加载 */\n  Loading = \"loading\",\n\n  /** 已加载(无错误) */\n  Loaded = \"loaded\",\n\n  /** 加载出错了 */\n  Error = \"error\",\n}\n\n/**\n * 运行时的数据源（对外暴露的接口）\n * @see https://yuque.antfin-inc.com/mo/spec/spec-low-code-building-schema#Jwgj5\n */\nexport interface IRuntimeDataSource<TParams = unknown, TResultData = unknown> {\n  /** 当前状态(initial/loading/loaded/error) */\n  readonly status: RuntimeDataSourceStatus;\n\n  /** 加载成功时的数据 */\n  readonly data?: TResultData;\n\n  /** 加载出错的时候的错误信息 */\n  readonly error?: Error;\n\n  /** 当前是否正在加载中 */\n  readonly isLoading?: boolean;\n\n  /**\n   * 加载数据 (无论是否曾经加载过)\n   * 注意：若提供 params，则会和默认配置的参数做浅合并；否则会使用默认配置的参数。\n   */\n  load(params?: TParams): Promise<TResultData | void>;\n}\n\n/**\n * DataSourceEngineFactory\n * 用来定义 engine 的工厂函数类型\n */\nexport interface IRuntimeDataSourceEngineFactory {\n  create(\n    dataSource: RuntimeDataSource,\n    context: IDataSourceRuntimeContext,\n    extraConfig?: {\n      requestHandlersMap: RequestHandlersMap;\n      [key: string]: any;\n    },\n  ): IDataSourceEngine;\n}\n\n// create 返回的 DataSourceEngine 定义\nexport interface IDataSourceEngine {\n  /** 数据源, key 是数据源的 ID */\n  dataSourceMap: Record<string, IRuntimeDataSource>;\n\n  /** 重新加载所有的数据源 */\n  reloadDataSource(): Promise<void>;\n}\n","export * as Prop from \"./prop\";\n\nexport interface RerenderOptions {\n  time: number;\n  componentName?: string;\n  type?: string;\n  nodeCount?: number;\n}\n\nexport const Rerender = \"node.edit.rerender.time\";\n","export function isObject(value: any): value is Record<string, any> {\n  return value !== null && typeof value === \"object\";\n}\n\nexport function isI18NObject(value: any): boolean {\n  return isObject(value) && value.type === \"i18n\";\n}\n","import { isObject } from \"./is-object\";\n\nexport type Level = \"debug\" | \"log\" | \"info\" | \"warn\" | \"error\";\ninterface Options {\n  level: Level;\n  bizName: string;\n}\n\nconst levels: Record<string, number> = {\n  debug: -1,\n  log: 0,\n  info: 0,\n  warn: 1,\n  error: 2,\n};\nconst bizNameColors = [\n  \"#daa569\",\n  \"#00ffff\",\n  \"#385e0f\",\n  \"#7fffd4\",\n  \"#00c957\",\n  \"#b0e0e6\",\n  \"#4169e1\",\n  \"#6a5acd\",\n  \"#87ceeb\",\n  \"#ffff00\",\n  \"#e3cf57\",\n  \"#ff9912\",\n  \"#eb8e55\",\n  \"#ffe384\",\n  \"#40e0d0\",\n  \"#a39480\",\n  \"#d2691e\",\n  \"#ff7d40\",\n  \"#f0e68c\",\n  \"#bc8f8f\",\n  \"#c76114\",\n  \"#734a12\",\n  \"#5e2612\",\n  \"#0000ff\",\n  \"#3d59ab\",\n  \"#1e90ff\",\n  \"#03a89e\",\n  \"#33a1c9\",\n  \"#a020f0\",\n  \"#a066d3\",\n  \"#da70d6\",\n  \"#dda0dd\",\n  \"#688e23\",\n  \"#2e8b57\",\n];\nconst bodyColors: Record<string, string> = {\n  debug: \"#fadb14\",\n  log: \"#8c8c8c\",\n  info: \"#52c41a\",\n  warn: \"#fa8c16\",\n  error: \"#ff4d4f\",\n};\nconst levelMarks: Record<string, string> = {\n  debug: \"debug\",\n  log: \"log\",\n  info: \"info\",\n  warn: \"warn\",\n  error: \"error\",\n};\nconst outputFunction: Record<string, any> = {\n  debug: console.log,\n  log: console.log,\n  info: console.log,\n  warn: console.warn,\n  error: console.error,\n};\n\nconst bizNameColorConfig: Record<string, string> = {};\n\nconst shouldOutput = (\n  logLevel: string,\n  targetLevel: string = \"warn\",\n  bizName: string,\n  targetBizName: string,\n): boolean => {\n  const isLevelFit = (levels as any)[targetLevel] <= (levels as any)[logLevel];\n  const isBizNameFit =\n    targetBizName === \"*\" || bizName.indexOf(targetBizName) > -1;\n  return isLevelFit && isBizNameFit;\n};\n\nconst output = (logLevel: string, bizName: string) => {\n  return (...args: any[]) => {\n    return outputFunction[logLevel]?.apply(\n      console,\n      getLogArgs(args, bizName, logLevel),\n    );\n  };\n};\n\nconst getColor = (bizName: string) => {\n  if (!bizNameColorConfig[bizName]) {\n    const color =\n      bizNameColors[\n        Object.keys(bizNameColorConfig).length % bizNameColors.length\n      ];\n    bizNameColorConfig[bizName] = color;\n  }\n  return bizNameColorConfig[bizName];\n};\n\nconst getLogArgs = (args: any, bizName: string, logLevel: string) => {\n  const color = getColor(bizName);\n  const bodyColor = bodyColors[logLevel];\n\n  const argsArray = args[0];\n  let prefix = `%c[${bizName}]%c[${levelMarks[logLevel]}]:`;\n  argsArray.forEach((arg: any) => {\n    if (isObject(arg)) {\n      prefix += \"%o\";\n    } else {\n      prefix += \"%s\";\n    }\n  });\n  let processedArgs = [prefix, `color: ${color}`, `color: ${bodyColor}`];\n  processedArgs = processedArgs.concat(argsArray);\n  return processedArgs;\n};\nconst parseLogConf = (\n  logConf: string,\n  options: Options,\n): { level: string; bizName: string } => {\n  if (!logConf) {\n    return {\n      level: options.level,\n      bizName: options.bizName,\n    };\n  }\n  if (logConf.indexOf(\":\") > -1) {\n    const pair = logConf.split(\":\");\n    return {\n      level: pair[0],\n      bizName: pair[1] || \"*\",\n    };\n  }\n  return {\n    level: logConf,\n    bizName: \"*\",\n  };\n};\n\nconst defaultOptions: Options = {\n  level: \"warn\",\n  bizName: \"*\",\n};\n\nclass Logger {\n  bizName: string;\n  targetBizName: string;\n  targetLevel: string;\n  constructor(options: Options) {\n    options = { ...defaultOptions, ...options };\n    const _location = location || ({} as any);\n    // __logConf__ 格式为 logLevel[:bizName], bizName is used as: targetBizName like '%bizName%'\n    //   1. __logConf__=log  or __logConf__=warn,  etc.\n    //   2. __logConf__=log:*  or __logConf__=warn:*,  etc.\n    //   2. __logConf__=log:bizName  or __logConf__=warn:partOfBizName,  etc.\n    const logConf = (/__(?:logConf|logLevel)__=([^#/&]*)/.exec(\n      _location.href,\n    ) || [])[1];\n    const targetOptions = parseLogConf(logConf, options);\n    this.bizName = options.bizName;\n    this.targetBizName = targetOptions.bizName;\n    this.targetLevel = targetOptions.level;\n  }\n  debug(...args: any[]): void {\n    if (\n      !shouldOutput(\"debug\", this.targetLevel, this.bizName, this.targetBizName)\n    ) {\n      return;\n    }\n    return output(\"debug\", this.bizName)(args);\n  }\n  log(...args: any[]): void {\n    if (\n      !shouldOutput(\"log\", this.targetLevel, this.bizName, this.targetBizName)\n    ) {\n      return;\n    }\n    return output(\"log\", this.bizName)(args);\n  }\n  info(...args: any[]): void {\n    if (\n      !shouldOutput(\"info\", this.targetLevel, this.bizName, this.targetBizName)\n    ) {\n      return;\n    }\n    return output(\"info\", this.bizName)(args);\n  }\n  warn(...args: any[]): void {\n    if (\n      !shouldOutput(\"warn\", this.targetLevel, this.bizName, this.targetBizName)\n    ) {\n      return;\n    }\n    return output(\"warn\", this.bizName)(args);\n  }\n  error(...args: any[]): void {\n    if (\n      !shouldOutput(\"error\", this.targetLevel, this.bizName, this.targetBizName)\n    ) {\n      return;\n    }\n    return output(\"error\", this.bizName)(args);\n  }\n}\n\nexport { Logger };\n\nexport function getLogger(config: { level: Level; bizName: string }): Logger {\n  return new Logger(config);\n}\n","import { createDefer } from \"./create-defer\";\nimport { Logger } from \"./logger\";\n\nconst logger = new Logger({ level: \"warn\", bizName: \"utils\" });\n\nexport function evaluate(script: string, scriptType?: string) {\n  const scriptEl = document.createElement(\"script\");\n  scriptType && (scriptEl.type = scriptType);\n  scriptEl.text = script;\n  document.head.appendChild(scriptEl);\n  document.head.removeChild(scriptEl);\n}\n\nexport function load(url: string, scriptType?: string) {\n  const node = document.createElement(\"script\");\n\n  // node.setAttribute('crossorigin', 'anonymous');\n\n  node.onload = onload;\n  node.onerror = onload;\n\n  const i = createDefer();\n\n  function onload(e: any) {\n    node.onload = null;\n    node.onerror = null;\n    if (e.type === \"load\") {\n      i.resolve();\n    } else {\n      i.reject();\n    }\n    // document.head.removeChild(node);\n    // node = null;\n  }\n\n  node.src = url;\n\n  // `async=false` is required to make sure all js resources execute sequentially.\n  node.async = false;\n\n  scriptType && (node.type = scriptType);\n\n  document.head.appendChild(node);\n\n  return i.promise();\n}\n\nexport function evaluateExpression(expr: string) {\n  const fn = new Function(expr);\n  return fn();\n}\n\nexport function newFunction(args: string, code: string) {\n  try {\n    return new Function(args, code);\n  } catch (e) {\n    logger.warn(\"Caught error, Cant init func\");\n    return null;\n  }\n}\n","const excludePropertyNames = [\n  \"$$typeof\",\n  \"render\",\n  \"defaultProps\",\n  \"props\",\n  \"length\",\n  \"prototype\",\n  \"name\",\n  \"caller\",\n  \"callee\",\n  \"arguments\",\n];\n\nexport function cloneEnumerableProperty(\n  target: any,\n  origin: any,\n  excludes = excludePropertyNames,\n) {\n  const compExtraPropertyNames = Object.keys(origin).filter(\n    (d) => !excludes.includes(d),\n  );\n\n  compExtraPropertyNames.forEach((d: string) => {\n    (target as any)[d] = origin[d];\n  });\n\n  return target;\n}\n","import {\n  ComponentClass,\n  Component,\n  FunctionComponent,\n  ComponentType,\n  createElement,\n} from \"react\";\nimport { cloneEnumerableProperty } from \"./clone-enumerable-property\";\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for;\nexport const REACT_FORWARD_REF_TYPE = hasSymbol\n  ? Symbol.for(\"react.forward_ref\")\n  : 0xead0;\nexport const REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 0xead3;\n\nexport function isReactClass(obj: any): obj is ComponentClass<any> {\n  if (!obj) {\n    return false;\n  }\n  if (\n    obj.prototype &&\n    (obj.prototype.isReactComponent || obj.prototype instanceof Component)\n  ) {\n    return true;\n  }\n  return false;\n}\n\nexport function acceptsRef(obj: any): boolean {\n  if (!obj) {\n    return false;\n  }\n  if (obj?.prototype?.isReactComponent || isForwardOrMemoForward(obj)) {\n    return true;\n  }\n\n  return false;\n}\n\nexport function isForwardRefType(obj: any): boolean {\n  if (!obj || !obj?.$$typeof) {\n    return false;\n  }\n  return obj?.$$typeof === REACT_FORWARD_REF_TYPE;\n}\n\nexport function isMemoType(obj: any): boolean {\n  if (!obj || !obj?.$$typeof) {\n    return false;\n  }\n  return obj.$$typeof === REACT_MEMO_TYPE;\n}\n\nexport function isForwardOrMemoForward(obj: any): boolean {\n  if (!obj || !obj?.$$typeof) {\n    return false;\n  }\n  return (\n    // React.forwardRef(..)\n    isForwardRefType(obj) ||\n    // React.memo(React.forwardRef(..))\n    (isMemoType(obj) && isForwardRefType(obj.type))\n  );\n}\n\nexport function isReactComponent(obj: any): obj is ComponentType<any> {\n  if (!obj) {\n    return false;\n  }\n\n  return Boolean(\n    isReactClass(obj) ||\n      typeof obj === \"function\" ||\n      isForwardRefType(obj) ||\n      isMemoType(obj),\n  );\n}\n\nexport function wrapReactClass(view: FunctionComponent) {\n  let ViewComponentClass = class extends Component {\n    render() {\n      const { children, ...other } = this.props as any;\n      return createElement(view, other, children);\n    }\n  } as any;\n  ViewComponentClass = cloneEnumerableProperty(ViewComponentClass, view);\n  ViewComponentClass.displayName = view.displayName;\n  return ViewComponentClass;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","module.exports = PropTypes;","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","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","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","/**\n * IE 浏览器的渲染引擎版本号\n * 注意：此属性与浏览器版本号不同，IE 的渲染引擎版本号是可以通过 HTML header 或手动设置去更改的\n * 6 ~ 11\n */\nexport var ieVersion = typeof document !== 'undefined' ? document.documentMode : undefined;\n/**\n * 判断是否是生产环境\n */\nexport var isProduction = function () {\n    var PRODUCTION_ENV = 'production';\n    var result = false;\n    try {\n        if (process.env.NODE_ENV === PRODUCTION_ENV) {\n            result = true;\n        }\n    }\n    catch (err) {\n        //\n    }\n    return result;\n};\nexport default {\n    ieVersion: ieVersion,\n    isProduction: isProduction,\n};\n","import { isProduction } from './env';\n/* eslint no-console: 0 */\n/**\n * 反对使用某一方法或属性的警告\n * @param props - 过时的属性或方法名\n * @param instead - 替代的属性或方法名\n * @param component - 组件名\n *\n * @example\n * log.deprecated('onBeforeClose', 'beforeClose', 'Dialog');\n * // Warning: onBeforeClose is deprecated at [ Dialog ], use [ beforeClose ] instead of it.\n */\nexport function deprecated(props, instead, component) {\n    /* istanbul ignore else */\n    if (!isProduction() && typeof console !== 'undefined' && console.error) {\n        return console.error(\"Warning: [ \".concat(props, \" ] is deprecated at [ \").concat(component, \" ], use [ \").concat(instead, \" ] instead of it.\"));\n    }\n}\n/**\n * 控制台警告日志\n */\nexport function warning(msg) {\n    /* istanbul ignore else */\n    if (!isProduction() && typeof console !== 'undefined' && console.error) {\n        return console.error(\"Warning: \".concat(msg));\n    }\n}\n","import { __read, __spreadArray } from \"tslib\";\nimport React from 'react';\n/**\n * 获取对象的类型\n * @example\n * typeOf([]) === 'Array'\n * typeOf() === 'Undefined'\n * typeOf(1) === 'Number'\n */\nexport function typeOf(obj) {\n    return Object.prototype.toString.call(obj).replace(/\\[object\\s|]/g, '');\n}\n/**\n * 判断是否是数组或类数组对象\n * @example\n * isArrayLike([]) === true\n * isArrayLike(arguments) === true\n * isArrayLike(this.props.children) === true\n */\nexport function isArrayLike(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n    var length = !!obj && 'length' in obj && obj.length;\n    var type = typeOf(obj);\n    return (type === 'Array' ||\n        length === 0 ||\n        (typeof length === 'number' && length > 0 && length - 1 in obj));\n}\n/**\n * 判断对象是否是一个 promise，即是否可以用.then\n */\nexport function isPromise(obj) {\n    return (!!obj &&\n        (typeof obj === 'object' || typeof obj === 'function') &&\n        typeof obj.then === 'function');\n}\n/**\n * 是否是一个纯净的对象\n * @see https://github.com/jonschlinkert/is-plain-object\n */\nexport function isPlainObject(obj) {\n    if (typeOf(obj) !== 'Object') {\n        return false;\n    }\n    var ctor = obj.constructor;\n    if (typeof ctor !== 'function') {\n        return false;\n    }\n    var prot = ctor.prototype;\n    if (typeOf(prot) !== 'Object') {\n        return false;\n    }\n    if (!prot.hasOwnProperty('isPrototypeOf')) {\n        return false;\n    }\n    return true;\n}\n/**\n * 对象浅比较\n * @example\n * object.shallowEqual(\\{a: 100\\}, \\{a: 100\\}); // true\n */\nexport function shallowEqual(objA, objB, compare) {\n    if (objA === objB) {\n        return true;\n    }\n    // 其中一个不是 object，则不相等\n    if (!objA || !objB || typeof objA + typeof objB !== 'objectobject') {\n        return false;\n    }\n    var keyA = Object.keys(objA);\n    var keyB = Object.keys(objB);\n    var len = keyA.length;\n    // key 数量不一致则不相等\n    if (len !== keyB.length) {\n        return false;\n    }\n    var hasCallback = typeof compare === 'function';\n    for (var i = 0; i < len; i++) {\n        var key = keyA[i];\n        if (!Object.prototype.hasOwnProperty.call(objB, key)) {\n            return false;\n        }\n        var valA = objA[key];\n        var valB = objB[key];\n        var ret = hasCallback ? compare(valA, valB, key) : void 0;\n        if (ret === false || (ret === void 0 && valA !== valB)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * 遍历对象或数组，或者类数组，例如 React 中的 children 对象、arguments 等\n * @param obj - 目标对象或类数组\n * @param callback - fn(n, i) or fn(val, key)\n * @param direction - 是否倒序遍历，只对数组有效，传入 -1 则是倒序\n *\n * @example\n * // 遍历数组\n * object.each([100, 200, 300], (n, i) =\\> console.log(n, i));\n * // 遍历json对象\n * object.each(\\{a: 100, b: 200\\}, (value, key) =\\> console.log(key, value));\n * // 遍历React子节点\n * object.each(this.props.children, (child, index) =\\> console.log(child));\n * // 遍历arguments\n * object.each(arguments, (arg, i) =\\> console.log(arg));\n */\nexport function each(obj, callback, direction) {\n    var reversed = direction === -1;\n    if (isArrayLike(obj)) {\n        var length_1 = obj.length;\n        for (var i = reversed ? length_1 - 1 : 0; i < length_1 && i >= 0; reversed ? i-- : i++) {\n            var shouldContinue = callback.call(obj[i], obj[i], i);\n            if (shouldContinue === false) {\n                break;\n            }\n        }\n    }\n    else {\n        for (var key in obj) {\n            /* istanbul ignore else */\n            if (obj.hasOwnProperty(key)) {\n                var shouldContinue = callback.call(obj[key], obj[key], key);\n                if (shouldContinue === false) {\n                    break;\n                }\n            }\n        }\n    }\n    return obj;\n}\n// @private 判断 key 是否在数组或对象中\nvar _isInObj = function (key, obj, isArray) {\n    return isArray ? obj.indexOf(key) > -1 : key in obj;\n};\n/**\n * 过滤出其它属性\n * @param holdProps - 过滤的参照对象，最终的结果只保留不在参照对象中的 key\n * @param props - 被过滤的对象\n *\n * @example\n * object.pickOthers(FooComponent.propTypes, this.props);\n * object.pickOthers(['className', 'onChange'], this.props);\n */\nexport function pickOthers(holdProps, props) {\n    var others = {};\n    var isArray = typeOf(holdProps) === 'Array';\n    for (var key in props) {\n        if (!_isInObj(key, holdProps, isArray)) {\n            others[key] = props[key];\n        }\n    }\n    return others;\n}\n/**\n * 过滤出需要的属性\n * @param holdProps - 过滤的参照对象，最终的结果只保留在参照对象中的 key\n * @param props - 被过滤的对象\n *\n * @example\n * object.pickProps(FooComponent.propTypes, this.props);\n * object.pickProps(['className', 'onChange'], this.props);\n */\nexport function pickProps(holdProps, props) {\n    var others = {};\n    var isArray = typeOf(holdProps) === 'Array';\n    for (var key in props) {\n        if (_isInObj(key, holdProps, isArray)) {\n            others[key] = props[key];\n        }\n    }\n    return others;\n}\n/**\n * 过滤出带 prefix 的属性\n * @param holdProps - 过滤的参照对象，最终的结果只保留不在参照对象中的 key\n * @param prefix - 包含的字符串\n *\n * @example\n * object.pickAttrsWith(FooComponent.propTypes, 'data-');\n */\nexport function pickAttrsWith(holdProps, prefix) {\n    var others = {};\n    for (var key in holdProps) {\n        if (key.match(prefix)) {\n            others[key] = holdProps[key];\n        }\n    }\n    return others;\n}\n/**\n * Checks if value is `null` or `undefined`.\n */\nexport function isNil(value) {\n    // It will returns `true` only if `null` or `undefined` compare with `null`\n    // with loose equaliy\n    return value == null; // eslint-disable-line eqeqeq\n}\n/**\n * Deep merge two objects.\n * @see https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge?page=1&tab=votes#tab-top\n */\nexport function deepMerge(target) {\n    var _a, _b;\n    var sources = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        sources[_i - 1] = arguments[_i];\n    }\n    if (!sources.length)\n        return target;\n    var source = sources.shift();\n    if (!isPlainObject(target)) {\n        target = {};\n    }\n    if (isPlainObject(target) && isPlainObject(source)) {\n        for (var key in source) {\n            // 如果是 object 进行深拷贝\n            if (isPlainObject(source[key]) && !React.isValidElement(source[key])) {\n                if (!target[key])\n                    Object.assign(target, (_a = {}, _a[key] = {}, _a));\n                // fix {a: 'te'}, {a:{b:3}}\n                if (!isPlainObject(target[key])) {\n                    target[key] = source[key];\n                }\n                deepMerge(target[key], source[key]);\n                // string/number/function/react node 等直接复制\n            }\n            else {\n                Object.assign(target, (_b = {}, _b[key] = source[key], _b));\n            }\n        }\n    }\n    return deepMerge.apply(void 0, __spreadArray([target], __read(sources), false));\n}\n/**\n * 组件是否为 Fucntion Component\n * @param component - 传入的组件\n */\nexport function isFunctionComponent(component) {\n    return (typeOf(component) === 'Function' &&\n        component.prototype &&\n        component.prototype.isReactComponent === undefined);\n}\n/**\n * 组件是否为 Class Component\n * @param component - 传入的组件\n */\nexport function isClassComponent(component) {\n    return (typeOf(component) === 'Function' &&\n        component.prototype &&\n        component.prototype.isReactComponent !== undefined);\n}\nexport function isForwardRefComponent(component) {\n    if (!component || typeof component !== 'object') {\n        return false;\n    }\n    var $$typeof = component.$$typeof;\n    // FIXME 依据 react 内部实现代码来判断，有可能因 react 版本变更错误判断，先用测试用例来保证运行正常，关注测试用例异常适时调整此处代码\n    return (!!$$typeof && $$typeof.toString().includes('react.forward_ref')) || $$typeof === 0xead0;\n}\n/**\n * 判断是否为 isReactFragmentElement\n * @param component - 传入的组件\n */\nexport function isReactFragmentElement(component) {\n    if (isNil(component)) {\n        return false;\n    }\n    var type = component.type;\n    return type === React.Fragment;\n}\n/**\n * Creates an array of the own enumerable string keyed property values of object.\n * @example\n * // returns [1, 2]\n * values(\\{a: 1, b: 2\\})\n */\nexport function values(obj) {\n    if (Object.values) {\n        return Object.values(obj);\n    }\n    var vals = [];\n    for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            vals.push(obj[key]);\n        }\n    }\n    return vals;\n}\n","import { warning } from './log';\nimport { typeOf } from './object';\n/**\n * 将字符串转化为驼峰式写法\n * @param str - 例：-webkit-transition\n * @returns 例：WebkitTransition\n */\nexport function camelcase(str) {\n    if (!/-/.test(str)) {\n        return str || '';\n    }\n    return str.toLowerCase().replace(/-([a-z])/g, function ($0, $1) { return $1.toUpperCase(); });\n}\n/**\n * 将驼峰式字符串转化为连字符写法\n * @param str - 例：WebkitTransition\n * @returns 例：-webkit-transition\n */\nexport function hyphenate(str) {\n    var strType = typeOf(str);\n    if (strType !== 'String') {\n        warning('[ hyphenate(str: string): string ] ' +\n            \"Expected arguments[0] to be a string but get a \".concat(strType, \".\") +\n            'It will return an empty string without any processing.');\n        return '';\n    }\n    return str.replace(/([A-Z])/g, function ($0) { return \"-\".concat($0.toLowerCase()); });\n}\n/**\n * 替换模板字符串\n * @param tpl - 例：当前\\{current\\}, 共\\{total\\}页\n * @param object - 例：\\{current: 1, total: 9\\}\n */\nexport function template(tpl, object) {\n    if (object === void 0) { object = {}; }\n    var tplType = typeOf(tpl);\n    if (tplType !== 'String') {\n        warning('[ template(tpl: string, object: object): string ] ' +\n            \"Expected arguments[0] to be a string but get a \".concat(tplType, \".\") +\n            'It will return an empty string without any processing.');\n        return '';\n    }\n    return tpl.replace(/\\{[a-z]*\\}/g, function (str) {\n        var key = str.substring(1, str.length - 1);\n        return object[key] || '';\n    });\n}\n","import { camelcase, hyphenate } from './string';\nimport { each, isPlainObject } from './object';\n/**\n * 是否能使用 DOM 方法\n */\nexport var hasDOM = typeof window !== 'undefined' && !!window.document && !!document.createElement;\n/**\n * 节点是否包含指定 className\n *\n * @example\n * dom.hasClass(document.body, 'foo');\n */\nexport function hasClass(node, className) {\n    /* istanbul ignore if */\n    if (!hasDOM || !node) {\n        return false;\n    }\n    if (node.classList) {\n        // @ts-expect-error fixme: className can be undefined, conflict with containes\n        return node.classList.contains(className);\n    }\n    else {\n        // @ts-expect-error fixme: className can be undefined, conflict with containes\n        return node.className.indexOf(className) > -1;\n    }\n}\n/**\n * 添加 className\n *\n * @example\n * dom.addClass(document.body, 'foo');\n */\nexport function addClass(node, className, _force) {\n    if (_force === void 0) { _force = false; }\n    /* istanbul ignore if */\n    if (!hasDOM || !node) {\n        return;\n    }\n    if (node.classList) {\n        node.classList.add(className);\n    }\n    else if (_force === true || !hasClass(node, className)) {\n        node.className += \" \".concat(className);\n    }\n}\n/**\n * 移除 className\n *\n * @example\n * dom.removeClass(document.body, 'foo');\n */\nexport function removeClass(node, className, _force) {\n    if (_force === void 0) { _force = false; }\n    /* istanbul ignore if */\n    if (!hasDOM || !node) {\n        return;\n    }\n    if (node.classList) {\n        node.classList.remove(className);\n    }\n    else if (_force === true || hasClass(node, className)) {\n        node.className = node.className.replace(className, '').replace(/\\s+/g, ' ').trim();\n    }\n}\n/**\n * 切换 className\n * @returns 执行后节点上是否还有此 className\n *\n * @example\n * dom.toggleClass(document.body, 'foo');\n */\nexport function toggleClass(node, className) {\n    /* istanbul ignore if */\n    if (!hasDOM || !node) {\n        return false;\n    }\n    if (node.classList) {\n        return node.classList.toggle(className);\n    }\n    else {\n        var flag = hasClass(node, className);\n        flag ? removeClass(node, className, true) : addClass(node, className, true);\n        return !flag;\n    }\n}\n/**\n * 元素是否匹配 CSS 选择器\n * @param node - DOM 节点\n * @param selector - CSS 选择器\n *\n * @example\n * dom.matches(mountNode, '.container'); // boolean\n */\nexport var matches = (function () {\n    var matchesFn = null;\n    /* istanbul ignore else */\n    if (hasDOM) {\n        var _body = document.body || document.head;\n        matchesFn = _body.matches\n            ? 'matches'\n            : _body.webkitMatchesSelector\n                ? 'webkitMatchesSelector'\n                : _body.msMatchesSelector\n                    ? 'msMatchesSelector'\n                    : _body.mozMatchesSelector\n                        ? 'mozMatchesSelector'\n                        : null;\n    }\n    return function (node, selector) {\n        if (!hasDOM || !node) {\n            return false;\n        }\n        // @ts-expect-error fixme: selector can be undefined, conflict with matches\n        return matchesFn ? node[matchesFn](selector) : false;\n    };\n})();\n/**\n * 获取元素计算后的样式\n */\nfunction _getComputedStyle(node) {\n    return node && node.nodeType === 1 ? window.getComputedStyle(node, null) : {};\n}\nvar PIXEL_PATTERN = /margin|padding|width|height|max|min|offset|size|top/i;\nvar removePixel = { left: 1, top: 1, right: 1, bottom: 1 };\n/**\n * 校验并修正元素的样式属性值\n */\nfunction _getStyleValue(node, type, value) {\n    type = type.toLowerCase();\n    if (value === 'auto') {\n        if (type === 'height') {\n            return node.offsetHeight || 0;\n        }\n        if (type === 'width') {\n            return node.offsetWidth || 0;\n        }\n    }\n    if (!(type in removePixel)) {\n        // 属性值是否需要去掉 px 单位，这里假定此类的属性值都是 px 为单位的\n        removePixel[type] = PIXEL_PATTERN.test(type);\n    }\n    return removePixel[type] ? parseFloat(value) || 0 : value;\n}\nvar floatMap = { cssFloat: 1, styleFloat: 1, float: 1 };\n/**\n * 获取元素计算后的样式\n * @param node - DOM 节点\n * @param name - 属性名\n */\nexport function getStyle(node, name) {\n    /* istanbul ignore if */\n    if (!hasDOM || !node) {\n        return null;\n    }\n    var style = _getComputedStyle(node);\n    // 如果不指定属性名，则返回全部值\n    if (!name) {\n        return style;\n    }\n    // if style is {}(e.g. node isn't a element node), return null\n    if (isPlainObject(style)) {\n        return null;\n    }\n    name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name;\n    return _getStyleValue(node, name, style.getPropertyValue(hyphenate(name)) ||\n        node.style[camelcase(name)]);\n}\n/**\n * 设置元素的样式\n * @param node - DOM 节点\n * @param name - 属性名，或者是一个对象，包含多个属性\n * @param value - 属性值\n *\n * @example\n * // 设置单个属性值\n * dom.setStyle(mountNode, 'width', 100);\n * // 设置多条属性值\n * dom.setStyle(mountNode, \\{\n *     width: 100,\n *     height: 200\n * \\});\n */\nexport function setStyle(node, name, value) {\n    /* istanbul ignore if */\n    if (!hasDOM || !node) {\n        return false;\n    }\n    // 批量设置多个值\n    if (typeof name === 'object' && arguments.length === 2) {\n        each(name, function (val, key) { return setStyle(node, key, val); });\n    }\n    else {\n        name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name;\n        if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n            value = \"\".concat(value, \"px\");\n        }\n        node.style[camelcase(name)] = value; // IE8 support\n    }\n}\nexport function getNodeHozWhitespace(node) {\n    var paddingLeft = getStyle(node, 'paddingLeft');\n    var paddingRight = getStyle(node, 'paddingRight');\n    var marginLeft = getStyle(node, 'marginLeft');\n    var marginRight = getStyle(node, 'marginRight');\n    return paddingLeft + paddingRight + marginLeft + marginRight;\n}\nvar isScrollDisplay = function (element) {\n    try {\n        var scrollbarStyle = window.getComputedStyle(element, '::-webkit-scrollbar');\n        return !scrollbarStyle || scrollbarStyle.getPropertyValue('display') !== 'none';\n    }\n    catch (e) {\n        // ignore error for firefox\n    }\n    return true;\n};\n/**\n * 获取默认的滚动条大小（通过创造一个滚动元素，读取滚动元素的滚动条信息）\n */\nexport function scrollbar() {\n    var scrollDiv = document.createElement('div');\n    scrollDiv.className += 'just-to-get-scrollbar-size';\n    setStyle(scrollDiv, {\n        position: 'absolute',\n        width: '100px',\n        height: '100px',\n        overflow: 'scroll',\n        top: '-9999px',\n    });\n    document.body && document.body.appendChild(scrollDiv);\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n    var scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n    document.body.removeChild(scrollDiv);\n    return {\n        width: scrollbarWidth,\n        height: scrollbarHeight,\n    };\n}\nexport function hasScroll(containerNode) {\n    // 当元素带有 overflow: hidden 一定没有滚动条\n    var overflow = getStyle(containerNode, 'overflow');\n    if (overflow === 'hidden') {\n        return false;\n    }\n    var parentNode = containerNode.parentNode;\n    return (parentNode &&\n        parentNode.scrollHeight > parentNode.clientHeight &&\n        scrollbar().width > 0 &&\n        isScrollDisplay(parentNode) &&\n        isScrollDisplay(containerNode));\n}\n/**\n * 获取元素距离视口顶部和左边的偏移距离\n */\nexport function getOffset(node) {\n    var rect = node.getBoundingClientRect();\n    var win = node.ownerDocument.defaultView;\n    return {\n        top: rect.top + win.pageYOffset,\n        left: rect.left + win.pageXOffset,\n    };\n}\n/**\n * 获取不同单位转为 number 的长度\n * @param len - 传入的长度\n * @returns pixels\n */\nexport function getPixels(len) {\n    var win = document.defaultView;\n    if (typeof +len === 'number' && !isNaN(+len)) {\n        return +len;\n    }\n    if (typeof len === 'string') {\n        var PX_REG = /(\\d+)px/;\n        var VH_REG = /(\\d+)vh/;\n        if (Array.isArray(len.match(PX_REG))) {\n            return +len.match(PX_REG)[1] || 0;\n        }\n        if (Array.isArray(len.match(VH_REG))) {\n            var _1vh = win.innerHeight / 100;\n            return +(len.match(VH_REG)[1] * _1vh) || 0;\n        }\n    }\n    return 0;\n}\n/**\n * 如果元素被指定的选择器字符串选择，getMatches()  方法返回 true; 否则返回 false\n * @param dom - 待匹配的元素\n * @param selecotr - 选择器\n * @returns parent\n */\nexport function getMatches(dom, selector) {\n    /* istanbul ignore if */\n    if (!hasDOM || !dom) {\n        return null;\n    }\n    /* istanbul ignore if */\n    if (Element.prototype.matches) {\n        return dom.matches(selector);\n    }\n    else if (Element.prototype.msMatchesSelector) {\n        return dom.msMatchesSelector(selector);\n    }\n    else if (Element.prototype.webkitMatchesSelector) {\n        return dom.webkitMatchesSelector(selector);\n    }\n    return null;\n}\n/**\n * 匹配特定选择器且离当前元素最近的祖先元素（也可以是当前元素本身），如果匹配不到，则返回 null\n * @param dom - 待匹配的元素\n * @param selecotr - 选择器\n * @returns parent\n */\nexport function getClosest(dom, selector) {\n    /* istanbul ignore if */\n    if (!hasDOM || !dom) {\n        return null;\n    }\n    // ie9\n    /* istanbul ignore if */\n    if (!Element.prototype.closest) {\n        if (!document.documentElement.contains(dom))\n            return null;\n        do {\n            if (getMatches(dom, selector))\n                return dom;\n            dom = dom.parentElement;\n        } while (dom !== null);\n    }\n    else {\n        return dom.closest(selector);\n    }\n    return null;\n}\nexport function saveRef(ref) {\n    if (!ref) {\n        return null;\n    }\n    return function (element) {\n        if (typeof ref === 'string') {\n            throw new Error(\"can not set ref string for \".concat(ref));\n        }\n        else if (typeof ref === 'function') {\n            ref(element);\n        }\n        else if (Object.prototype.hasOwnProperty.call(ref, 'current')) {\n            ref.current = element;\n        }\n    };\n}\n","/**\n * 取消事件绑定\n * @param node - DOM 节点或任何可以绑定事件的对象\n * @param eventName - 事件名\n * @param callback - 回调方法\n * @param useCapture - [useCapture=false] 是否开启事件捕获优先\n */\nexport function off(node, eventName, callback, useCapture) {\n    /* istanbul ignore else */\n    if (node.removeEventListener) {\n        node.removeEventListener(eventName, callback, useCapture || false);\n    }\n}\n/**\n * 绑定事件\n * @param node - DOM 节点或任何可以绑定事件的对象\n * @param eventName - 事件名\n * @param callback - 回调方法\n * @param useCapture - 是否开启事件捕获优先\n * @returns 返回的 object 中包含一个 off 方法，用于取消事件监听\n *\n * @example\n * const handler = events.on(document.body, 'click', e =\\> \\{\n *     // handle click ...\n * \\});\n * // 取消事件绑定\n * handler.off();\n */\nexport function on(node, eventName, callback, useCapture) {\n    /* istanbul ignore else */\n    if (node.addEventListener) {\n        node.addEventListener(eventName, callback, useCapture || false);\n    }\n    return {\n        off: function () { return off(node, eventName, callback, useCapture); },\n    };\n}\n/**\n * 绑定事件，只执行一次后销毁\n * @param node - DOM 节点或任何可以绑定事件的对象\n * @param eventName - 事件名\n * @param callback - 回调方法\n * @param useCapture - 是否开启事件捕获优先\n * @returns 返回的 object 中包含一个 off 方法，用于取消事件监听\n */\nexport function once(node, eventName, callback, useCapture) {\n    return on(node, eventName, function __fn() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        callback.apply(this, args);\n        // 由于 addEventListener 中的参数 options 只在 Chrome 55、Firefox(Gecko) 以上版本支持，故还是用传统的方法实现 once\n        off(node, eventName, __fn, useCapture);\n    }, useCapture);\n}\n","module.exports = dayjs;","!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_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f<a;f+=1){var h=s[f],u=d[h],c=u&&u[0],l=u&&u[1];s[f]=l?{regex:c,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,h=e.slice(r),u=o.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,s=e.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],h=!0===s[3],u=f||h,d=s[2];h&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_updateLocale=n()}(this,(function(){\"use strict\";return function(e,n,t){t.updateLocale=function(e,n){var o=t.Ls[e];if(o)return(n?Object.keys(n):[]).forEach((function(e){o[e]=n[e]})),o}}}));","!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)}}}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","!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_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));","!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_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","!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_weekYear=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}}));","!function(e,_){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=_(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],_):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh_cn=_(e.dayjs)}(this,(function(e){\"use strict\";function _(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=_(e),d={name:\"zh-cn\",weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),ordinal:function(e,_){return\"W\"===_?e+\"周\":e+\"日\"},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah点mm分\",LLLL:\"YYYY年M月D日ddddAh点mm分\",l:\"YYYY/M/D\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日dddd HH:mm\"},relativeTime:{future:\"%s内\",past:\"%s前\",s:\"几秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},meridiem:function(e,_){var t=100*e+_;return t<600?\"凌晨\":t<900?\"早上\":t<1100?\"上午\":t<1300?\"中午\":t<1800?\"下午\":\"晚上\"}};return t.default.locale(d,null,!0),d}));","import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport localeData from 'dayjs/plugin/localeData';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport weekYear from 'dayjs/plugin/weekYear';\nimport 'dayjs/locale/zh-cn';\ndayjs.extend(advancedFormat);\ndayjs.extend(quarterOfYear);\ndayjs.extend(customParseFormat);\ndayjs.extend(updateLocale);\ndayjs.extend(localeData);\ndayjs.extend(weekOfYear);\ndayjs.extend(weekYear);\ndayjs.locale('zh-cn');\nvar datejs = dayjs;\ndatejs.isSelf = dayjs.isDayjs;\ndayjs.localeData();\nexport default datejs;\n","import { __read, __spreadArray } from \"tslib\";\nimport { isPromise } from './object';\nimport datejs from './date';\n/**\n * 一个空方法，返回入参本身或空对象\n */\nexport var noop = function () { };\n/**\n * 一个空方法，返回 false\n */\nexport var prevent = function () { return false; };\n/**\n * 将 N 个方法合并为一个链式调用的方法\n * @returns 合并后的方法\n * @see https://github.com/react-component/util/\n *\n * @example\n * func.makeChain(this.handleChange, this.props.onChange);\n */\nexport function makeChain() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function chainedFunction() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        for (var i = 0, j = fns.length; i < j; i++) {\n            var fn = fns[i];\n            if (fn && fn.apply) {\n                fn.apply(this, args);\n            }\n        }\n    };\n}\n/**\n * 批量改变方法的上下文\n * 此方法在 react 组件中很有用，在 constructor 中批量将组件上的方法执行上下文绑定到组件本身\n * 注意：用 bind 改变函数运行的上下文只会生效一次\n * @param ctx - 方法挂载的对象以及执行的上下文\n * @param fns - 方法名列表\n *\n * @example\n * func.bindCtx(this, ['handleClick', 'handleChange']);\n */\nexport function bindCtx(ctx, fns, ns) {\n    if (typeof fns === 'string') {\n        fns = [fns];\n    }\n    // 方法的挂载空间，如果不传，默认与ctx相同\n    ns = ns || ctx;\n    fns.forEach(function (fnName) {\n        // @ts-expect-error 这里不要添加空方法判断，由调用者保证正确性，否则出了问题无法排查\n        ns[fnName] = ns[fnName].bind(ctx);\n    });\n}\n/**\n * 用于执行回调方法后的逻辑\n * @param ret - 回调方法执行结果\n * @param success - 执行结果返回非 false 的回调\n * @param failure - [failure=noop] 执行结果返回 false 的回调\n */\nexport function promiseCall(ret, success, failure) {\n    if (failure === void 0) { failure = noop; }\n    if (isPromise(ret)) {\n        return ret\n            .then(function (result) {\n            success(result);\n            return result;\n        })\n            .catch(function (e) {\n            failure(e);\n            // throw e;\n        });\n    }\n    return ret !== false ? success(ret) : failure(ret);\n}\n/**\n * 方法调用，如果 obj 对象中存在名为 method 的方法则调用该方法\n * @param target - 目标对象\n * @param method - 方法名\n * @param args - 函数参数列表\n * @returns 函数返回值 如果不存在返回 undefined\n */\nexport function invoke(target, method, args) {\n    var func = target && method in target\n        ? target[method]\n        : undefined;\n    return func && func.apply(void 0, __spreadArray([], __read((args || [])), false));\n}\nexport function renderNode(render, defaultRender, renderProps) {\n    if (renderProps === void 0) { renderProps = []; }\n    var r = render !== undefined ? render : defaultRender;\n    if (renderProps && !Array.isArray(renderProps)) {\n        renderProps = [renderProps];\n    }\n    return typeof r === 'function' ? r.apply(void 0, __spreadArray([], __read(renderProps), false)) : r;\n}\n/**\n * 日期检验：无效值返回 null\n */\nexport function checkDate(value, format) {\n    /**\n     * 因为 datejs(undefined) 表示当前时间\n     * 但是这里期望的是一个空值，即用户不输入值的时候显示为空\n     */\n    if (value === undefined) {\n        value = null;\n    }\n    var date = format ? datejs(value, format) : datejs(value);\n    return date.isValid() ? date : null;\n}\n/**\n * Range 日期检验\n * @param value - 日期值\n * @param inputType - 输入框类型：开始时间输入框/结束时间输入框\n * @param disabled - 是否禁用\n * @param strictly - 是否严格校验：严格模式下不允许开始时间大于结束时间，在显示确认按键的，用户输入过程可不严格校验\n */\nexport function checkRangeDate(value, inputType, disabled, strictly, format) {\n    if (strictly === void 0) { strictly = true; }\n    var _a = __read(Array.isArray(value)\n        ? [0, 1].map(function (i) { return checkDate(value[i], format); })\n        : [null, null], 2), begin = _a[0], end = _a[1];\n    var _b = __read(Array.isArray(disabled) ? disabled : [disabled, disabled], 2), disabledBegin = _b[0], disabledEnd = _b[1];\n    /**\n     * 需要清除其中一个时间，优先清除结束时间，下面情况清除开始时间：\n     * 1. 结束时间被 disabled 而开始时间没有被 disabled\n     * 2. 开始时间和结束时间都没被 disabled 且当前正在输入是结束时间\n     */\n    if (strictly && begin && end && begin.isAfter(end)) {\n        if ((!disabledBegin && disabledEnd) ||\n            // 本来是 (!disabledBegin && !disabledBegin && inputType === DATE_INPUT_TYPE.END)\n            (!disabledBegin && !disabledBegin && inputType === 1)) {\n            return [null, end];\n        }\n        return [begin, null];\n    }\n    return [begin, end];\n}\n/**\n * 字符型日期转为dayjs类型\n */\nexport function getValueWithDayjs(val, format) {\n    var date;\n    if (Array.isArray(val)) {\n        date = val.map(function (v) {\n            return checkValueWithDayjs(v, format);\n        });\n    }\n    else {\n        date = checkValueWithDayjs(val, format);\n    }\n    return date;\n}\n/**\n * 将字符型转为dayjs类型，dayjs(x)解析无效时使用dayjs(x,format)再次解析。兼容YYYY-[Q]Q 季度类字符串\n */\nexport function checkValueWithDayjs(val, format) {\n    var date = checkDate(val);\n    if (!date) {\n        date = checkDate(val, format);\n    }\n    return date;\n}\n","import { hasDOM } from './dom';\nimport { each } from './object';\nvar animationEndEventNames = {\n    WebkitAnimation: 'webkitAnimationEnd',\n    OAnimation: 'oAnimationEnd',\n    animation: 'animationend',\n};\nvar transitionEventNames = {\n    WebkitTransition: 'webkitTransitionEnd',\n    OTransition: 'oTransitionEnd',\n    transition: 'transitionend',\n};\n/**\n * 是否支持某些动效事件，如果支持，返回相应的 end 事件名\n */\nfunction _supportEnd(names) {\n    /* istanbul ignore if */\n    if (!hasDOM) {\n        return false;\n    }\n    var el = document.createElement('div');\n    var ret = false;\n    each(names, function (val, key) {\n        /* istanbul ignore else */\n        if (el.style[key] !== undefined) {\n            ret = { end: val };\n            return false;\n        }\n    });\n    return ret;\n}\n/**\n * 是否支持某些 CSS 属性\n */\nfunction _supportCSS(names) {\n    /* istanbul ignore if */\n    if (!hasDOM) {\n        return false;\n    }\n    var el = document.createElement('div');\n    var ret = false;\n    each(names, function (val, key) {\n        each(val, function (item) {\n            try {\n                el.style[key] = item;\n                ret = ret || el.style[key] === item;\n            }\n            catch (e) {\n                // It will be throw error when set unknown property under IE8\n            }\n            return !ret; // 如果有一个支持就返回 false，后面不需要再判断\n        });\n        return !ret;\n    });\n    return ret;\n}\n/**\n * 是否支持 animation 以及动画结束事件名\n */\nexport var animation = _supportEnd(animationEndEventNames);\n/**\n * 是否支持 transition 以及过滤效果结束事件名\n */\nexport var transition = _supportEnd(transitionEventNames);\n/**\n * 是否支持 flex 属性\n */\nexport var flex = _supportCSS({\n    display: ['flex', '-webkit-flex', '-moz-flex', '-ms-flexbox'],\n});\n","export default {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    // version 0.x\n    ESCAPE: 27,\n    LEFT_ARROW: 37,\n    UP_ARROW: 38,\n    RIGHT_ARROW: 39,\n    DOWN_ARROW: 40,\n    // MacOS\n    CONTROL: 17,\n    OPTION: 18,\n    CMD: 91,\n    COMMAND: 91,\n    DELETE: 8,\n};\n","import { __read, __spreadArray } from \"tslib\";\nimport KEYCODE from './keycode';\nimport { each } from './object';\n/**\n * 用于切换页面元素的焦点\n */\n/**\n * 元素是否可见\n */\nfunction _isVisible(node) {\n    while (node) {\n        var nodeName = node.nodeName;\n        if (nodeName === 'BODY' || nodeName === 'HTML') {\n            break;\n        }\n        var style = node.style;\n        if (style.display === 'none' || style.visibility === 'hidden') {\n            return false;\n        }\n        node = node.parentNode;\n    }\n    return true;\n}\n/**\n * 元素是否可以获取焦点\n */\nfunction _isFocusable(node) {\n    var nodeName = node.nodeName.toLowerCase();\n    var tabIndex = parseInt(node.getAttribute('tabindex'), 10);\n    var hasTabIndex = !isNaN(tabIndex) && tabIndex > -1;\n    if (_isVisible(node)) {\n        if (nodeName === 'input') {\n            return (!node.disabled && node.type !== 'hidden');\n        }\n        else if (['select', 'textarea', 'button'].indexOf(nodeName) > -1) {\n            return !node.disabled;\n        }\n        else if (nodeName === 'a') {\n            return !!node.getAttribute('href') || hasTabIndex;\n        }\n        else {\n            return hasTabIndex;\n        }\n    }\n    return false;\n}\n/**\n * 列出能获取焦点的子节点\n * @param node - 容器节点\n */\nexport function getFocusNodeList(node) {\n    var res = [];\n    var nodeList = node.querySelectorAll('*');\n    each(nodeList, function (item) {\n        if (_isFocusable(item)) {\n            var method = item.getAttribute('data-auto-focus') ? 'unshift' : 'push';\n            res[method](item);\n        }\n    });\n    if (_isFocusable(node)) {\n        res.unshift(node);\n    }\n    return res;\n}\n// 用于记录上一次获得焦点的无素\nvar lastFocusElement = null;\n/**\n * 保存最近一次获得焦点的无素\n */\nexport function saveLastFocusNode() {\n    lastFocusElement = document.activeElement;\n}\n/**\n * 清除焦点记录\n */\nexport function clearLastFocusNode() {\n    lastFocusElement = null;\n}\n/**\n * 尝试将焦点切换到上一个元素\n */\nexport function backLastFocusNode() {\n    if (lastFocusElement) {\n        try {\n            // 元素可能已经被移动了\n            lastFocusElement.focus();\n        }\n        catch (e) {\n            // ignore ...\n        }\n    }\n}\n/**\n * 在限制的范围内切换焦点\n * @param node - 容器节点\n * @param e - 键盘事件\n */\nexport function limitTabRange(node, e) {\n    if (e.keyCode === KEYCODE.TAB) {\n        var tabNodeList = getFocusNodeList(node);\n        var maxIndex = tabNodeList.length - 1;\n        var index = tabNodeList.indexOf(document.activeElement);\n        if (index > -1) {\n            var targetIndex = index + (e.shiftKey ? -1 : 1);\n            targetIndex < 0 && (targetIndex = maxIndex);\n            targetIndex > maxIndex && (targetIndex = 0);\n            tabNodeList[targetIndex].focus();\n            e.preventDefault();\n        }\n    }\n}\n/**\n * 检查一个 ref 是否有 focus 方法，如果有方法，则调用 focus 函数\n */\nexport function focusRef(ref) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (ref && ref.focus && typeof ref.focus === 'function') {\n        ref.focus.apply(ref, __spreadArray([], __read(args), false));\n    }\n}\n","/**\n * Replace characters not allowed for HTML id attributes\n */\nexport function escapeForId(text) {\n    if (!text) {\n        return '';\n    }\n    if (typeof text === 'object') {\n        text = JSON.stringify(text);\n    }\n    else if (typeof text !== 'string') {\n        text = String(text);\n    }\n    return text.replace(/['\"]/gm, '').replace(/[\\s'\"]/gm, '-');\n}\n/**\n * Generate a string to be used for HTML id attributes\n *\n * @param prefix - prefix text for the id. Important because without one, eventually there will be 2 elements with the same id on the same page\n * @param max - range for the random number generator. Defaults to 1,000,000, but can be set higher if necessary.\n */\nexport function randomId(prefix, max) {\n    if (max === void 0) { max = 1000000; }\n    var rand = Math.ceil(Math.random() * max);\n    return prefix ? \"\".concat(escapeForId(prefix), \"-\").concat(rand) : rand.toString(10);\n}\n","var timestamp = Date.now();\n/**\n * 生成全局唯一的 id\n * @param prefix - 前缀字符串，默认为空串\n *\n * @example\n * guid(); // j7jv509c\n * guid('prefix-'); // prefix-j7jv509d\n */\nexport function guid(prefix) {\n    prefix = prefix || '';\n    return prefix + (timestamp++).toString(36);\n}\nexport default guid;\n","import * as _dom from './dom';\nimport * as _env from './env';\nimport * as _events from './events';\nimport * as _func from './func';\nimport * as _log from './log';\nimport * as _object from './object';\nimport * as _string from './string';\nimport * as _support from './support';\nimport * as _focus from './focus';\nimport * as _htmlId from './htmlId';\nimport _guid from './guid';\nimport _KEYCODE from './keycode';\nimport _date from './date';\nimport _pickAttrs from './pick-attrs';\nexport var dom = _dom;\nexport var env = _env;\nexport var events = _events;\nexport var func = _func;\nexport var log = _log;\nexport var obj = _object;\nexport var str = _string;\nexport var support = _support;\nexport var focus = _focus;\nexport var guid = _guid;\nexport var KEYCODE = _KEYCODE;\nexport var htmlId = _htmlId;\nexport var datejs = _date;\nexport var pickAttrs = _pickAttrs;\nexport * from './types';\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\nvar hookCallback;\n\nfunction hooks() {\n    return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback(callback) {\n    hookCallback = callback;\n}\n\nfunction isArray(input) {\n    return (\n        input instanceof Array ||\n        Object.prototype.toString.call(input) === '[object Array]'\n    );\n}\n\nfunction isObject(input) {\n    // IE8 will treat undefined and null as object if it wasn't for\n    // input != null\n    return (\n        input != null &&\n        Object.prototype.toString.call(input) === '[object Object]'\n    );\n}\n\nfunction hasOwnProp(a, b) {\n    return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction isObjectEmpty(obj) {\n    if (Object.getOwnPropertyNames) {\n        return Object.getOwnPropertyNames(obj).length === 0;\n    } else {\n        var k;\n        for (k in obj) {\n            if (hasOwnProp(obj, k)) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n\nfunction isUndefined(input) {\n    return input === void 0;\n}\n\nfunction isNumber(input) {\n    return (\n        typeof input === 'number' ||\n        Object.prototype.toString.call(input) === '[object Number]'\n    );\n}\n\nfunction isDate(input) {\n    return (\n        input instanceof Date ||\n        Object.prototype.toString.call(input) === '[object Date]'\n    );\n}\n\nfunction map(arr, fn) {\n    var res = [],\n        i,\n        arrLen = arr.length;\n    for (i = 0; i < arrLen; ++i) {\n        res.push(fn(arr[i], i));\n    }\n    return res;\n}\n\nfunction extend(a, b) {\n    for (var i in b) {\n        if (hasOwnProp(b, i)) {\n            a[i] = b[i];\n        }\n    }\n\n    if (hasOwnProp(b, 'toString')) {\n        a.toString = b.toString;\n    }\n\n    if (hasOwnProp(b, 'valueOf')) {\n        a.valueOf = b.valueOf;\n    }\n\n    return a;\n}\n\nfunction createUTC(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n    // We need to deep clone this object.\n    return {\n        empty: false,\n        unusedTokens: [],\n        unusedInput: [],\n        overflow: -2,\n        charsLeftOver: 0,\n        nullInput: false,\n        invalidEra: null,\n        invalidMonth: null,\n        invalidFormat: false,\n        userInvalidated: false,\n        iso: false,\n        parsedDateParts: [],\n        era: null,\n        meridiem: null,\n        rfc2822: false,\n        weekdayMismatch: false,\n    };\n}\n\nfunction getParsingFlags(m) {\n    if (m._pf == null) {\n        m._pf = defaultParsingFlags();\n    }\n    return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n    some = Array.prototype.some;\n} else {\n    some = function (fun) {\n        var t = Object(this),\n            len = t.length >>> 0,\n            i;\n\n        for (i = 0; i < len; i++) {\n            if (i in t && fun.call(this, t[i], i, t)) {\n                return true;\n            }\n        }\n\n        return false;\n    };\n}\n\nfunction isValid(m) {\n    var flags = null,\n        parsedParts = false,\n        isNowValid = m._d && !isNaN(m._d.getTime());\n    if (isNowValid) {\n        flags = getParsingFlags(m);\n        parsedParts = some.call(flags.parsedDateParts, function (i) {\n            return i != null;\n        });\n        isNowValid =\n            flags.overflow < 0 &&\n            !flags.empty &&\n            !flags.invalidEra &&\n            !flags.invalidMonth &&\n            !flags.invalidWeekday &&\n            !flags.weekdayMismatch &&\n            !flags.nullInput &&\n            !flags.invalidFormat &&\n            !flags.userInvalidated &&\n            (!flags.meridiem || (flags.meridiem && parsedParts));\n        if (m._strict) {\n            isNowValid =\n                isNowValid &&\n                flags.charsLeftOver === 0 &&\n                flags.unusedTokens.length === 0 &&\n                flags.bigHour === undefined;\n        }\n    }\n    if (Object.isFrozen == null || !Object.isFrozen(m)) {\n        m._isValid = isNowValid;\n    } else {\n        return isNowValid;\n    }\n    return m._isValid;\n}\n\nfunction createInvalid(flags) {\n    var m = createUTC(NaN);\n    if (flags != null) {\n        extend(getParsingFlags(m), flags);\n    } else {\n        getParsingFlags(m).userInvalidated = true;\n    }\n\n    return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = (hooks.momentProperties = []),\n    updateInProgress = false;\n\nfunction copyConfig(to, from) {\n    var i,\n        prop,\n        val,\n        momentPropertiesLen = momentProperties.length;\n\n    if (!isUndefined(from._isAMomentObject)) {\n        to._isAMomentObject = from._isAMomentObject;\n    }\n    if (!isUndefined(from._i)) {\n        to._i = from._i;\n    }\n    if (!isUndefined(from._f)) {\n        to._f = from._f;\n    }\n    if (!isUndefined(from._l)) {\n        to._l = from._l;\n    }\n    if (!isUndefined(from._strict)) {\n        to._strict = from._strict;\n    }\n    if (!isUndefined(from._tzm)) {\n        to._tzm = from._tzm;\n    }\n    if (!isUndefined(from._isUTC)) {\n        to._isUTC = from._isUTC;\n    }\n    if (!isUndefined(from._offset)) {\n        to._offset = from._offset;\n    }\n    if (!isUndefined(from._pf)) {\n        to._pf = getParsingFlags(from);\n    }\n    if (!isUndefined(from._locale)) {\n        to._locale = from._locale;\n    }\n\n    if (momentPropertiesLen > 0) {\n        for (i = 0; i < momentPropertiesLen; i++) {\n            prop = momentProperties[i];\n            val = from[prop];\n            if (!isUndefined(val)) {\n                to[prop] = val;\n            }\n        }\n    }\n\n    return to;\n}\n\n// Moment prototype object\nfunction Moment(config) {\n    copyConfig(this, config);\n    this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n    if (!this.isValid()) {\n        this._d = new Date(NaN);\n    }\n    // Prevent infinite loop in case updateOffset creates new moment\n    // objects.\n    if (updateInProgress === false) {\n        updateInProgress = true;\n        hooks.updateOffset(this);\n        updateInProgress = false;\n    }\n}\n\nfunction isMoment(obj) {\n    return (\n        obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n    );\n}\n\nfunction warn(msg) {\n    if (\n        hooks.suppressDeprecationWarnings === false &&\n        typeof console !== 'undefined' &&\n        console.warn\n    ) {\n        console.warn('Deprecation warning: ' + msg);\n    }\n}\n\nfunction deprecate(msg, fn) {\n    var firstTime = true;\n\n    return extend(function () {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(null, msg);\n        }\n        if (firstTime) {\n            var args = [],\n                arg,\n                i,\n                key,\n                argLen = arguments.length;\n            for (i = 0; i < argLen; i++) {\n                arg = '';\n                if (typeof arguments[i] === 'object') {\n                    arg += '\\n[' + i + '] ';\n                    for (key in arguments[0]) {\n                        if (hasOwnProp(arguments[0], key)) {\n                            arg += key + ': ' + arguments[0][key] + ', ';\n                        }\n                    }\n                    arg = arg.slice(0, -2); // Remove trailing comma and space\n                } else {\n                    arg = arguments[i];\n                }\n                args.push(arg);\n            }\n            warn(\n                msg +\n                    '\\nArguments: ' +\n                    Array.prototype.slice.call(args).join('') +\n                    '\\n' +\n                    new Error().stack\n            );\n            firstTime = false;\n        }\n        return fn.apply(this, arguments);\n    }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n    if (hooks.deprecationHandler != null) {\n        hooks.deprecationHandler(name, msg);\n    }\n    if (!deprecations[name]) {\n        warn(msg);\n        deprecations[name] = true;\n    }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n    return (\n        (typeof Function !== 'undefined' && input instanceof Function) ||\n        Object.prototype.toString.call(input) === '[object Function]'\n    );\n}\n\nfunction set(config) {\n    var prop, i;\n    for (i in config) {\n        if (hasOwnProp(config, i)) {\n            prop = config[i];\n            if (isFunction(prop)) {\n                this[i] = prop;\n            } else {\n                this['_' + i] = prop;\n            }\n        }\n    }\n    this._config = config;\n    // Lenient ordinal parsing accepts just a number in addition to\n    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n    this._dayOfMonthOrdinalParseLenient = new RegExp(\n        (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n            '|' +\n            /\\d{1,2}/.source\n    );\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n    var res = extend({}, parentConfig),\n        prop;\n    for (prop in childConfig) {\n        if (hasOwnProp(childConfig, prop)) {\n            if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                res[prop] = {};\n                extend(res[prop], parentConfig[prop]);\n                extend(res[prop], childConfig[prop]);\n            } else if (childConfig[prop] != null) {\n                res[prop] = childConfig[prop];\n            } else {\n                delete res[prop];\n            }\n        }\n    }\n    for (prop in parentConfig) {\n        if (\n            hasOwnProp(parentConfig, prop) &&\n            !hasOwnProp(childConfig, prop) &&\n            isObject(parentConfig[prop])\n        ) {\n            // make sure changes to properties don't modify parent config\n            res[prop] = extend({}, res[prop]);\n        }\n    }\n    return res;\n}\n\nfunction Locale(config) {\n    if (config != null) {\n        this.set(config);\n    }\n}\n\nvar keys;\n\nif (Object.keys) {\n    keys = Object.keys;\n} else {\n    keys = function (obj) {\n        var i,\n            res = [];\n        for (i in obj) {\n            if (hasOwnProp(obj, i)) {\n                res.push(i);\n            }\n        }\n        return res;\n    };\n}\n\nvar defaultCalendar = {\n    sameDay: '[Today at] LT',\n    nextDay: '[Tomorrow at] LT',\n    nextWeek: 'dddd [at] LT',\n    lastDay: '[Yesterday at] LT',\n    lastWeek: '[Last] dddd [at] LT',\n    sameElse: 'L',\n};\n\nfunction calendar(key, mom, now) {\n    var output = this._calendar[key] || this._calendar['sameElse'];\n    return isFunction(output) ? output.call(mom, now) : output;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n    var absNumber = '' + Math.abs(number),\n        zerosToFill = targetLength - absNumber.length,\n        sign = number >= 0;\n    return (\n        (sign ? (forceSign ? '+' : '') : '-') +\n        Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n        absNumber\n    );\n}\n\nvar formattingTokens =\n        /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n    localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n    formatFunctions = {},\n    formatTokenFunctions = {};\n\n// token:    'M'\n// padded:   ['MM', 2]\n// ordinal:  'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken(token, padded, ordinal, callback) {\n    var func = callback;\n    if (typeof callback === 'string') {\n        func = function () {\n            return this[callback]();\n        };\n    }\n    if (token) {\n        formatTokenFunctions[token] = func;\n    }\n    if (padded) {\n        formatTokenFunctions[padded[0]] = function () {\n            return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n        };\n    }\n    if (ordinal) {\n        formatTokenFunctions[ordinal] = function () {\n            return this.localeData().ordinal(\n                func.apply(this, arguments),\n                token\n            );\n        };\n    }\n}\n\nfunction removeFormattingTokens(input) {\n    if (input.match(/\\[[\\s\\S]/)) {\n        return input.replace(/^\\[|\\]$/g, '');\n    }\n    return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n    var array = format.match(formattingTokens),\n        i,\n        length;\n\n    for (i = 0, length = array.length; i < length; i++) {\n        if (formatTokenFunctions[array[i]]) {\n            array[i] = formatTokenFunctions[array[i]];\n        } else {\n            array[i] = removeFormattingTokens(array[i]);\n        }\n    }\n\n    return function (mom) {\n        var output = '',\n            i;\n        for (i = 0; i < length; i++) {\n            output += isFunction(array[i])\n                ? array[i].call(mom, format)\n                : array[i];\n        }\n        return output;\n    };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n    if (!m.isValid()) {\n        return m.localeData().invalidDate();\n    }\n\n    format = expandFormat(format, m.localeData());\n    formatFunctions[format] =\n        formatFunctions[format] || makeFormatFunction(format);\n\n    return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n    var i = 5;\n\n    function replaceLongDateFormatTokens(input) {\n        return locale.longDateFormat(input) || input;\n    }\n\n    localFormattingTokens.lastIndex = 0;\n    while (i >= 0 && localFormattingTokens.test(format)) {\n        format = format.replace(\n            localFormattingTokens,\n            replaceLongDateFormatTokens\n        );\n        localFormattingTokens.lastIndex = 0;\n        i -= 1;\n    }\n\n    return format;\n}\n\nvar defaultLongDateFormat = {\n    LTS: 'h:mm:ss A',\n    LT: 'h:mm A',\n    L: 'MM/DD/YYYY',\n    LL: 'MMMM D, YYYY',\n    LLL: 'MMMM D, YYYY h:mm A',\n    LLLL: 'dddd, MMMM D, YYYY h:mm A',\n};\n\nfunction longDateFormat(key) {\n    var format = this._longDateFormat[key],\n        formatUpper = this._longDateFormat[key.toUpperCase()];\n\n    if (format || !formatUpper) {\n        return format;\n    }\n\n    this._longDateFormat[key] = formatUpper\n        .match(formattingTokens)\n        .map(function (tok) {\n            if (\n                tok === 'MMMM' ||\n                tok === 'MM' ||\n                tok === 'DD' ||\n                tok === 'dddd'\n            ) {\n                return tok.slice(1);\n            }\n            return tok;\n        })\n        .join('');\n\n    return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate() {\n    return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d',\n    defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal(number) {\n    return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    ss: '%d seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    w: 'a week',\n    ww: '%d weeks',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years',\n};\n\nfunction relativeTime(number, withoutSuffix, string, isFuture) {\n    var output = this._relativeTime[string];\n    return isFunction(output)\n        ? output(number, withoutSuffix, string, isFuture)\n        : output.replace(/%d/i, number);\n}\n\nfunction pastFuture(diff, output) {\n    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n    return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {\n    D: 'date',\n    dates: 'date',\n    date: 'date',\n    d: 'day',\n    days: 'day',\n    day: 'day',\n    e: 'weekday',\n    weekdays: 'weekday',\n    weekday: 'weekday',\n    E: 'isoWeekday',\n    isoweekdays: 'isoWeekday',\n    isoweekday: 'isoWeekday',\n    DDD: 'dayOfYear',\n    dayofyears: 'dayOfYear',\n    dayofyear: 'dayOfYear',\n    h: 'hour',\n    hours: 'hour',\n    hour: 'hour',\n    ms: 'millisecond',\n    milliseconds: 'millisecond',\n    millisecond: 'millisecond',\n    m: 'minute',\n    minutes: 'minute',\n    minute: 'minute',\n    M: 'month',\n    months: 'month',\n    month: 'month',\n    Q: 'quarter',\n    quarters: 'quarter',\n    quarter: 'quarter',\n    s: 'second',\n    seconds: 'second',\n    second: 'second',\n    gg: 'weekYear',\n    weekyears: 'weekYear',\n    weekyear: 'weekYear',\n    GG: 'isoWeekYear',\n    isoweekyears: 'isoWeekYear',\n    isoweekyear: 'isoWeekYear',\n    w: 'week',\n    weeks: 'week',\n    week: 'week',\n    W: 'isoWeek',\n    isoweeks: 'isoWeek',\n    isoweek: 'isoWeek',\n    y: 'year',\n    years: 'year',\n    year: 'year',\n};\n\nfunction normalizeUnits(units) {\n    return typeof units === 'string'\n        ? aliases[units] || aliases[units.toLowerCase()]\n        : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n    var normalizedInput = {},\n        normalizedProp,\n        prop;\n\n    for (prop in inputObject) {\n        if (hasOwnProp(inputObject, prop)) {\n            normalizedProp = normalizeUnits(prop);\n            if (normalizedProp) {\n                normalizedInput[normalizedProp] = inputObject[prop];\n            }\n        }\n    }\n\n    return normalizedInput;\n}\n\nvar priorities = {\n    date: 9,\n    day: 11,\n    weekday: 11,\n    isoWeekday: 11,\n    dayOfYear: 4,\n    hour: 13,\n    millisecond: 16,\n    minute: 14,\n    month: 8,\n    quarter: 7,\n    second: 15,\n    weekYear: 1,\n    isoWeekYear: 1,\n    week: 5,\n    isoWeek: 5,\n    year: 1,\n};\n\nfunction getPrioritizedUnits(unitsObj) {\n    var units = [],\n        u;\n    for (u in unitsObj) {\n        if (hasOwnProp(unitsObj, u)) {\n            units.push({ unit: u, priority: priorities[u] });\n        }\n    }\n    units.sort(function (a, b) {\n        return a.priority - b.priority;\n    });\n    return units;\n}\n\nvar match1 = /\\d/, //       0 - 9\n    match2 = /\\d\\d/, //      00 - 99\n    match3 = /\\d{3}/, //     000 - 999\n    match4 = /\\d{4}/, //    0000 - 9999\n    match6 = /[+-]?\\d{6}/, // -999999 - 999999\n    match1to2 = /\\d\\d?/, //       0 - 99\n    match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n    match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n    match1to3 = /\\d{1,3}/, //       0 - 999\n    match1to4 = /\\d{1,4}/, //       0 - 9999\n    match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n    matchUnsigned = /\\d+/, //       0 - inf\n    matchSigned = /[+-]?\\d+/, //    -inf - inf\n    matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n    matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n    matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n    // any word (or two) characters or numbers including two/three word month in arabic.\n    // includes scottish gaelic two word and hyphenated months\n    matchWord =\n        /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n    match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n    match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n    regexes;\n\nregexes = {};\n\nfunction addRegexToken(token, regex, strictRegex) {\n    regexes[token] = isFunction(regex)\n        ? regex\n        : function (isStrict, localeData) {\n              return isStrict && strictRegex ? strictRegex : regex;\n          };\n}\n\nfunction getParseRegexForToken(token, config) {\n    if (!hasOwnProp(regexes, token)) {\n        return new RegExp(unescapeFormat(token));\n    }\n\n    return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n    return regexEscape(\n        s\n            .replace('\\\\', '')\n            .replace(\n                /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                function (matched, p1, p2, p3, p4) {\n                    return p1 || p2 || p3 || p4;\n                }\n            )\n    );\n}\n\nfunction regexEscape(s) {\n    return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction absFloor(number) {\n    if (number < 0) {\n        // -0 -> 0\n        return Math.ceil(number) || 0;\n    } else {\n        return Math.floor(number);\n    }\n}\n\nfunction toInt(argumentForCoercion) {\n    var coercedNumber = +argumentForCoercion,\n        value = 0;\n\n    if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n        value = absFloor(coercedNumber);\n    }\n\n    return value;\n}\n\nvar tokens = {};\n\nfunction addParseToken(token, callback) {\n    var i,\n        func = callback,\n        tokenLen;\n    if (typeof token === 'string') {\n        token = [token];\n    }\n    if (isNumber(callback)) {\n        func = function (input, array) {\n            array[callback] = toInt(input);\n        };\n    }\n    tokenLen = token.length;\n    for (i = 0; i < tokenLen; i++) {\n        tokens[token[i]] = func;\n    }\n}\n\nfunction addWeekParseToken(token, callback) {\n    addParseToken(token, function (input, array, config, token) {\n        config._w = config._w || {};\n        callback(input, config._w, config, token);\n    });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n    if (input != null && hasOwnProp(tokens, token)) {\n        tokens[token](input, config._a, config, token);\n    }\n}\n\nfunction isLeapYear(year) {\n    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nvar YEAR = 0,\n    MONTH = 1,\n    DATE = 2,\n    HOUR = 3,\n    MINUTE = 4,\n    SECOND = 5,\n    MILLISECOND = 6,\n    WEEK = 7,\n    WEEKDAY = 8;\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n    var y = this.year();\n    return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n    return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n    array[YEAR] =\n        input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n    array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n    array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n    return isLeapYear(year) ? 366 : 365;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear() {\n    return isLeapYear(this.year());\n}\n\nfunction makeGetSet(unit, keepTime) {\n    return function (value) {\n        if (value != null) {\n            set$1(this, unit, value);\n            hooks.updateOffset(this, keepTime);\n            return this;\n        } else {\n            return get(this, unit);\n        }\n    };\n}\n\nfunction get(mom, unit) {\n    if (!mom.isValid()) {\n        return NaN;\n    }\n\n    var d = mom._d,\n        isUTC = mom._isUTC;\n\n    switch (unit) {\n        case 'Milliseconds':\n            return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n        case 'Seconds':\n            return isUTC ? d.getUTCSeconds() : d.getSeconds();\n        case 'Minutes':\n            return isUTC ? d.getUTCMinutes() : d.getMinutes();\n        case 'Hours':\n            return isUTC ? d.getUTCHours() : d.getHours();\n        case 'Date':\n            return isUTC ? d.getUTCDate() : d.getDate();\n        case 'Day':\n            return isUTC ? d.getUTCDay() : d.getDay();\n        case 'Month':\n            return isUTC ? d.getUTCMonth() : d.getMonth();\n        case 'FullYear':\n            return isUTC ? d.getUTCFullYear() : d.getFullYear();\n        default:\n            return NaN; // Just in case\n    }\n}\n\nfunction set$1(mom, unit, value) {\n    var d, isUTC, year, month, date;\n\n    if (!mom.isValid() || isNaN(value)) {\n        return;\n    }\n\n    d = mom._d;\n    isUTC = mom._isUTC;\n\n    switch (unit) {\n        case 'Milliseconds':\n            return void (isUTC\n                ? d.setUTCMilliseconds(value)\n                : d.setMilliseconds(value));\n        case 'Seconds':\n            return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n        case 'Minutes':\n            return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n        case 'Hours':\n            return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n        case 'Date':\n            return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n        // case 'Day': // Not real\n        //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n        // case 'Month': // Not used because we need to pass two variables\n        //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n        case 'FullYear':\n            break; // See below ...\n        default:\n            return; // Just in case\n    }\n\n    year = value;\n    month = mom.month();\n    date = mom.date();\n    date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n    void (isUTC\n        ? d.setUTCFullYear(year, month, date)\n        : d.setFullYear(year, month, date));\n}\n\n// MOMENTS\n\nfunction stringGet(units) {\n    units = normalizeUnits(units);\n    if (isFunction(this[units])) {\n        return this[units]();\n    }\n    return this;\n}\n\nfunction stringSet(units, value) {\n    if (typeof units === 'object') {\n        units = normalizeObjectUnits(units);\n        var prioritized = getPrioritizedUnits(units),\n            i,\n            prioritizedLen = prioritized.length;\n        for (i = 0; i < prioritizedLen; i++) {\n            this[prioritized[i].unit](units[prioritized[i].unit]);\n        }\n    } else {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units](value);\n        }\n    }\n    return this;\n}\n\nfunction mod(n, x) {\n    return ((n % x) + x) % x;\n}\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n    indexOf = Array.prototype.indexOf;\n} else {\n    indexOf = function (o) {\n        // I know\n        var i;\n        for (i = 0; i < this.length; ++i) {\n            if (this[i] === o) {\n                return i;\n            }\n        }\n        return -1;\n    };\n}\n\nfunction daysInMonth(year, month) {\n    if (isNaN(year) || isNaN(month)) {\n        return NaN;\n    }\n    var modMonth = mod(month, 12);\n    year += (month - modMonth) / 12;\n    return modMonth === 1\n        ? isLeapYear(year)\n            ? 29\n            : 28\n        : 31 - ((modMonth % 7) % 2);\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n    return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n    return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n    return this.localeData().months(this, format);\n});\n\n// PARSING\n\naddRegexToken('M', match1to2, match1to2NoLeadingZero);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n    return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n    return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n    array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n    var month = config._locale.monthsParse(input, token, config._strict);\n    // if we didn't find a month name, mark the date as invalid.\n    if (month != null) {\n        array[MONTH] = month;\n    } else {\n        getParsingFlags(config).invalidMonth = input;\n    }\n});\n\n// LOCALES\n\nvar defaultLocaleMonths =\n        'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n    defaultLocaleMonthsShort =\n        'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n    MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n    defaultMonthsShortRegex = matchWord,\n    defaultMonthsRegex = matchWord;\n\nfunction localeMonths(m, format) {\n    if (!m) {\n        return isArray(this._months)\n            ? this._months\n            : this._months['standalone'];\n    }\n    return isArray(this._months)\n        ? this._months[m.month()]\n        : this._months[\n              (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                  ? 'format'\n                  : 'standalone'\n          ][m.month()];\n}\n\nfunction localeMonthsShort(m, format) {\n    if (!m) {\n        return isArray(this._monthsShort)\n            ? this._monthsShort\n            : this._monthsShort['standalone'];\n    }\n    return isArray(this._monthsShort)\n        ? this._monthsShort[m.month()]\n        : this._monthsShort[\n              MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n          ][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = monthName.toLocaleLowerCase();\n    if (!this._monthsParse) {\n        // this is not used\n        this._monthsParse = [];\n        this._longMonthsParse = [];\n        this._shortMonthsParse = [];\n        for (i = 0; i < 12; ++i) {\n            mom = createUTC([2000, i]);\n            this._shortMonthsParse[i] = this.monthsShort(\n                mom,\n                ''\n            ).toLocaleLowerCase();\n            this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n        }\n    }\n\n    if (strict) {\n        if (format === 'MMM') {\n            ii = indexOf.call(this._shortMonthsParse, llc);\n            return ii !== -1 ? ii : null;\n        } else {\n            ii = indexOf.call(this._longMonthsParse, llc);\n            return ii !== -1 ? ii : null;\n        }\n    } else {\n        if (format === 'MMM') {\n            ii = indexOf.call(this._shortMonthsParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._longMonthsParse, llc);\n            return ii !== -1 ? ii : null;\n        } else {\n            ii = indexOf.call(this._longMonthsParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._shortMonthsParse, llc);\n            return ii !== -1 ? ii : null;\n        }\n    }\n}\n\nfunction localeMonthsParse(monthName, format, strict) {\n    var i, mom, regex;\n\n    if (this._monthsParseExact) {\n        return handleStrictParse.call(this, monthName, format, strict);\n    }\n\n    if (!this._monthsParse) {\n        this._monthsParse = [];\n        this._longMonthsParse = [];\n        this._shortMonthsParse = [];\n    }\n\n    // TODO: add sorting\n    // Sorting makes sure if one month (or abbr) is a prefix of another\n    // see sorting in computeMonthsParse\n    for (i = 0; i < 12; i++) {\n        // make the regex if we don't have it already\n        mom = createUTC([2000, i]);\n        if (strict && !this._longMonthsParse[i]) {\n            this._longMonthsParse[i] = new RegExp(\n                '^' + this.months(mom, '').replace('.', '') + '$',\n                'i'\n            );\n            this._shortMonthsParse[i] = new RegExp(\n                '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                'i'\n            );\n        }\n        if (!strict && !this._monthsParse[i]) {\n            regex =\n                '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n            this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n        }\n        // test the regex\n        if (\n            strict &&\n            format === 'MMMM' &&\n            this._longMonthsParse[i].test(monthName)\n        ) {\n            return i;\n        } else if (\n            strict &&\n            format === 'MMM' &&\n            this._shortMonthsParse[i].test(monthName)\n        ) {\n            return i;\n        } else if (!strict && this._monthsParse[i].test(monthName)) {\n            return i;\n        }\n    }\n}\n\n// MOMENTS\n\nfunction setMonth(mom, value) {\n    if (!mom.isValid()) {\n        // No op\n        return mom;\n    }\n\n    if (typeof value === 'string') {\n        if (/^\\d+$/.test(value)) {\n            value = toInt(value);\n        } else {\n            value = mom.localeData().monthsParse(value);\n            // TODO: Another silent failure?\n            if (!isNumber(value)) {\n                return mom;\n            }\n        }\n    }\n\n    var month = value,\n        date = mom.date();\n\n    date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n    void (mom._isUTC\n        ? mom._d.setUTCMonth(month, date)\n        : mom._d.setMonth(month, date));\n    return mom;\n}\n\nfunction getSetMonth(value) {\n    if (value != null) {\n        setMonth(this, value);\n        hooks.updateOffset(this, true);\n        return this;\n    } else {\n        return get(this, 'Month');\n    }\n}\n\nfunction getDaysInMonth() {\n    return daysInMonth(this.year(), this.month());\n}\n\nfunction monthsShortRegex(isStrict) {\n    if (this._monthsParseExact) {\n        if (!hasOwnProp(this, '_monthsRegex')) {\n            computeMonthsParse.call(this);\n        }\n        if (isStrict) {\n            return this._monthsShortStrictRegex;\n        } else {\n            return this._monthsShortRegex;\n        }\n    } else {\n        if (!hasOwnProp(this, '_monthsShortRegex')) {\n            this._monthsShortRegex = defaultMonthsShortRegex;\n        }\n        return this._monthsShortStrictRegex && isStrict\n            ? this._monthsShortStrictRegex\n            : this._monthsShortRegex;\n    }\n}\n\nfunction monthsRegex(isStrict) {\n    if (this._monthsParseExact) {\n        if (!hasOwnProp(this, '_monthsRegex')) {\n            computeMonthsParse.call(this);\n        }\n        if (isStrict) {\n            return this._monthsStrictRegex;\n        } else {\n            return this._monthsRegex;\n        }\n    } else {\n        if (!hasOwnProp(this, '_monthsRegex')) {\n            this._monthsRegex = defaultMonthsRegex;\n        }\n        return this._monthsStrictRegex && isStrict\n            ? this._monthsStrictRegex\n            : this._monthsRegex;\n    }\n}\n\nfunction computeMonthsParse() {\n    function cmpLenRev(a, b) {\n        return b.length - a.length;\n    }\n\n    var shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom,\n        shortP,\n        longP;\n    for (i = 0; i < 12; i++) {\n        // make the regex if we don't have it already\n        mom = createUTC([2000, i]);\n        shortP = regexEscape(this.monthsShort(mom, ''));\n        longP = regexEscape(this.months(mom, ''));\n        shortPieces.push(shortP);\n        longPieces.push(longP);\n        mixedPieces.push(longP);\n        mixedPieces.push(shortP);\n    }\n    // Sorting makes sure if one month (or abbr) is a prefix of another it\n    // will match the longer piece.\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._monthsShortRegex = this._monthsRegex;\n    this._monthsStrictRegex = new RegExp(\n        '^(' + longPieces.join('|') + ')',\n        'i'\n    );\n    this._monthsShortStrictRegex = new RegExp(\n        '^(' + shortPieces.join('|') + ')',\n        'i'\n    );\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n    // can't just apply() to create a date:\n    // https://stackoverflow.com/q/181348\n    var date;\n    // the date constructor remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n        // preserve leap years using a full 400 year cycle, then reset\n        date = new Date(y + 400, m, d, h, M, s, ms);\n        if (isFinite(date.getFullYear())) {\n            date.setFullYear(y);\n        }\n    } else {\n        date = new Date(y, m, d, h, M, s, ms);\n    }\n\n    return date;\n}\n\nfunction createUTCDate(y) {\n    var date, args;\n    // the Date.UTC function remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n        args = Array.prototype.slice.call(arguments);\n        // preserve leap years using a full 400 year cycle, then reset\n        args[0] = y + 400;\n        date = new Date(Date.UTC.apply(null, args));\n        if (isFinite(date.getUTCFullYear())) {\n            date.setUTCFullYear(y);\n        }\n    } else {\n        date = new Date(Date.UTC.apply(null, arguments));\n    }\n\n    return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n        fwd = 7 + dow - doy,\n        // first-week day local weekday -- which local weekday is fwd\n        fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n    return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n    var localWeekday = (7 + weekday - dow) % 7,\n        weekOffset = firstWeekOffset(year, dow, doy),\n        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n        resYear,\n        resDayOfYear;\n\n    if (dayOfYear <= 0) {\n        resYear = year - 1;\n        resDayOfYear = daysInYear(resYear) + dayOfYear;\n    } else if (dayOfYear > daysInYear(year)) {\n        resYear = year + 1;\n        resDayOfYear = dayOfYear - daysInYear(year);\n    } else {\n        resYear = year;\n        resDayOfYear = dayOfYear;\n    }\n\n    return {\n        year: resYear,\n        dayOfYear: resDayOfYear,\n    };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n    var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n        resWeek,\n        resYear;\n\n    if (week < 1) {\n        resYear = mom.year() - 1;\n        resWeek = week + weeksInYear(resYear, dow, doy);\n    } else if (week > weeksInYear(mom.year(), dow, doy)) {\n        resWeek = week - weeksInYear(mom.year(), dow, doy);\n        resYear = mom.year() + 1;\n    } else {\n        resYear = mom.year();\n        resWeek = week;\n    }\n\n    return {\n        week: resWeek,\n        year: resYear,\n    };\n}\n\nfunction weeksInYear(year, dow, doy) {\n    var weekOffset = firstWeekOffset(year, dow, doy),\n        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// PARSING\n\naddRegexToken('w', match1to2, match1to2NoLeadingZero);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2, match1to2NoLeadingZero);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(\n    ['w', 'ww', 'W', 'WW'],\n    function (input, week, config, token) {\n        week[token.substr(0, 1)] = toInt(input);\n    }\n);\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek(mom) {\n    return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n    dow: 0, // Sunday is the first day of the week.\n    doy: 6, // The week that contains Jan 6th is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek() {\n    return this._week.dow;\n}\n\nfunction localeFirstDayOfYear() {\n    return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek(input) {\n    var week = this.localeData().week(this);\n    return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek(input) {\n    var week = weekOfYear(this, 1, 4).week;\n    return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n    return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n    return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n    return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n    return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n    return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n    return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n    var weekday = config._locale.weekdaysParse(input, token, config._strict);\n    // if we didn't get a weekday name, mark the date as invalid\n    if (weekday != null) {\n        week.d = weekday;\n    } else {\n        getParsingFlags(config).invalidWeekday = input;\n    }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n    week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n    if (typeof input !== 'string') {\n        return input;\n    }\n\n    if (!isNaN(input)) {\n        return parseInt(input, 10);\n    }\n\n    input = locale.weekdaysParse(input);\n    if (typeof input === 'number') {\n        return input;\n    }\n\n    return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n    if (typeof input === 'string') {\n        return locale.weekdaysParse(input) % 7 || 7;\n    }\n    return isNaN(input) ? null : input;\n}\n\n// LOCALES\nfunction shiftWeekdays(ws, n) {\n    return ws.slice(n, 7).concat(ws.slice(0, n));\n}\n\nvar defaultLocaleWeekdays =\n        'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n    defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n    defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n    defaultWeekdaysRegex = matchWord,\n    defaultWeekdaysShortRegex = matchWord,\n    defaultWeekdaysMinRegex = matchWord;\n\nfunction localeWeekdays(m, format) {\n    var weekdays = isArray(this._weekdays)\n        ? this._weekdays\n        : this._weekdays[\n              m && m !== true && this._weekdays.isFormat.test(format)\n                  ? 'format'\n                  : 'standalone'\n          ];\n    return m === true\n        ? shiftWeekdays(weekdays, this._week.dow)\n        : m\n          ? weekdays[m.day()]\n          : weekdays;\n}\n\nfunction localeWeekdaysShort(m) {\n    return m === true\n        ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n        : m\n          ? this._weekdaysShort[m.day()]\n          : this._weekdaysShort;\n}\n\nfunction localeWeekdaysMin(m) {\n    return m === true\n        ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n        : m\n          ? this._weekdaysMin[m.day()]\n          : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n    var i,\n        ii,\n        mom,\n        llc = weekdayName.toLocaleLowerCase();\n    if (!this._weekdaysParse) {\n        this._weekdaysParse = [];\n        this._shortWeekdaysParse = [];\n        this._minWeekdaysParse = [];\n\n        for (i = 0; i < 7; ++i) {\n            mom = createUTC([2000, 1]).day(i);\n            this._minWeekdaysParse[i] = this.weekdaysMin(\n                mom,\n                ''\n            ).toLocaleLowerCase();\n            this._shortWeekdaysParse[i] = this.weekdaysShort(\n                mom,\n                ''\n            ).toLocaleLowerCase();\n            this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n        }\n    }\n\n    if (strict) {\n        if (format === 'dddd') {\n            ii = indexOf.call(this._weekdaysParse, llc);\n            return ii !== -1 ? ii : null;\n        } else if (format === 'ddd') {\n            ii = indexOf.call(this._shortWeekdaysParse, llc);\n            return ii !== -1 ? ii : null;\n        } else {\n            ii = indexOf.call(this._minWeekdaysParse, llc);\n            return ii !== -1 ? ii : null;\n        }\n    } else {\n        if (format === 'dddd') {\n            ii = indexOf.call(this._weekdaysParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._shortWeekdaysParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._minWeekdaysParse, llc);\n            return ii !== -1 ? ii : null;\n        } else if (format === 'ddd') {\n            ii = indexOf.call(this._shortWeekdaysParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._weekdaysParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._minWeekdaysParse, llc);\n            return ii !== -1 ? ii : null;\n        } else {\n            ii = indexOf.call(this._minWeekdaysParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._weekdaysParse, llc);\n            if (ii !== -1) {\n                return ii;\n            }\n            ii = indexOf.call(this._shortWeekdaysParse, llc);\n            return ii !== -1 ? ii : null;\n        }\n    }\n}\n\nfunction localeWeekdaysParse(weekdayName, format, strict) {\n    var i, mom, regex;\n\n    if (this._weekdaysParseExact) {\n        return handleStrictParse$1.call(this, weekdayName, format, strict);\n    }\n\n    if (!this._weekdaysParse) {\n        this._weekdaysParse = [];\n        this._minWeekdaysParse = [];\n        this._shortWeekdaysParse = [];\n        this._fullWeekdaysParse = [];\n    }\n\n    for (i = 0; i < 7; i++) {\n        // make the regex if we don't have it already\n\n        mom = createUTC([2000, 1]).day(i);\n        if (strict && !this._fullWeekdaysParse[i]) {\n            this._fullWeekdaysParse[i] = new RegExp(\n                '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                'i'\n            );\n            this._shortWeekdaysParse[i] = new RegExp(\n                '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                'i'\n            );\n            this._minWeekdaysParse[i] = new RegExp(\n                '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                'i'\n            );\n        }\n        if (!this._weekdaysParse[i]) {\n            regex =\n                '^' +\n                this.weekdays(mom, '') +\n                '|^' +\n                this.weekdaysShort(mom, '') +\n                '|^' +\n                this.weekdaysMin(mom, '');\n            this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n        }\n        // test the regex\n        if (\n            strict &&\n            format === 'dddd' &&\n            this._fullWeekdaysParse[i].test(weekdayName)\n        ) {\n            return i;\n        } else if (\n            strict &&\n            format === 'ddd' &&\n            this._shortWeekdaysParse[i].test(weekdayName)\n        ) {\n            return i;\n        } else if (\n            strict &&\n            format === 'dd' &&\n            this._minWeekdaysParse[i].test(weekdayName)\n        ) {\n            return i;\n        } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n            return i;\n        }\n    }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek(input) {\n    if (!this.isValid()) {\n        return input != null ? this : NaN;\n    }\n\n    var day = get(this, 'Day');\n    if (input != null) {\n        input = parseWeekday(input, this.localeData());\n        return this.add(input - day, 'd');\n    } else {\n        return day;\n    }\n}\n\nfunction getSetLocaleDayOfWeek(input) {\n    if (!this.isValid()) {\n        return input != null ? this : NaN;\n    }\n    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n    return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek(input) {\n    if (!this.isValid()) {\n        return input != null ? this : NaN;\n    }\n\n    // behaves the same as moment#day except\n    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n    // as a setter, sunday should belong to the previous week.\n\n    if (input != null) {\n        var weekday = parseIsoWeekday(input, this.localeData());\n        return this.day(this.day() % 7 ? weekday : weekday - 7);\n    } else {\n        return this.day() || 7;\n    }\n}\n\nfunction weekdaysRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n        if (!hasOwnProp(this, '_weekdaysRegex')) {\n            computeWeekdaysParse.call(this);\n        }\n        if (isStrict) {\n            return this._weekdaysStrictRegex;\n        } else {\n            return this._weekdaysRegex;\n        }\n    } else {\n        if (!hasOwnProp(this, '_weekdaysRegex')) {\n            this._weekdaysRegex = defaultWeekdaysRegex;\n        }\n        return this._weekdaysStrictRegex && isStrict\n            ? this._weekdaysStrictRegex\n            : this._weekdaysRegex;\n    }\n}\n\nfunction weekdaysShortRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n        if (!hasOwnProp(this, '_weekdaysRegex')) {\n            computeWeekdaysParse.call(this);\n        }\n        if (isStrict) {\n            return this._weekdaysShortStrictRegex;\n        } else {\n            return this._weekdaysShortRegex;\n        }\n    } else {\n        if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n            this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n        }\n        return this._weekdaysShortStrictRegex && isStrict\n            ? this._weekdaysShortStrictRegex\n            : this._weekdaysShortRegex;\n    }\n}\n\nfunction weekdaysMinRegex(isStrict) {\n    if (this._weekdaysParseExact) {\n        if (!hasOwnProp(this, '_weekdaysRegex')) {\n            computeWeekdaysParse.call(this);\n        }\n        if (isStrict) {\n            return this._weekdaysMinStrictRegex;\n        } else {\n            return this._weekdaysMinRegex;\n        }\n    } else {\n        if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n            this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n        }\n        return this._weekdaysMinStrictRegex && isStrict\n            ? this._weekdaysMinStrictRegex\n            : this._weekdaysMinRegex;\n    }\n}\n\nfunction computeWeekdaysParse() {\n    function cmpLenRev(a, b) {\n        return b.length - a.length;\n    }\n\n    var minPieces = [],\n        shortPieces = [],\n        longPieces = [],\n        mixedPieces = [],\n        i,\n        mom,\n        minp,\n        shortp,\n        longp;\n    for (i = 0; i < 7; i++) {\n        // make the regex if we don't have it already\n        mom = createUTC([2000, 1]).day(i);\n        minp = regexEscape(this.weekdaysMin(mom, ''));\n        shortp = regexEscape(this.weekdaysShort(mom, ''));\n        longp = regexEscape(this.weekdays(mom, ''));\n        minPieces.push(minp);\n        shortPieces.push(shortp);\n        longPieces.push(longp);\n        mixedPieces.push(minp);\n        mixedPieces.push(shortp);\n        mixedPieces.push(longp);\n    }\n    // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n    // will match the longer piece.\n    minPieces.sort(cmpLenRev);\n    shortPieces.sort(cmpLenRev);\n    longPieces.sort(cmpLenRev);\n    mixedPieces.sort(cmpLenRev);\n\n    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._weekdaysShortRegex = this._weekdaysRegex;\n    this._weekdaysMinRegex = this._weekdaysRegex;\n\n    this._weekdaysStrictRegex = new RegExp(\n        '^(' + longPieces.join('|') + ')',\n        'i'\n    );\n    this._weekdaysShortStrictRegex = new RegExp(\n        '^(' + shortPieces.join('|') + ')',\n        'i'\n    );\n    this._weekdaysMinStrictRegex = new RegExp(\n        '^(' + minPieces.join('|') + ')',\n        'i'\n    );\n}\n\n// FORMATTING\n\nfunction hFormat() {\n    return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n    return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n    return (\n        '' +\n        hFormat.apply(this) +\n        zeroFill(this.minutes(), 2) +\n        zeroFill(this.seconds(), 2)\n    );\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n    return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n    return (\n        '' +\n        this.hours() +\n        zeroFill(this.minutes(), 2) +\n        zeroFill(this.seconds(), 2)\n    );\n});\n\nfunction meridiem(token, lowercase) {\n    addFormatToken(token, 0, 0, function () {\n        return this.localeData().meridiem(\n            this.hours(),\n            this.minutes(),\n            lowercase\n        );\n    });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// PARSING\n\nfunction matchMeridiem(isStrict, locale) {\n    return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2, match1to2HasZero);\naddRegexToken('h', match1to2, match1to2NoLeadingZero);\naddRegexToken('k', match1to2, match1to2NoLeadingZero);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n    var kInput = toInt(input);\n    array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n    config._isPm = config._locale.isPM(input);\n    config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n    array[HOUR] = toInt(input);\n    getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n    getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n    var pos1 = input.length - 4,\n        pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n    getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n    var pos = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos));\n    array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n    var pos1 = input.length - 4,\n        pos2 = input.length - 2;\n    array[HOUR] = toInt(input.substr(0, pos1));\n    array[MINUTE] = toInt(input.substr(pos1, 2));\n    array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM(input) {\n    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n    // Using charAt should be more compatible.\n    return (input + '').toLowerCase().charAt(0) === 'p';\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n    // Setting the hour should keep the time, because the user explicitly\n    // specified which hour they want. So trying to maintain the same hour (in\n    // a new timezone) makes sense. Adding/subtracting hours does not follow\n    // this rule.\n    getSetHour = makeGetSet('Hours', true);\n\nfunction localeMeridiem(hours, minutes, isLower) {\n    if (hours > 11) {\n        return isLower ? 'pm' : 'PM';\n    } else {\n        return isLower ? 'am' : 'AM';\n    }\n}\n\nvar baseConfig = {\n    calendar: defaultCalendar,\n    longDateFormat: defaultLongDateFormat,\n    invalidDate: defaultInvalidDate,\n    ordinal: defaultOrdinal,\n    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n    relativeTime: defaultRelativeTime,\n\n    months: defaultLocaleMonths,\n    monthsShort: defaultLocaleMonthsShort,\n\n    week: defaultLocaleWeek,\n\n    weekdays: defaultLocaleWeekdays,\n    weekdaysMin: defaultLocaleWeekdaysMin,\n    weekdaysShort: defaultLocaleWeekdaysShort,\n\n    meridiemParse: defaultLocaleMeridiemParse,\n};\n\n// internal storage for locale config files\nvar locales = {},\n    localeFamilies = {},\n    globalLocale;\n\nfunction commonPrefix(arr1, arr2) {\n    var i,\n        minl = Math.min(arr1.length, arr2.length);\n    for (i = 0; i < minl; i += 1) {\n        if (arr1[i] !== arr2[i]) {\n            return i;\n        }\n    }\n    return minl;\n}\n\nfunction normalizeLocale(key) {\n    return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n    var i = 0,\n        j,\n        next,\n        locale,\n        split;\n\n    while (i < names.length) {\n        split = normalizeLocale(names[i]).split('-');\n        j = split.length;\n        next = normalizeLocale(names[i + 1]);\n        next = next ? next.split('-') : null;\n        while (j > 0) {\n            locale = loadLocale(split.slice(0, j).join('-'));\n            if (locale) {\n                return locale;\n            }\n            if (\n                next &&\n                next.length >= j &&\n                commonPrefix(split, next) >= j - 1\n            ) {\n                //the next array item is better than a shallower substring of this one\n                break;\n            }\n            j--;\n        }\n        i++;\n    }\n    return globalLocale;\n}\n\nfunction isLocaleNameSane(name) {\n    // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n    // Ensure name is available and function returns boolean\n    return !!(name && name.match('^[^/\\\\\\\\]*$'));\n}\n\nfunction loadLocale(name) {\n    var oldLocale = null,\n        aliasedRequire;\n    // TODO: Find a better way to register and load all the locales in Node\n    if (\n        locales[name] === undefined &&\n        typeof module !== 'undefined' &&\n        module &&\n        module.exports &&\n        isLocaleNameSane(name)\n    ) {\n        try {\n            oldLocale = globalLocale._abbr;\n            aliasedRequire = require;\n            aliasedRequire('./locale/' + name);\n            getSetGlobalLocale(oldLocale);\n        } catch (e) {\n            // mark as not found to avoid repeating expensive file require call causing high CPU\n            // when trying to find en-US, en_US, en-us for every format call\n            locales[name] = null; // null means not found\n        }\n    }\n    return locales[name];\n}\n\n// This function will load locale and then set the global locale.  If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale(key, values) {\n    var data;\n    if (key) {\n        if (isUndefined(values)) {\n            data = getLocale(key);\n        } else {\n            data = defineLocale(key, values);\n        }\n\n        if (data) {\n            // moment.duration._locale = moment._locale = data;\n            globalLocale = data;\n        } else {\n            if (typeof console !== 'undefined' && console.warn) {\n                //warn user if arguments are passed but the locale could not be set\n                console.warn(\n                    'Locale ' + key + ' not found. Did you forget to load it?'\n                );\n            }\n        }\n    }\n\n    return globalLocale._abbr;\n}\n\nfunction defineLocale(name, config) {\n    if (config !== null) {\n        var locale,\n            parentConfig = baseConfig;\n        config.abbr = name;\n        if (locales[name] != null) {\n            deprecateSimple(\n                'defineLocaleOverride',\n                'use moment.updateLocale(localeName, config) to change ' +\n                    'an existing locale. moment.defineLocale(localeName, ' +\n                    'config) should only be used for creating a new locale ' +\n                    'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n            );\n            parentConfig = locales[name]._config;\n        } else if (config.parentLocale != null) {\n            if (locales[config.parentLocale] != null) {\n                parentConfig = locales[config.parentLocale]._config;\n            } else {\n                locale = loadLocale(config.parentLocale);\n                if (locale != null) {\n                    parentConfig = locale._config;\n                } else {\n                    if (!localeFamilies[config.parentLocale]) {\n                        localeFamilies[config.parentLocale] = [];\n                    }\n                    localeFamilies[config.parentLocale].push({\n                        name: name,\n                        config: config,\n                    });\n                    return null;\n                }\n            }\n        }\n        locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n        if (localeFamilies[name]) {\n            localeFamilies[name].forEach(function (x) {\n                defineLocale(x.name, x.config);\n            });\n        }\n\n        // backwards compat for now: also set the locale\n        // make sure we set the locale AFTER all child locales have been\n        // created, so we won't end up with the child locale set.\n        getSetGlobalLocale(name);\n\n        return locales[name];\n    } else {\n        // useful for testing\n        delete locales[name];\n        return null;\n    }\n}\n\nfunction updateLocale(name, config) {\n    if (config != null) {\n        var locale,\n            tmpLocale,\n            parentConfig = baseConfig;\n\n        if (locales[name] != null && locales[name].parentLocale != null) {\n            // Update existing child locale in-place to avoid memory-leaks\n            locales[name].set(mergeConfigs(locales[name]._config, config));\n        } else {\n            // MERGE\n            tmpLocale = loadLocale(name);\n            if (tmpLocale != null) {\n                parentConfig = tmpLocale._config;\n            }\n            config = mergeConfigs(parentConfig, config);\n            if (tmpLocale == null) {\n                // updateLocale is called for creating a new locale\n                // Set abbr so it will have a name (getters return\n                // undefined otherwise).\n                config.abbr = name;\n            }\n            locale = new Locale(config);\n            locale.parentLocale = locales[name];\n            locales[name] = locale;\n        }\n\n        // backwards compat for now: also set the locale\n        getSetGlobalLocale(name);\n    } else {\n        // pass null for config to unupdate, useful for tests\n        if (locales[name] != null) {\n            if (locales[name].parentLocale != null) {\n                locales[name] = locales[name].parentLocale;\n                if (name === getSetGlobalLocale()) {\n                    getSetGlobalLocale(name);\n                }\n            } else if (locales[name] != null) {\n                delete locales[name];\n            }\n        }\n    }\n    return locales[name];\n}\n\n// returns locale data\nfunction getLocale(key) {\n    var locale;\n\n    if (key && key._locale && key._locale._abbr) {\n        key = key._locale._abbr;\n    }\n\n    if (!key) {\n        return globalLocale;\n    }\n\n    if (!isArray(key)) {\n        //short-circuit everything else\n        locale = loadLocale(key);\n        if (locale) {\n            return locale;\n        }\n        key = [key];\n    }\n\n    return chooseLocale(key);\n}\n\nfunction listLocales() {\n    return keys(locales);\n}\n\nfunction checkOverflow(m) {\n    var overflow,\n        a = m._a;\n\n    if (a && getParsingFlags(m).overflow === -2) {\n        overflow =\n            a[MONTH] < 0 || a[MONTH] > 11\n                ? MONTH\n                : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                  ? DATE\n                  : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                      ? MINUTE\n                      : a[SECOND] < 0 || a[SECOND] > 59\n                        ? SECOND\n                        : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                          ? MILLISECOND\n                          : -1;\n\n        if (\n            getParsingFlags(m)._overflowDayOfYear &&\n            (overflow < YEAR || overflow > DATE)\n        ) {\n            overflow = DATE;\n        }\n        if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n            overflow = WEEK;\n        }\n        if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n            overflow = WEEKDAY;\n        }\n\n        getParsingFlags(m).overflow = overflow;\n    }\n\n    return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex =\n        /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n    basicIsoRegex =\n        /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n    tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n    isoDates = [\n        ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n        ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n        ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n        ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n        ['YYYY-DDD', /\\d{4}-\\d{3}/],\n        ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n        ['YYYYYYMMDD', /[+-]\\d{10}/],\n        ['YYYYMMDD', /\\d{8}/],\n        ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n        ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n        ['YYYYDDD', /\\d{7}/],\n        ['YYYYMM', /\\d{6}/, false],\n        ['YYYY', /\\d{4}/, false],\n    ],\n    // iso time formats and regexes\n    isoTimes = [\n        ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n        ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n        ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n        ['HH:mm', /\\d\\d:\\d\\d/],\n        ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n        ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n        ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n        ['HHmm', /\\d\\d\\d\\d/],\n        ['HH', /\\d\\d/],\n    ],\n    aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n    rfc2822 =\n        /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n    obsOffsets = {\n        UT: 0,\n        GMT: 0,\n        EDT: -4 * 60,\n        EST: -5 * 60,\n        CDT: -5 * 60,\n        CST: -6 * 60,\n        MDT: -6 * 60,\n        MST: -7 * 60,\n        PDT: -7 * 60,\n        PST: -8 * 60,\n    };\n\n// date from iso format\nfunction configFromISO(config) {\n    var i,\n        l,\n        string = config._i,\n        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n        allowTime,\n        dateFormat,\n        timeFormat,\n        tzFormat,\n        isoDatesLen = isoDates.length,\n        isoTimesLen = isoTimes.length;\n\n    if (match) {\n        getParsingFlags(config).iso = true;\n        for (i = 0, l = isoDatesLen; i < l; i++) {\n            if (isoDates[i][1].exec(match[1])) {\n                dateFormat = isoDates[i][0];\n                allowTime = isoDates[i][2] !== false;\n                break;\n            }\n        }\n        if (dateFormat == null) {\n            config._isValid = false;\n            return;\n        }\n        if (match[3]) {\n            for (i = 0, l = isoTimesLen; i < l; i++) {\n                if (isoTimes[i][1].exec(match[3])) {\n                    // match[2] should be 'T' or space\n                    timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                    break;\n                }\n            }\n            if (timeFormat == null) {\n                config._isValid = false;\n                return;\n            }\n        }\n        if (!allowTime && timeFormat != null) {\n            config._isValid = false;\n            return;\n        }\n        if (match[4]) {\n            if (tzRegex.exec(match[4])) {\n                tzFormat = 'Z';\n            } else {\n                config._isValid = false;\n                return;\n            }\n        }\n        config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n        configFromStringAndFormat(config);\n    } else {\n        config._isValid = false;\n    }\n}\n\nfunction extractFromRFC2822Strings(\n    yearStr,\n    monthStr,\n    dayStr,\n    hourStr,\n    minuteStr,\n    secondStr\n) {\n    var result = [\n        untruncateYear(yearStr),\n        defaultLocaleMonthsShort.indexOf(monthStr),\n        parseInt(dayStr, 10),\n        parseInt(hourStr, 10),\n        parseInt(minuteStr, 10),\n    ];\n\n    if (secondStr) {\n        result.push(parseInt(secondStr, 10));\n    }\n\n    return result;\n}\n\nfunction untruncateYear(yearStr) {\n    var year = parseInt(yearStr, 10);\n    if (year <= 49) {\n        return 2000 + year;\n    } else if (year <= 999) {\n        return 1900 + year;\n    }\n    return year;\n}\n\nfunction preprocessRFC2822(s) {\n    // Remove comments and folding whitespace and replace multiple-spaces with a single space\n    return s\n        .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n        .replace(/(\\s\\s+)/g, ' ')\n        .replace(/^\\s\\s*/, '')\n        .replace(/\\s\\s*$/, '');\n}\n\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n    if (weekdayStr) {\n        // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n        var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n            weekdayActual = new Date(\n                parsedInput[0],\n                parsedInput[1],\n                parsedInput[2]\n            ).getDay();\n        if (weekdayProvided !== weekdayActual) {\n            getParsingFlags(config).weekdayMismatch = true;\n            config._isValid = false;\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n    if (obsOffset) {\n        return obsOffsets[obsOffset];\n    } else if (militaryOffset) {\n        // the only allowed military tz is Z\n        return 0;\n    } else {\n        var hm = parseInt(numOffset, 10),\n            m = hm % 100,\n            h = (hm - m) / 100;\n        return h * 60 + m;\n    }\n}\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n    var match = rfc2822.exec(preprocessRFC2822(config._i)),\n        parsedArray;\n    if (match) {\n        parsedArray = extractFromRFC2822Strings(\n            match[4],\n            match[3],\n            match[2],\n            match[5],\n            match[6],\n            match[7]\n        );\n        if (!checkWeekday(match[1], parsedArray, config)) {\n            return;\n        }\n\n        config._a = parsedArray;\n        config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n        config._d = createUTCDate.apply(null, config._a);\n        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n        getParsingFlags(config).rfc2822 = true;\n    } else {\n        config._isValid = false;\n    }\n}\n\n// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\nfunction configFromString(config) {\n    var matched = aspNetJsonRegex.exec(config._i);\n    if (matched !== null) {\n        config._d = new Date(+matched[1]);\n        return;\n    }\n\n    configFromISO(config);\n    if (config._isValid === false) {\n        delete config._isValid;\n    } else {\n        return;\n    }\n\n    configFromRFC2822(config);\n    if (config._isValid === false) {\n        delete config._isValid;\n    } else {\n        return;\n    }\n\n    if (config._strict) {\n        config._isValid = false;\n    } else {\n        // Final attempt, use Input Fallback\n        hooks.createFromInputFallback(config);\n    }\n}\n\nhooks.createFromInputFallback = deprecate(\n    'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n        'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n    function (config) {\n        config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n    }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n    if (a != null) {\n        return a;\n    }\n    if (b != null) {\n        return b;\n    }\n    return c;\n}\n\nfunction currentDateArray(config) {\n    // hooks is actually the exported moment object\n    var nowValue = new Date(hooks.now());\n    if (config._useUTC) {\n        return [\n            nowValue.getUTCFullYear(),\n            nowValue.getUTCMonth(),\n            nowValue.getUTCDate(),\n        ];\n    }\n    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray(config) {\n    var i,\n        date,\n        input = [],\n        currentDate,\n        expectedWeekday,\n        yearToUse;\n\n    if (config._d) {\n        return;\n    }\n\n    currentDate = currentDateArray(config);\n\n    //compute day of the year from weeks and weekdays\n    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n        dayOfYearFromWeekInfo(config);\n    }\n\n    //if the day of the year is set, figure out what it is\n    if (config._dayOfYear != null) {\n        yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n        if (\n            config._dayOfYear > daysInYear(yearToUse) ||\n            config._dayOfYear === 0\n        ) {\n            getParsingFlags(config)._overflowDayOfYear = true;\n        }\n\n        date = createUTCDate(yearToUse, 0, config._dayOfYear);\n        config._a[MONTH] = date.getUTCMonth();\n        config._a[DATE] = date.getUTCDate();\n    }\n\n    // Default to current date.\n    // * if no year, month, day of month are given, default to today\n    // * if day of month is given, default month and year\n    // * if month is given, default only year\n    // * if year is given, don't default anything\n    for (i = 0; i < 3 && config._a[i] == null; ++i) {\n        config._a[i] = input[i] = currentDate[i];\n    }\n\n    // Zero out whatever was not defaulted, including time\n    for (; i < 7; i++) {\n        config._a[i] = input[i] =\n            config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n    }\n\n    // Check for 24:00:00.000\n    if (\n        config._a[HOUR] === 24 &&\n        config._a[MINUTE] === 0 &&\n        config._a[SECOND] === 0 &&\n        config._a[MILLISECOND] === 0\n    ) {\n        config._nextDay = true;\n        config._a[HOUR] = 0;\n    }\n\n    config._d = (config._useUTC ? createUTCDate : createDate).apply(\n        null,\n        input\n    );\n    expectedWeekday = config._useUTC\n        ? config._d.getUTCDay()\n        : config._d.getDay();\n\n    // Apply timezone offset from input. The actual utcOffset can be changed\n    // with parseZone.\n    if (config._tzm != null) {\n        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n    }\n\n    if (config._nextDay) {\n        config._a[HOUR] = 24;\n    }\n\n    // check for mismatching day of week\n    if (\n        config._w &&\n        typeof config._w.d !== 'undefined' &&\n        config._w.d !== expectedWeekday\n    ) {\n        getParsingFlags(config).weekdayMismatch = true;\n    }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n    w = config._w;\n    if (w.GG != null || w.W != null || w.E != null) {\n        dow = 1;\n        doy = 4;\n\n        // TODO: We need to take the current isoWeekYear, but that depends on\n        // how we interpret now (local, utc, fixed offset). So create\n        // a now version of current config (take local/utc/offset flags, and\n        // create now).\n        weekYear = defaults(\n            w.GG,\n            config._a[YEAR],\n            weekOfYear(createLocal(), 1, 4).year\n        );\n        week = defaults(w.W, 1);\n        weekday = defaults(w.E, 1);\n        if (weekday < 1 || weekday > 7) {\n            weekdayOverflow = true;\n        }\n    } else {\n        dow = config._locale._week.dow;\n        doy = config._locale._week.doy;\n\n        curWeek = weekOfYear(createLocal(), dow, doy);\n\n        weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n        // Default to current week.\n        week = defaults(w.w, curWeek.week);\n\n        if (w.d != null) {\n            // weekday -- low day numbers are considered next week\n            weekday = w.d;\n            if (weekday < 0 || weekday > 6) {\n                weekdayOverflow = true;\n            }\n        } else if (w.e != null) {\n            // local weekday -- counting starts from beginning of week\n            weekday = w.e + dow;\n            if (w.e < 0 || w.e > 6) {\n                weekdayOverflow = true;\n            }\n        } else {\n            // default to beginning of week\n            weekday = dow;\n        }\n    }\n    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n        getParsingFlags(config)._overflowWeeks = true;\n    } else if (weekdayOverflow != null) {\n        getParsingFlags(config)._overflowWeekday = true;\n    } else {\n        temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n        config._a[YEAR] = temp.year;\n        config._dayOfYear = temp.dayOfYear;\n    }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n    // TODO: Move this to another part of the creation flow to prevent circular deps\n    if (config._f === hooks.ISO_8601) {\n        configFromISO(config);\n        return;\n    }\n    if (config._f === hooks.RFC_2822) {\n        configFromRFC2822(config);\n        return;\n    }\n    config._a = [];\n    getParsingFlags(config).empty = true;\n\n    // This array is used to make a Date, either with `new Date` or `Date.UTC`\n    var string = '' + config._i,\n        i,\n        parsedInput,\n        tokens,\n        token,\n        skipped,\n        stringLength = string.length,\n        totalParsedInputLength = 0,\n        era,\n        tokenLen;\n\n    tokens =\n        expandFormat(config._f, config._locale).match(formattingTokens) || [];\n    tokenLen = tokens.length;\n    for (i = 0; i < tokenLen; i++) {\n        token = tokens[i];\n        parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n            [])[0];\n        if (parsedInput) {\n            skipped = string.substr(0, string.indexOf(parsedInput));\n            if (skipped.length > 0) {\n                getParsingFlags(config).unusedInput.push(skipped);\n            }\n            string = string.slice(\n                string.indexOf(parsedInput) + parsedInput.length\n            );\n            totalParsedInputLength += parsedInput.length;\n        }\n        // don't parse if it's not a known token\n        if (formatTokenFunctions[token]) {\n            if (parsedInput) {\n                getParsingFlags(config).empty = false;\n            } else {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n            addTimeToArrayFromToken(token, parsedInput, config);\n        } else if (config._strict && !parsedInput) {\n            getParsingFlags(config).unusedTokens.push(token);\n        }\n    }\n\n    // add remaining unparsed input length to the string\n    getParsingFlags(config).charsLeftOver =\n        stringLength - totalParsedInputLength;\n    if (string.length > 0) {\n        getParsingFlags(config).unusedInput.push(string);\n    }\n\n    // clear _12h flag if hour is <= 12\n    if (\n        config._a[HOUR] <= 12 &&\n        getParsingFlags(config).bigHour === true &&\n        config._a[HOUR] > 0\n    ) {\n        getParsingFlags(config).bigHour = undefined;\n    }\n\n    getParsingFlags(config).parsedDateParts = config._a.slice(0);\n    getParsingFlags(config).meridiem = config._meridiem;\n    // handle meridiem\n    config._a[HOUR] = meridiemFixWrap(\n        config._locale,\n        config._a[HOUR],\n        config._meridiem\n    );\n\n    // handle era\n    era = getParsingFlags(config).era;\n    if (era !== null) {\n        config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n    }\n\n    configFromArray(config);\n    checkOverflow(config);\n}\n\nfunction meridiemFixWrap(locale, hour, meridiem) {\n    var isPm;\n\n    if (meridiem == null) {\n        // nothing to do\n        return hour;\n    }\n    if (locale.meridiemHour != null) {\n        return locale.meridiemHour(hour, meridiem);\n    } else if (locale.isPM != null) {\n        // Fallback\n        isPm = locale.isPM(meridiem);\n        if (isPm && hour < 12) {\n            hour += 12;\n        }\n        if (!isPm && hour === 12) {\n            hour = 0;\n        }\n        return hour;\n    } else {\n        // this is not supposed to happen\n        return hour;\n    }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n    var tempConfig,\n        bestMoment,\n        scoreToBeat,\n        i,\n        currentScore,\n        validFormatFound,\n        bestFormatIsValid = false,\n        configfLen = config._f.length;\n\n    if (configfLen === 0) {\n        getParsingFlags(config).invalidFormat = true;\n        config._d = new Date(NaN);\n        return;\n    }\n\n    for (i = 0; i < configfLen; i++) {\n        currentScore = 0;\n        validFormatFound = false;\n        tempConfig = copyConfig({}, config);\n        if (config._useUTC != null) {\n            tempConfig._useUTC = config._useUTC;\n        }\n        tempConfig._f = config._f[i];\n        configFromStringAndFormat(tempConfig);\n\n        if (isValid(tempConfig)) {\n            validFormatFound = true;\n        }\n\n        // if there is any input that was not parsed add a penalty for that format\n        currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n        //or tokens\n        currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n        getParsingFlags(tempConfig).score = currentScore;\n\n        if (!bestFormatIsValid) {\n            if (\n                scoreToBeat == null ||\n                currentScore < scoreToBeat ||\n                validFormatFound\n            ) {\n                scoreToBeat = currentScore;\n                bestMoment = tempConfig;\n                if (validFormatFound) {\n                    bestFormatIsValid = true;\n                }\n            }\n        } else {\n            if (currentScore < scoreToBeat) {\n                scoreToBeat = currentScore;\n                bestMoment = tempConfig;\n            }\n        }\n    }\n\n    extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n    if (config._d) {\n        return;\n    }\n\n    var i = normalizeObjectUnits(config._i),\n        dayOrDate = i.day === undefined ? i.date : i.day;\n    config._a = map(\n        [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n        function (obj) {\n            return obj && parseInt(obj, 10);\n        }\n    );\n\n    configFromArray(config);\n}\n\nfunction createFromConfig(config) {\n    var res = new Moment(checkOverflow(prepareConfig(config)));\n    if (res._nextDay) {\n        // Adding is smart enough around DST\n        res.add(1, 'd');\n        res._nextDay = undefined;\n    }\n\n    return res;\n}\n\nfunction prepareConfig(config) {\n    var input = config._i,\n        format = config._f;\n\n    config._locale = config._locale || getLocale(config._l);\n\n    if (input === null || (format === undefined && input === '')) {\n        return createInvalid({ nullInput: true });\n    }\n\n    if (typeof input === 'string') {\n        config._i = input = config._locale.preparse(input);\n    }\n\n    if (isMoment(input)) {\n        return new Moment(checkOverflow(input));\n    } else if (isDate(input)) {\n        config._d = input;\n    } else if (isArray(format)) {\n        configFromStringAndArray(config);\n    } else if (format) {\n        configFromStringAndFormat(config);\n    } else {\n        configFromInput(config);\n    }\n\n    if (!isValid(config)) {\n        config._d = null;\n    }\n\n    return config;\n}\n\nfunction configFromInput(config) {\n    var input = config._i;\n    if (isUndefined(input)) {\n        config._d = new Date(hooks.now());\n    } else if (isDate(input)) {\n        config._d = new Date(input.valueOf());\n    } else if (typeof input === 'string') {\n        configFromString(config);\n    } else if (isArray(input)) {\n        config._a = map(input.slice(0), function (obj) {\n            return parseInt(obj, 10);\n        });\n        configFromArray(config);\n    } else if (isObject(input)) {\n        configFromObject(config);\n    } else if (isNumber(input)) {\n        // from milliseconds\n        config._d = new Date(input);\n    } else {\n        hooks.createFromInputFallback(config);\n    }\n}\n\nfunction createLocalOrUTC(input, format, locale, strict, isUTC) {\n    var c = {};\n\n    if (format === true || format === false) {\n        strict = format;\n        format = undefined;\n    }\n\n    if (locale === true || locale === false) {\n        strict = locale;\n        locale = undefined;\n    }\n\n    if (\n        (isObject(input) && isObjectEmpty(input)) ||\n        (isArray(input) && input.length === 0)\n    ) {\n        input = undefined;\n    }\n    // object construction must be done this way.\n    // https://github.com/moment/moment/issues/1423\n    c._isAMomentObject = true;\n    c._useUTC = c._isUTC = isUTC;\n    c._l = locale;\n    c._i = input;\n    c._f = format;\n    c._strict = strict;\n\n    return createFromConfig(c);\n}\n\nfunction createLocal(input, format, locale, strict) {\n    return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other < this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    ),\n    prototypeMax = deprecate(\n        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other > this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n    var res, i;\n    if (moments.length === 1 && isArray(moments[0])) {\n        moments = moments[0];\n    }\n    if (!moments.length) {\n        return createLocal();\n    }\n    res = moments[0];\n    for (i = 1; i < moments.length; ++i) {\n        if (!moments[i].isValid() || moments[i][fn](res)) {\n            res = moments[i];\n        }\n    }\n    return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min() {\n    var args = [].slice.call(arguments, 0);\n\n    return pickBy('isBefore', args);\n}\n\nfunction max() {\n    var args = [].slice.call(arguments, 0);\n\n    return pickBy('isAfter', args);\n}\n\nvar now = function () {\n    return Date.now ? Date.now() : +new Date();\n};\n\nvar ordering = [\n    'year',\n    'quarter',\n    'month',\n    'week',\n    'day',\n    'hour',\n    'minute',\n    'second',\n    'millisecond',\n];\n\nfunction isDurationValid(m) {\n    var key,\n        unitHasDecimal = false,\n        i,\n        orderLen = ordering.length;\n    for (key in m) {\n        if (\n            hasOwnProp(m, key) &&\n            !(\n                indexOf.call(ordering, key) !== -1 &&\n                (m[key] == null || !isNaN(m[key]))\n            )\n        ) {\n            return false;\n        }\n    }\n\n    for (i = 0; i < orderLen; ++i) {\n        if (m[ordering[i]]) {\n            if (unitHasDecimal) {\n                return false; // only allow non-integers for smallest unit\n            }\n            if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                unitHasDecimal = true;\n            }\n        }\n    }\n\n    return true;\n}\n\nfunction isValid$1() {\n    return this._isValid;\n}\n\nfunction createInvalid$1() {\n    return createDuration(NaN);\n}\n\nfunction Duration(duration) {\n    var normalizedInput = normalizeObjectUnits(duration),\n        years = normalizedInput.year || 0,\n        quarters = normalizedInput.quarter || 0,\n        months = normalizedInput.month || 0,\n        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n        days = normalizedInput.day || 0,\n        hours = normalizedInput.hour || 0,\n        minutes = normalizedInput.minute || 0,\n        seconds = normalizedInput.second || 0,\n        milliseconds = normalizedInput.millisecond || 0;\n\n    this._isValid = isDurationValid(normalizedInput);\n\n    // representation for dateAddRemove\n    this._milliseconds =\n        +milliseconds +\n        seconds * 1e3 + // 1000\n        minutes * 6e4 + // 1000 * 60\n        hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n    // Because of dateAddRemove treats 24 hours as different from a\n    // day when working around DST, we need to store them separately\n    this._days = +days + weeks * 7;\n    // It is impossible to translate months into days without knowing\n    // which months you are are talking about, so we have to store\n    // it separately.\n    this._months = +months + quarters * 3 + years * 12;\n\n    this._data = {};\n\n    this._locale = getLocale();\n\n    this._bubble();\n}\n\nfunction isDuration(obj) {\n    return obj instanceof Duration;\n}\n\nfunction absRound(number) {\n    if (number < 0) {\n        return Math.round(-1 * number) * -1;\n    } else {\n        return Math.round(number);\n    }\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n    var len = Math.min(array1.length, array2.length),\n        lengthDiff = Math.abs(array1.length - array2.length),\n        diffs = 0,\n        i;\n    for (i = 0; i < len; i++) {\n        if (\n            (dontConvert && array1[i] !== array2[i]) ||\n            (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n        ) {\n            diffs++;\n        }\n    }\n    return diffs + lengthDiff;\n}\n\n// FORMATTING\n\nfunction offset(token, separator) {\n    addFormatToken(token, 0, 0, function () {\n        var offset = this.utcOffset(),\n            sign = '+';\n        if (offset < 0) {\n            offset = -offset;\n            sign = '-';\n        }\n        return (\n            sign +\n            zeroFill(~~(offset / 60), 2) +\n            separator +\n            zeroFill(~~offset % 60, 2)\n        );\n    });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n    config._useUTC = true;\n    config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10',  '00']\n// '-1530'  > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n    var matches = (string || '').match(matcher),\n        chunk,\n        parts,\n        minutes;\n\n    if (matches === null) {\n        return null;\n    }\n\n    chunk = matches[matches.length - 1] || [];\n    parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n    minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n    var res, diff;\n    if (model._isUTC) {\n        res = model.clone();\n        diff =\n            (isMoment(input) || isDate(input)\n                ? input.valueOf()\n                : createLocal(input).valueOf()) - res.valueOf();\n        // Use low-level api, because this fn is low-level api.\n        res._d.setTime(res._d.valueOf() + diff);\n        hooks.updateOffset(res, false);\n        return res;\n    } else {\n        return createLocal(input).local();\n    }\n}\n\nfunction getDateOffset(m) {\n    // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n    // https://github.com/moment/moment/pull/1871\n    return -Math.round(m._d.getTimezoneOffset());\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset(input, keepLocalTime, keepMinutes) {\n    var offset = this._offset || 0,\n        localAdjust;\n    if (!this.isValid()) {\n        return input != null ? this : NaN;\n    }\n    if (input != null) {\n        if (typeof input === 'string') {\n            input = offsetFromString(matchShortOffset, input);\n            if (input === null) {\n                return this;\n            }\n        } else if (Math.abs(input) < 16 && !keepMinutes) {\n            input = input * 60;\n        }\n        if (!this._isUTC && keepLocalTime) {\n            localAdjust = getDateOffset(this);\n        }\n        this._offset = input;\n        this._isUTC = true;\n        if (localAdjust != null) {\n            this.add(localAdjust, 'm');\n        }\n        if (offset !== input) {\n            if (!keepLocalTime || this._changeInProgress) {\n                addSubtract(\n                    this,\n                    createDuration(input - offset, 'm'),\n                    1,\n                    false\n                );\n            } else if (!this._changeInProgress) {\n                this._changeInProgress = true;\n                hooks.updateOffset(this, true);\n                this._changeInProgress = null;\n            }\n        }\n        return this;\n    } else {\n        return this._isUTC ? offset : getDateOffset(this);\n    }\n}\n\nfunction getSetZone(input, keepLocalTime) {\n    if (input != null) {\n        if (typeof input !== 'string') {\n            input = -input;\n        }\n\n        this.utcOffset(input, keepLocalTime);\n\n        return this;\n    } else {\n        return -this.utcOffset();\n    }\n}\n\nfunction setOffsetToUTC(keepLocalTime) {\n    return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal(keepLocalTime) {\n    if (this._isUTC) {\n        this.utcOffset(0, keepLocalTime);\n        this._isUTC = false;\n\n        if (keepLocalTime) {\n            this.subtract(getDateOffset(this), 'm');\n        }\n    }\n    return this;\n}\n\nfunction setOffsetToParsedOffset() {\n    if (this._tzm != null) {\n        this.utcOffset(this._tzm, false, true);\n    } else if (typeof this._i === 'string') {\n        var tZone = offsetFromString(matchOffset, this._i);\n        if (tZone != null) {\n            this.utcOffset(tZone);\n        } else {\n            this.utcOffset(0, true);\n        }\n    }\n    return this;\n}\n\nfunction hasAlignedHourOffset(input) {\n    if (!this.isValid()) {\n        return false;\n    }\n    input = input ? createLocal(input).utcOffset() : 0;\n\n    return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime() {\n    return (\n        this.utcOffset() > this.clone().month(0).utcOffset() ||\n        this.utcOffset() > this.clone().month(5).utcOffset()\n    );\n}\n\nfunction isDaylightSavingTimeShifted() {\n    if (!isUndefined(this._isDSTShifted)) {\n        return this._isDSTShifted;\n    }\n\n    var c = {},\n        other;\n\n    copyConfig(c, this);\n    c = prepareConfig(c);\n\n    if (c._a) {\n        other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n        this._isDSTShifted =\n            this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n    } else {\n        this._isDSTShifted = false;\n    }\n\n    return this._isDSTShifted;\n}\n\nfunction isLocal() {\n    return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset() {\n    return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc() {\n    return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n    // and further modified to allow for strings containing both week and day\n    isoRegex =\n        /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\nfunction createDuration(input, key) {\n    var duration = input,\n        // matching against regexp is expensive, do it on demand\n        match = null,\n        sign,\n        ret,\n        diffRes;\n\n    if (isDuration(input)) {\n        duration = {\n            ms: input._milliseconds,\n            d: input._days,\n            M: input._months,\n        };\n    } else if (isNumber(input) || !isNaN(+input)) {\n        duration = {};\n        if (key) {\n            duration[key] = +input;\n        } else {\n            duration.milliseconds = +input;\n        }\n    } else if ((match = aspNetRegex.exec(input))) {\n        sign = match[1] === '-' ? -1 : 1;\n        duration = {\n            y: 0,\n            d: toInt(match[DATE]) * sign,\n            h: toInt(match[HOUR]) * sign,\n            m: toInt(match[MINUTE]) * sign,\n            s: toInt(match[SECOND]) * sign,\n            ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n        };\n    } else if ((match = isoRegex.exec(input))) {\n        sign = match[1] === '-' ? -1 : 1;\n        duration = {\n            y: parseIso(match[2], sign),\n            M: parseIso(match[3], sign),\n            w: parseIso(match[4], sign),\n            d: parseIso(match[5], sign),\n            h: parseIso(match[6], sign),\n            m: parseIso(match[7], sign),\n            s: parseIso(match[8], sign),\n        };\n    } else if (duration == null) {\n        // checks for null or undefined\n        duration = {};\n    } else if (\n        typeof duration === 'object' &&\n        ('from' in duration || 'to' in duration)\n    ) {\n        diffRes = momentsDifference(\n            createLocal(duration.from),\n            createLocal(duration.to)\n        );\n\n        duration = {};\n        duration.ms = diffRes.milliseconds;\n        duration.M = diffRes.months;\n    }\n\n    ret = new Duration(duration);\n\n    if (isDuration(input) && hasOwnProp(input, '_locale')) {\n        ret._locale = input._locale;\n    }\n\n    if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n        ret._isValid = input._isValid;\n    }\n\n    return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso(inp, sign) {\n    // We'd normally use ~~inp for this, but unfortunately it also\n    // converts floats to ints.\n    // inp may be undefined, so careful calling replace on it.\n    var res = inp && parseFloat(inp.replace(',', '.'));\n    // apply sign while we're at it\n    return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n    var res = {};\n\n    res.months =\n        other.month() - base.month() + (other.year() - base.year()) * 12;\n    if (base.clone().add(res.months, 'M').isAfter(other)) {\n        --res.months;\n    }\n\n    res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n    return res;\n}\n\nfunction momentsDifference(base, other) {\n    var res;\n    if (!(base.isValid() && other.isValid())) {\n        return { milliseconds: 0, months: 0 };\n    }\n\n    other = cloneWithOffset(other, base);\n    if (base.isBefore(other)) {\n        res = positiveMomentsDifference(base, other);\n    } else {\n        res = positiveMomentsDifference(other, base);\n        res.milliseconds = -res.milliseconds;\n        res.months = -res.months;\n    }\n\n    return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n    return function (val, period) {\n        var dur, tmp;\n        //invert the arguments, but complain about it\n        if (period !== null && !isNaN(+period)) {\n            deprecateSimple(\n                name,\n                'moment().' +\n                    name +\n                    '(period, number) is deprecated. Please use moment().' +\n                    name +\n                    '(number, period). ' +\n                    'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n            );\n            tmp = val;\n            val = period;\n            period = tmp;\n        }\n\n        dur = createDuration(val, period);\n        addSubtract(this, dur, direction);\n        return this;\n    };\n}\n\nfunction addSubtract(mom, duration, isAdding, updateOffset) {\n    var milliseconds = duration._milliseconds,\n        days = absRound(duration._days),\n        months = absRound(duration._months);\n\n    if (!mom.isValid()) {\n        // No op\n        return;\n    }\n\n    updateOffset = updateOffset == null ? true : updateOffset;\n\n    if (months) {\n        setMonth(mom, get(mom, 'Month') + months * isAdding);\n    }\n    if (days) {\n        set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n    }\n    if (milliseconds) {\n        mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n    }\n    if (updateOffset) {\n        hooks.updateOffset(mom, days || months);\n    }\n}\n\nvar add = createAdder(1, 'add'),\n    subtract = createAdder(-1, 'subtract');\n\nfunction isString(input) {\n    return typeof input === 'string' || input instanceof String;\n}\n\n// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\nfunction isMomentInput(input) {\n    return (\n        isMoment(input) ||\n        isDate(input) ||\n        isString(input) ||\n        isNumber(input) ||\n        isNumberOrStringArray(input) ||\n        isMomentInputObject(input) ||\n        input === null ||\n        input === undefined\n    );\n}\n\nfunction isMomentInputObject(input) {\n    var objectTest = isObject(input) && !isObjectEmpty(input),\n        propertyTest = false,\n        properties = [\n            'years',\n            'year',\n            'y',\n            'months',\n            'month',\n            'M',\n            'days',\n            'day',\n            'd',\n            'dates',\n            'date',\n            'D',\n            'hours',\n            'hour',\n            'h',\n            'minutes',\n            'minute',\n            'm',\n            'seconds',\n            'second',\n            's',\n            'milliseconds',\n            'millisecond',\n            'ms',\n        ],\n        i,\n        property,\n        propertyLen = properties.length;\n\n    for (i = 0; i < propertyLen; i += 1) {\n        property = properties[i];\n        propertyTest = propertyTest || hasOwnProp(input, property);\n    }\n\n    return objectTest && propertyTest;\n}\n\nfunction isNumberOrStringArray(input) {\n    var arrayTest = isArray(input),\n        dataTypeTest = false;\n    if (arrayTest) {\n        dataTypeTest =\n            input.filter(function (item) {\n                return !isNumber(item) && isString(input);\n            }).length === 0;\n    }\n    return arrayTest && dataTypeTest;\n}\n\nfunction isCalendarSpec(input) {\n    var objectTest = isObject(input) && !isObjectEmpty(input),\n        propertyTest = false,\n        properties = [\n            'sameDay',\n            'nextDay',\n            'lastDay',\n            'nextWeek',\n            'lastWeek',\n            'sameElse',\n        ],\n        i,\n        property;\n\n    for (i = 0; i < properties.length; i += 1) {\n        property = properties[i];\n        propertyTest = propertyTest || hasOwnProp(input, property);\n    }\n\n    return objectTest && propertyTest;\n}\n\nfunction getCalendarFormat(myMoment, now) {\n    var diff = myMoment.diff(now, 'days', true);\n    return diff < -6\n        ? 'sameElse'\n        : diff < -1\n          ? 'lastWeek'\n          : diff < 0\n            ? 'lastDay'\n            : diff < 1\n              ? 'sameDay'\n              : diff < 2\n                ? 'nextDay'\n                : diff < 7\n                  ? 'nextWeek'\n                  : 'sameElse';\n}\n\nfunction calendar$1(time, formats) {\n    // Support for single parameter, formats only overload to the calendar function\n    if (arguments.length === 1) {\n        if (!arguments[0]) {\n            time = undefined;\n            formats = undefined;\n        } else if (isMomentInput(arguments[0])) {\n            time = arguments[0];\n            formats = undefined;\n        } else if (isCalendarSpec(arguments[0])) {\n            formats = arguments[0];\n            time = undefined;\n        }\n    }\n    // We want to compare the start of today, vs this.\n    // Getting start-of-today depends on whether we're local/utc/offset or not.\n    var now = time || createLocal(),\n        sod = cloneWithOffset(now, this).startOf('day'),\n        format = hooks.calendarFormat(this, sod) || 'sameElse',\n        output =\n            formats &&\n            (isFunction(formats[format])\n                ? formats[format].call(this, now)\n                : formats[format]);\n\n    return this.format(\n        output || this.localeData().calendar(format, this, createLocal(now))\n    );\n}\n\nfunction clone() {\n    return new Moment(this);\n}\n\nfunction isAfter(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n    if (!(this.isValid() && localInput.isValid())) {\n        return false;\n    }\n    units = normalizeUnits(units) || 'millisecond';\n    if (units === 'millisecond') {\n        return this.valueOf() > localInput.valueOf();\n    } else {\n        return localInput.valueOf() < this.clone().startOf(units).valueOf();\n    }\n}\n\nfunction isBefore(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input);\n    if (!(this.isValid() && localInput.isValid())) {\n        return false;\n    }\n    units = normalizeUnits(units) || 'millisecond';\n    if (units === 'millisecond') {\n        return this.valueOf() < localInput.valueOf();\n    } else {\n        return this.clone().endOf(units).valueOf() < localInput.valueOf();\n    }\n}\n\nfunction isBetween(from, to, units, inclusivity) {\n    var localFrom = isMoment(from) ? from : createLocal(from),\n        localTo = isMoment(to) ? to : createLocal(to);\n    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n        return false;\n    }\n    inclusivity = inclusivity || '()';\n    return (\n        (inclusivity[0] === '('\n            ? this.isAfter(localFrom, units)\n            : !this.isBefore(localFrom, units)) &&\n        (inclusivity[1] === ')'\n            ? this.isBefore(localTo, units)\n            : !this.isAfter(localTo, units))\n    );\n}\n\nfunction isSame(input, units) {\n    var localInput = isMoment(input) ? input : createLocal(input),\n        inputMs;\n    if (!(this.isValid() && localInput.isValid())) {\n        return false;\n    }\n    units = normalizeUnits(units) || 'millisecond';\n    if (units === 'millisecond') {\n        return this.valueOf() === localInput.valueOf();\n    } else {\n        inputMs = localInput.valueOf();\n        return (\n            this.clone().startOf(units).valueOf() <= inputMs &&\n            inputMs <= this.clone().endOf(units).valueOf()\n        );\n    }\n}\n\nfunction isSameOrAfter(input, units) {\n    return this.isSame(input, units) || this.isAfter(input, units);\n}\n\nfunction isSameOrBefore(input, units) {\n    return this.isSame(input, units) || this.isBefore(input, units);\n}\n\nfunction diff(input, units, asFloat) {\n    var that, zoneDelta, output;\n\n    if (!this.isValid()) {\n        return NaN;\n    }\n\n    that = cloneWithOffset(input, this);\n\n    if (!that.isValid()) {\n        return NaN;\n    }\n\n    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n    units = normalizeUnits(units);\n\n    switch (units) {\n        case 'year':\n            output = monthDiff(this, that) / 12;\n            break;\n        case 'month':\n            output = monthDiff(this, that);\n            break;\n        case 'quarter':\n            output = monthDiff(this, that) / 3;\n            break;\n        case 'second':\n            output = (this - that) / 1e3;\n            break; // 1000\n        case 'minute':\n            output = (this - that) / 6e4;\n            break; // 1000 * 60\n        case 'hour':\n            output = (this - that) / 36e5;\n            break; // 1000 * 60 * 60\n        case 'day':\n            output = (this - that - zoneDelta) / 864e5;\n            break; // 1000 * 60 * 60 * 24, negate dst\n        case 'week':\n            output = (this - that - zoneDelta) / 6048e5;\n            break; // 1000 * 60 * 60 * 24 * 7, negate dst\n        default:\n            output = this - that;\n    }\n\n    return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff(a, b) {\n    if (a.date() < b.date()) {\n        // end-of-month calculations work correct when the start month has more\n        // days than the end month.\n        return -monthDiff(b, a);\n    }\n    // difference in months\n    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n        // b is in (anchor - 1 month, anchor + 1 month)\n        anchor = a.clone().add(wholeMonthDiff, 'months'),\n        anchor2,\n        adjust;\n\n    if (b - anchor < 0) {\n        anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n        // linear across the month\n        adjust = (b - anchor) / (anchor - anchor2);\n    } else {\n        anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n        // linear across the month\n        adjust = (b - anchor) / (anchor2 - anchor);\n    }\n\n    //check for negative zero, return zero if negative zero\n    return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString() {\n    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString(keepOffset) {\n    if (!this.isValid()) {\n        return null;\n    }\n    var utc = keepOffset !== true,\n        m = utc ? this.clone().utc() : this;\n    if (m.year() < 0 || m.year() > 9999) {\n        return formatMoment(\n            m,\n            utc\n                ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n    if (isFunction(Date.prototype.toISOString)) {\n        // native implementation is ~50x faster, use it when we can\n        if (utc) {\n            return this.toDate().toISOString();\n        } else {\n            return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                .toISOString()\n                .replace('Z', formatMoment(m, 'Z'));\n        }\n    }\n    return formatMoment(\n        m,\n        utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n    );\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect() {\n    if (!this.isValid()) {\n        return 'moment.invalid(/* ' + this._i + ' */)';\n    }\n    var func = 'moment',\n        zone = '',\n        prefix,\n        year,\n        datetime,\n        suffix;\n    if (!this.isLocal()) {\n        func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n        zone = 'Z';\n    }\n    prefix = '[' + func + '(\"]';\n    year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n    datetime = '-MM-DD[T]HH:mm:ss.SSS';\n    suffix = zone + '[\")]';\n\n    return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format(inputString) {\n    if (!inputString) {\n        inputString = this.isUtc()\n            ? hooks.defaultFormatUtc\n            : hooks.defaultFormat;\n    }\n    var output = formatMoment(this, inputString);\n    return this.localeData().postformat(output);\n}\n\nfunction from(time, withoutSuffix) {\n    if (\n        this.isValid() &&\n        ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n    ) {\n        return createDuration({ to: this, from: time })\n            .locale(this.locale())\n            .humanize(!withoutSuffix);\n    } else {\n        return this.localeData().invalidDate();\n    }\n}\n\nfunction fromNow(withoutSuffix) {\n    return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to(time, withoutSuffix) {\n    if (\n        this.isValid() &&\n        ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n    ) {\n        return createDuration({ from: this, to: time })\n            .locale(this.locale())\n            .humanize(!withoutSuffix);\n    } else {\n        return this.localeData().invalidDate();\n    }\n}\n\nfunction toNow(withoutSuffix) {\n    return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance.  Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale(key) {\n    var newLocaleData;\n\n    if (key === undefined) {\n        return this._locale._abbr;\n    } else {\n        newLocaleData = getLocale(key);\n        if (newLocaleData != null) {\n            this._locale = newLocaleData;\n        }\n        return this;\n    }\n}\n\nvar lang = deprecate(\n    'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n    function (key) {\n        if (key === undefined) {\n            return this.localeData();\n        } else {\n            return this.locale(key);\n        }\n    }\n);\n\nfunction localeData() {\n    return this._locale;\n}\n\nvar MS_PER_SECOND = 1000,\n    MS_PER_MINUTE = 60 * MS_PER_SECOND,\n    MS_PER_HOUR = 60 * MS_PER_MINUTE,\n    MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n// actual modulo - handles negative numbers (for dates before 1970):\nfunction mod$1(dividend, divisor) {\n    return ((dividend % divisor) + divisor) % divisor;\n}\n\nfunction localStartOfDate(y, m, d) {\n    // the date constructor remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n        // preserve leap years using a full 400 year cycle, then reset\n        return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n        return new Date(y, m, d).valueOf();\n    }\n}\n\nfunction utcStartOfDate(y, m, d) {\n    // Date.UTC remaps years 0-99 to 1900-1999\n    if (y < 100 && y >= 0) {\n        // preserve leap years using a full 400 year cycle, then reset\n        return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n    } else {\n        return Date.UTC(y, m, d);\n    }\n}\n\nfunction startOf(units) {\n    var time, startOfDate;\n    units = normalizeUnits(units);\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n        return this;\n    }\n\n    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n        case 'year':\n            time = startOfDate(this.year(), 0, 1);\n            break;\n        case 'quarter':\n            time = startOfDate(\n                this.year(),\n                this.month() - (this.month() % 3),\n                1\n            );\n            break;\n        case 'month':\n            time = startOfDate(this.year(), this.month(), 1);\n            break;\n        case 'week':\n            time = startOfDate(\n                this.year(),\n                this.month(),\n                this.date() - this.weekday()\n            );\n            break;\n        case 'isoWeek':\n            time = startOfDate(\n                this.year(),\n                this.month(),\n                this.date() - (this.isoWeekday() - 1)\n            );\n            break;\n        case 'day':\n        case 'date':\n            time = startOfDate(this.year(), this.month(), this.date());\n            break;\n        case 'hour':\n            time = this._d.valueOf();\n            time -= mod$1(\n                time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                MS_PER_HOUR\n            );\n            break;\n        case 'minute':\n            time = this._d.valueOf();\n            time -= mod$1(time, MS_PER_MINUTE);\n            break;\n        case 'second':\n            time = this._d.valueOf();\n            time -= mod$1(time, MS_PER_SECOND);\n            break;\n    }\n\n    this._d.setTime(time);\n    hooks.updateOffset(this, true);\n    return this;\n}\n\nfunction endOf(units) {\n    var time, startOfDate;\n    units = normalizeUnits(units);\n    if (units === undefined || units === 'millisecond' || !this.isValid()) {\n        return this;\n    }\n\n    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n    switch (units) {\n        case 'year':\n            time = startOfDate(this.year() + 1, 0, 1) - 1;\n            break;\n        case 'quarter':\n            time =\n                startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3) + 3,\n                    1\n                ) - 1;\n            break;\n        case 'month':\n            time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n            break;\n        case 'week':\n            time =\n                startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday() + 7\n                ) - 1;\n            break;\n        case 'isoWeek':\n            time =\n                startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1) + 7\n                ) - 1;\n            break;\n        case 'day':\n        case 'date':\n            time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n            break;\n        case 'hour':\n            time = this._d.valueOf();\n            time +=\n                MS_PER_HOUR -\n                mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                ) -\n                1;\n            break;\n        case 'minute':\n            time = this._d.valueOf();\n            time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n            break;\n        case 'second':\n            time = this._d.valueOf();\n            time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n            break;\n    }\n\n    this._d.setTime(time);\n    hooks.updateOffset(this, true);\n    return this;\n}\n\nfunction valueOf() {\n    return this._d.valueOf() - (this._offset || 0) * 60000;\n}\n\nfunction unix() {\n    return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate() {\n    return new Date(this.valueOf());\n}\n\nfunction toArray() {\n    var m = this;\n    return [\n        m.year(),\n        m.month(),\n        m.date(),\n        m.hour(),\n        m.minute(),\n        m.second(),\n        m.millisecond(),\n    ];\n}\n\nfunction toObject() {\n    var m = this;\n    return {\n        years: m.year(),\n        months: m.month(),\n        date: m.date(),\n        hours: m.hours(),\n        minutes: m.minutes(),\n        seconds: m.seconds(),\n        milliseconds: m.milliseconds(),\n    };\n}\n\nfunction toJSON() {\n    // new Date(NaN).toJSON() === null\n    return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2() {\n    return isValid(this);\n}\n\nfunction parsingFlags() {\n    return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt() {\n    return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n    return {\n        input: this._i,\n        format: this._f,\n        locale: this._locale,\n        isUTC: this._isUTC,\n        strict: this._strict,\n    };\n}\n\naddFormatToken('N', 0, 0, 'eraAbbr');\naddFormatToken('NN', 0, 0, 'eraAbbr');\naddFormatToken('NNN', 0, 0, 'eraAbbr');\naddFormatToken('NNNN', 0, 0, 'eraName');\naddFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\naddFormatToken('y', ['y', 1], 'yo', 'eraYear');\naddFormatToken('y', ['yy', 2], 0, 'eraYear');\naddFormatToken('y', ['yyy', 3], 0, 'eraYear');\naddFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\naddRegexToken('N', matchEraAbbr);\naddRegexToken('NN', matchEraAbbr);\naddRegexToken('NNN', matchEraAbbr);\naddRegexToken('NNNN', matchEraName);\naddRegexToken('NNNNN', matchEraNarrow);\n\naddParseToken(\n    ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n    function (input, array, config, token) {\n        var era = config._locale.erasParse(input, token, config._strict);\n        if (era) {\n            getParsingFlags(config).era = era;\n        } else {\n            getParsingFlags(config).invalidEra = input;\n        }\n    }\n);\n\naddRegexToken('y', matchUnsigned);\naddRegexToken('yy', matchUnsigned);\naddRegexToken('yyy', matchUnsigned);\naddRegexToken('yyyy', matchUnsigned);\naddRegexToken('yo', matchEraYearOrdinal);\n\naddParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\naddParseToken(['yo'], function (input, array, config, token) {\n    var match;\n    if (config._locale._eraYearOrdinalRegex) {\n        match = input.match(config._locale._eraYearOrdinalRegex);\n    }\n\n    if (config._locale.eraYearOrdinalParse) {\n        array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n    } else {\n        array[YEAR] = parseInt(input, 10);\n    }\n});\n\nfunction localeEras(m, format) {\n    var i,\n        l,\n        date,\n        eras = this._eras || getLocale('en')._eras;\n    for (i = 0, l = eras.length; i < l; ++i) {\n        switch (typeof eras[i].since) {\n            case 'string':\n                // truncate time\n                date = hooks(eras[i].since).startOf('day');\n                eras[i].since = date.valueOf();\n                break;\n        }\n\n        switch (typeof eras[i].until) {\n            case 'undefined':\n                eras[i].until = +Infinity;\n                break;\n            case 'string':\n                // truncate time\n                date = hooks(eras[i].until).startOf('day').valueOf();\n                eras[i].until = date.valueOf();\n                break;\n        }\n    }\n    return eras;\n}\n\nfunction localeErasParse(eraName, format, strict) {\n    var i,\n        l,\n        eras = this.eras(),\n        name,\n        abbr,\n        narrow;\n    eraName = eraName.toUpperCase();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n        name = eras[i].name.toUpperCase();\n        abbr = eras[i].abbr.toUpperCase();\n        narrow = eras[i].narrow.toUpperCase();\n\n        if (strict) {\n            switch (format) {\n                case 'N':\n                case 'NN':\n                case 'NNN':\n                    if (abbr === eraName) {\n                        return eras[i];\n                    }\n                    break;\n\n                case 'NNNN':\n                    if (name === eraName) {\n                        return eras[i];\n                    }\n                    break;\n\n                case 'NNNNN':\n                    if (narrow === eraName) {\n                        return eras[i];\n                    }\n                    break;\n            }\n        } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n            return eras[i];\n        }\n    }\n}\n\nfunction localeErasConvertYear(era, year) {\n    var dir = era.since <= era.until ? +1 : -1;\n    if (year === undefined) {\n        return hooks(era.since).year();\n    } else {\n        return hooks(era.since).year() + (year - era.offset) * dir;\n    }\n}\n\nfunction getEraName() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n    for (i = 0, l = eras.length; i < l; ++i) {\n        // truncate time\n        val = this.clone().startOf('day').valueOf();\n\n        if (eras[i].since <= val && val <= eras[i].until) {\n            return eras[i].name;\n        }\n        if (eras[i].until <= val && val <= eras[i].since) {\n            return eras[i].name;\n        }\n    }\n\n    return '';\n}\n\nfunction getEraNarrow() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n    for (i = 0, l = eras.length; i < l; ++i) {\n        // truncate time\n        val = this.clone().startOf('day').valueOf();\n\n        if (eras[i].since <= val && val <= eras[i].until) {\n            return eras[i].narrow;\n        }\n        if (eras[i].until <= val && val <= eras[i].since) {\n            return eras[i].narrow;\n        }\n    }\n\n    return '';\n}\n\nfunction getEraAbbr() {\n    var i,\n        l,\n        val,\n        eras = this.localeData().eras();\n    for (i = 0, l = eras.length; i < l; ++i) {\n        // truncate time\n        val = this.clone().startOf('day').valueOf();\n\n        if (eras[i].since <= val && val <= eras[i].until) {\n            return eras[i].abbr;\n        }\n        if (eras[i].until <= val && val <= eras[i].since) {\n            return eras[i].abbr;\n        }\n    }\n\n    return '';\n}\n\nfunction getEraYear() {\n    var i,\n        l,\n        dir,\n        val,\n        eras = this.localeData().eras();\n    for (i = 0, l = eras.length; i < l; ++i) {\n        dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n        // truncate time\n        val = this.clone().startOf('day').valueOf();\n\n        if (\n            (eras[i].since <= val && val <= eras[i].until) ||\n            (eras[i].until <= val && val <= eras[i].since)\n        ) {\n            return (\n                (this.year() - hooks(eras[i].since).year()) * dir +\n                eras[i].offset\n            );\n        }\n    }\n\n    return this.year();\n}\n\nfunction erasNameRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasNameRegex')) {\n        computeErasParse.call(this);\n    }\n    return isStrict ? this._erasNameRegex : this._erasRegex;\n}\n\nfunction erasAbbrRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasAbbrRegex')) {\n        computeErasParse.call(this);\n    }\n    return isStrict ? this._erasAbbrRegex : this._erasRegex;\n}\n\nfunction erasNarrowRegex(isStrict) {\n    if (!hasOwnProp(this, '_erasNarrowRegex')) {\n        computeErasParse.call(this);\n    }\n    return isStrict ? this._erasNarrowRegex : this._erasRegex;\n}\n\nfunction matchEraAbbr(isStrict, locale) {\n    return locale.erasAbbrRegex(isStrict);\n}\n\nfunction matchEraName(isStrict, locale) {\n    return locale.erasNameRegex(isStrict);\n}\n\nfunction matchEraNarrow(isStrict, locale) {\n    return locale.erasNarrowRegex(isStrict);\n}\n\nfunction matchEraYearOrdinal(isStrict, locale) {\n    return locale._eraYearOrdinalRegex || matchUnsigned;\n}\n\nfunction computeErasParse() {\n    var abbrPieces = [],\n        namePieces = [],\n        narrowPieces = [],\n        mixedPieces = [],\n        i,\n        l,\n        erasName,\n        erasAbbr,\n        erasNarrow,\n        eras = this.eras();\n\n    for (i = 0, l = eras.length; i < l; ++i) {\n        erasName = regexEscape(eras[i].name);\n        erasAbbr = regexEscape(eras[i].abbr);\n        erasNarrow = regexEscape(eras[i].narrow);\n\n        namePieces.push(erasName);\n        abbrPieces.push(erasAbbr);\n        narrowPieces.push(erasNarrow);\n        mixedPieces.push(erasName);\n        mixedPieces.push(erasAbbr);\n        mixedPieces.push(erasNarrow);\n    }\n\n    this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n    this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n    this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n    this._erasNarrowRegex = new RegExp(\n        '^(' + narrowPieces.join('|') + ')',\n        'i'\n    );\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n    return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n    return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken(token, getter) {\n    addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(\n    ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n    function (input, week, config, token) {\n        week[token.substr(0, 2)] = toInt(input);\n    }\n);\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n    week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear(input) {\n    return getSetWeekYearHelper.call(\n        this,\n        input,\n        this.week(),\n        this.weekday() + this.localeData()._week.dow,\n        this.localeData()._week.dow,\n        this.localeData()._week.doy\n    );\n}\n\nfunction getSetISOWeekYear(input) {\n    return getSetWeekYearHelper.call(\n        this,\n        input,\n        this.isoWeek(),\n        this.isoWeekday(),\n        1,\n        4\n    );\n}\n\nfunction getISOWeeksInYear() {\n    return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getISOWeeksInISOWeekYear() {\n    return weeksInYear(this.isoWeekYear(), 1, 4);\n}\n\nfunction getWeeksInYear() {\n    var weekInfo = this.localeData()._week;\n    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getWeeksInWeekYear() {\n    var weekInfo = this.localeData()._week;\n    return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n    var weeksTarget;\n    if (input == null) {\n        return weekOfYear(this, dow, doy).year;\n    } else {\n        weeksTarget = weeksInYear(input, dow, doy);\n        if (week > weeksTarget) {\n            week = weeksTarget;\n        }\n        return setWeekAll.call(this, input, week, weekday, dow, doy);\n    }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n    this.year(date.getUTCFullYear());\n    this.month(date.getUTCMonth());\n    this.date(date.getUTCDate());\n    return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n    array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter(input) {\n    return input == null\n        ? Math.ceil((this.month() + 1) / 3)\n        : this.month((input - 1) * 3 + (this.month() % 3));\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// PARSING\n\naddRegexToken('D', match1to2, match1to2NoLeadingZero);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n    // TODO: Remove \"ordinalParse\" fallback in next major release.\n    return isStrict\n        ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n        : locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n    array[DATE] = toInt(input.match(match1to2)[0]);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n    config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear(input) {\n    var dayOfYear =\n        Math.round(\n            (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n        ) + 1;\n    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// PARSING\n\naddRegexToken('m', match1to2, match1to2HasZero);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// PARSING\n\naddRegexToken('s', match1to2, match1to2HasZero);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n    return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n    return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n    return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n    return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n    return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n    return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n    return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n    return this.millisecond() * 1000000;\n});\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token, getSetMillisecond;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n    addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n    array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n    addParseToken(token, parseMs);\n}\n\ngetSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr() {\n    return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName() {\n    return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nif (typeof Symbol !== 'undefined' && Symbol.for != null) {\n    proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n        return 'Moment<' + this.format() + '>';\n    };\n}\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\nproto.eraName = getEraName;\nproto.eraNarrow = getEraNarrow;\nproto.eraAbbr = getEraAbbr;\nproto.eraYear = getEraYear;\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\nproto.quarter = proto.quarters = getSetQuarter;\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.weeksInWeekYear = getWeeksInWeekYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\nproto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\nproto.hour = proto.hours = getSetHour;\nproto.minute = proto.minutes = getSetMinute;\nproto.second = proto.seconds = getSetSecond;\nproto.millisecond = proto.milliseconds = getSetMillisecond;\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\nproto.dates = deprecate(\n    'dates accessor is deprecated. Use date instead.',\n    getSetDayOfMonth\n);\nproto.months = deprecate(\n    'months accessor is deprecated. Use month instead',\n    getSetMonth\n);\nproto.years = deprecate(\n    'years accessor is deprecated. Use year instead',\n    getSetYear\n);\nproto.zone = deprecate(\n    'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n    getSetZone\n);\nproto.isDSTShifted = deprecate(\n    'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n    isDaylightSavingTimeShifted\n);\n\nfunction createUnix(input) {\n    return createLocal(input * 1000);\n}\n\nfunction createInZone() {\n    return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat(string) {\n    return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\nproto$1.eras = localeEras;\nproto$1.erasParse = localeErasParse;\nproto$1.erasConvertYear = localeErasConvertYear;\nproto$1.erasAbbrRegex = erasAbbrRegex;\nproto$1.erasNameRegex = erasNameRegex;\nproto$1.erasNarrowRegex = erasNarrowRegex;\n\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1(format, index, field, setter) {\n    var locale = getLocale(),\n        utc = createUTC().set(setter, index);\n    return locale[field](utc, format);\n}\n\nfunction listMonthsImpl(format, index, field) {\n    if (isNumber(format)) {\n        index = format;\n        format = undefined;\n    }\n\n    format = format || '';\n\n    if (index != null) {\n        return get$1(format, index, field, 'month');\n    }\n\n    var i,\n        out = [];\n    for (i = 0; i < 12; i++) {\n        out[i] = get$1(format, i, field, 'month');\n    }\n    return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl(localeSorted, format, index, field) {\n    if (typeof localeSorted === 'boolean') {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n    } else {\n        format = localeSorted;\n        index = format;\n        localeSorted = false;\n\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n    }\n\n    var locale = getLocale(),\n        shift = localeSorted ? locale._week.dow : 0,\n        i,\n        out = [];\n\n    if (index != null) {\n        return get$1(format, (index + shift) % 7, field, 'day');\n    }\n\n    for (i = 0; i < 7; i++) {\n        out[i] = get$1(format, (i + shift) % 7, field, 'day');\n    }\n    return out;\n}\n\nfunction listMonths(format, index) {\n    return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort(format, index) {\n    return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin(localeSorted, format, index) {\n    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n    eras: [\n        {\n            since: '0001-01-01',\n            until: +Infinity,\n            offset: 1,\n            name: 'Anno Domini',\n            narrow: 'AD',\n            abbr: 'AD',\n        },\n        {\n            since: '0000-12-31',\n            until: -Infinity,\n            offset: 1,\n            name: 'Before Christ',\n            narrow: 'BC',\n            abbr: 'BC',\n        },\n    ],\n    dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n    ordinal: function (number) {\n        var b = number % 10,\n            output =\n                toInt((number % 100) / 10) === 1\n                    ? 'th'\n                    : b === 1\n                      ? 'st'\n                      : b === 2\n                        ? 'nd'\n                        : b === 3\n                          ? 'rd'\n                          : 'th';\n        return number + output;\n    },\n});\n\n// Side effect imports\n\nhooks.lang = deprecate(\n    'moment.lang is deprecated. Use moment.locale instead.',\n    getSetGlobalLocale\n);\nhooks.langData = deprecate(\n    'moment.langData is deprecated. Use moment.localeData instead.',\n    getLocale\n);\n\nvar mathAbs = Math.abs;\n\nfunction abs() {\n    var data = this._data;\n\n    this._milliseconds = mathAbs(this._milliseconds);\n    this._days = mathAbs(this._days);\n    this._months = mathAbs(this._months);\n\n    data.milliseconds = mathAbs(data.milliseconds);\n    data.seconds = mathAbs(data.seconds);\n    data.minutes = mathAbs(data.minutes);\n    data.hours = mathAbs(data.hours);\n    data.months = mathAbs(data.months);\n    data.years = mathAbs(data.years);\n\n    return this;\n}\n\nfunction addSubtract$1(duration, input, value, direction) {\n    var other = createDuration(input, value);\n\n    duration._milliseconds += direction * other._milliseconds;\n    duration._days += direction * other._days;\n    duration._months += direction * other._months;\n\n    return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1(input, value) {\n    return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1(input, value) {\n    return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil(number) {\n    if (number < 0) {\n        return Math.floor(number);\n    } else {\n        return Math.ceil(number);\n    }\n}\n\nfunction bubble() {\n    var milliseconds = this._milliseconds,\n        days = this._days,\n        months = this._months,\n        data = this._data,\n        seconds,\n        minutes,\n        hours,\n        years,\n        monthsFromDays;\n\n    // if we have a mix of positive and negative values, bubble down first\n    // check: https://github.com/moment/moment/issues/2166\n    if (\n        !(\n            (milliseconds >= 0 && days >= 0 && months >= 0) ||\n            (milliseconds <= 0 && days <= 0 && months <= 0)\n        )\n    ) {\n        milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n        days = 0;\n        months = 0;\n    }\n\n    // The following code bubbles up values, see the tests for\n    // examples of what that means.\n    data.milliseconds = milliseconds % 1000;\n\n    seconds = absFloor(milliseconds / 1000);\n    data.seconds = seconds % 60;\n\n    minutes = absFloor(seconds / 60);\n    data.minutes = minutes % 60;\n\n    hours = absFloor(minutes / 60);\n    data.hours = hours % 24;\n\n    days += absFloor(hours / 24);\n\n    // convert days to months\n    monthsFromDays = absFloor(daysToMonths(days));\n    months += monthsFromDays;\n    days -= absCeil(monthsToDays(monthsFromDays));\n\n    // 12 months -> 1 year\n    years = absFloor(months / 12);\n    months %= 12;\n\n    data.days = days;\n    data.months = months;\n    data.years = years;\n\n    return this;\n}\n\nfunction daysToMonths(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    // 400 years have 12 months === 4800\n    return (days * 4800) / 146097;\n}\n\nfunction monthsToDays(months) {\n    // the reverse of daysToMonths\n    return (months * 146097) / 4800;\n}\n\nfunction as(units) {\n    if (!this.isValid()) {\n        return NaN;\n    }\n    var days,\n        months,\n        milliseconds = this._milliseconds;\n\n    units = normalizeUnits(units);\n\n    if (units === 'month' || units === 'quarter' || units === 'year') {\n        days = this._days + milliseconds / 864e5;\n        months = this._months + daysToMonths(days);\n        switch (units) {\n            case 'month':\n                return months;\n            case 'quarter':\n                return months / 3;\n            case 'year':\n                return months / 12;\n        }\n    } else {\n        // handle milliseconds separately because of floating point math errors (issue #1867)\n        days = this._days + Math.round(monthsToDays(this._months));\n        switch (units) {\n            case 'week':\n                return days / 7 + milliseconds / 6048e5;\n            case 'day':\n                return days + milliseconds / 864e5;\n            case 'hour':\n                return days * 24 + milliseconds / 36e5;\n            case 'minute':\n                return days * 1440 + milliseconds / 6e4;\n            case 'second':\n                return days * 86400 + milliseconds / 1000;\n            // Math.floor prevents floating point math errors here\n            case 'millisecond':\n                return Math.floor(days * 864e5) + milliseconds;\n            default:\n                throw new Error('Unknown unit ' + units);\n        }\n    }\n}\n\nfunction makeAs(alias) {\n    return function () {\n        return this.as(alias);\n    };\n}\n\nvar asMilliseconds = makeAs('ms'),\n    asSeconds = makeAs('s'),\n    asMinutes = makeAs('m'),\n    asHours = makeAs('h'),\n    asDays = makeAs('d'),\n    asWeeks = makeAs('w'),\n    asMonths = makeAs('M'),\n    asQuarters = makeAs('Q'),\n    asYears = makeAs('y'),\n    valueOf$1 = asMilliseconds;\n\nfunction clone$1() {\n    return createDuration(this);\n}\n\nfunction get$2(units) {\n    units = normalizeUnits(units);\n    return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n    return function () {\n        return this.isValid() ? this._data[name] : NaN;\n    };\n}\n\nvar milliseconds = makeGetter('milliseconds'),\n    seconds = makeGetter('seconds'),\n    minutes = makeGetter('minutes'),\n    hours = makeGetter('hours'),\n    days = makeGetter('days'),\n    months = makeGetter('months'),\n    years = makeGetter('years');\n\nfunction weeks() {\n    return absFloor(this.days() / 7);\n}\n\nvar round = Math.round,\n    thresholds = {\n        ss: 44, // a few seconds to seconds\n        s: 45, // seconds to minute\n        m: 45, // minutes to hour\n        h: 22, // hours to day\n        d: 26, // days to month/week\n        w: null, // weeks to month\n        M: 11, // months to year\n    };\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n    var duration = createDuration(posNegDuration).abs(),\n        seconds = round(duration.as('s')),\n        minutes = round(duration.as('m')),\n        hours = round(duration.as('h')),\n        days = round(duration.as('d')),\n        months = round(duration.as('M')),\n        weeks = round(duration.as('w')),\n        years = round(duration.as('y')),\n        a =\n            (seconds <= thresholds.ss && ['s', seconds]) ||\n            (seconds < thresholds.s && ['ss', seconds]) ||\n            (minutes <= 1 && ['m']) ||\n            (minutes < thresholds.m && ['mm', minutes]) ||\n            (hours <= 1 && ['h']) ||\n            (hours < thresholds.h && ['hh', hours]) ||\n            (days <= 1 && ['d']) ||\n            (days < thresholds.d && ['dd', days]);\n\n    if (thresholds.w != null) {\n        a =\n            a ||\n            (weeks <= 1 && ['w']) ||\n            (weeks < thresholds.w && ['ww', weeks]);\n    }\n    a = a ||\n        (months <= 1 && ['M']) ||\n        (months < thresholds.M && ['MM', months]) ||\n        (years <= 1 && ['y']) || ['yy', years];\n\n    a[2] = withoutSuffix;\n    a[3] = +posNegDuration > 0;\n    a[4] = locale;\n    return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding(roundingFunction) {\n    if (roundingFunction === undefined) {\n        return round;\n    }\n    if (typeof roundingFunction === 'function') {\n        round = roundingFunction;\n        return true;\n    }\n    return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold(threshold, limit) {\n    if (thresholds[threshold] === undefined) {\n        return false;\n    }\n    if (limit === undefined) {\n        return thresholds[threshold];\n    }\n    thresholds[threshold] = limit;\n    if (threshold === 's') {\n        thresholds.ss = limit - 1;\n    }\n    return true;\n}\n\nfunction humanize(argWithSuffix, argThresholds) {\n    if (!this.isValid()) {\n        return this.localeData().invalidDate();\n    }\n\n    var withSuffix = false,\n        th = thresholds,\n        locale,\n        output;\n\n    if (typeof argWithSuffix === 'object') {\n        argThresholds = argWithSuffix;\n        argWithSuffix = false;\n    }\n    if (typeof argWithSuffix === 'boolean') {\n        withSuffix = argWithSuffix;\n    }\n    if (typeof argThresholds === 'object') {\n        th = Object.assign({}, thresholds, argThresholds);\n        if (argThresholds.s != null && argThresholds.ss == null) {\n            th.ss = argThresholds.s - 1;\n        }\n    }\n\n    locale = this.localeData();\n    output = relativeTime$1(this, !withSuffix, th, locale);\n\n    if (withSuffix) {\n        output = locale.pastFuture(+this, output);\n    }\n\n    return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction sign(x) {\n    return (x > 0) - (x < 0) || +x;\n}\n\nfunction toISOString$1() {\n    // for ISO strings we do not use the normal bubbling rules:\n    //  * milliseconds bubble up until they become hours\n    //  * days do not bubble at all\n    //  * months bubble up until they become years\n    // This is because there is no context-free conversion between hours and days\n    // (think of clock changes)\n    // and also not between days and months (28-31 days per month)\n    if (!this.isValid()) {\n        return this.localeData().invalidDate();\n    }\n\n    var seconds = abs$1(this._milliseconds) / 1000,\n        days = abs$1(this._days),\n        months = abs$1(this._months),\n        minutes,\n        hours,\n        years,\n        s,\n        total = this.asSeconds(),\n        totalSign,\n        ymSign,\n        daysSign,\n        hmsSign;\n\n    if (!total) {\n        // this is the same as C#'s (Noda) and python (isodate)...\n        // but not other JS (goog.date)\n        return 'P0D';\n    }\n\n    // 3600 seconds -> 60 minutes -> 1 hour\n    minutes = absFloor(seconds / 60);\n    hours = absFloor(minutes / 60);\n    seconds %= 60;\n    minutes %= 60;\n\n    // 12 months -> 1 year\n    years = absFloor(months / 12);\n    months %= 12;\n\n    // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n    s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n    totalSign = total < 0 ? '-' : '';\n    ymSign = sign(this._months) !== sign(total) ? '-' : '';\n    daysSign = sign(this._days) !== sign(total) ? '-' : '';\n    hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n    return (\n        totalSign +\n        'P' +\n        (years ? ymSign + years + 'Y' : '') +\n        (months ? ymSign + months + 'M' : '') +\n        (days ? daysSign + days + 'D' : '') +\n        (hours || minutes || seconds ? 'T' : '') +\n        (hours ? hmsSign + hours + 'H' : '') +\n        (minutes ? hmsSign + minutes + 'M' : '') +\n        (seconds ? hmsSign + s + 'S' : '')\n    );\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asQuarters = asQuarters;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.clone = clone$1;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\nproto$2.toIsoString = deprecate(\n    'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n    toISOString$1\n);\nproto$2.lang = lang;\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n    config._d = new Date(parseFloat(input) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n    config._d = new Date(toInt(input));\n});\n\n//! moment.js\n\nhooks.version = '2.30.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\n// currently HTML5 input type only supports 24-hour formats\nhooks.HTML5_FMT = {\n    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n    DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n    TIME: 'HH:mm', // <input type=\"time\" />\n    TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n    TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n    WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n    MONTH: 'YYYY-MM', // <input type=\"month\" />\n};\n\nexport default hooks;\n","var locale = {\n    momentLocale: 'zh-cn',\n    Timeline: {\n        expand: '展开',\n        fold: '收起',\n    },\n    Balloon: {\n        close: '关闭',\n    },\n    Card: {\n        expand: '展开',\n        fold: '收起',\n    },\n    Calendar: {\n        today: '今天',\n        now: '此刻',\n        ok: '确定',\n        clear: '清除',\n        month: '月',\n        year: '年',\n        prevYear: '上一年',\n        nextYear: '下一年',\n        prevMonth: '上个月',\n        nextMonth: '下个月',\n        prevDecade: '上十年',\n        nextDecade: '后十年',\n        yearSelectAriaLabel: '选择年份',\n        monthSelectAriaLabel: '选择月份',\n    },\n    DatePicker: {\n        placeholder: '请选择日期',\n        datetimePlaceholder: '请选择日期和时间',\n        monthPlaceholder: '请选择月',\n        yearPlaceholder: '请选择年',\n        weekPlaceholder: '请选择周',\n        now: '此刻',\n        selectTime: '选择时间',\n        selectDate: '选择日期',\n        ok: '确定',\n        clear: '清除',\n        startPlaceholder: '起始日期',\n        endPlaceholder: '结束日期',\n        hour: '时',\n        minute: '分',\n        second: '秒',\n        monthBeforeYear: false,\n    },\n    Dialog: {\n        close: '关闭',\n        ok: '确定',\n        cancel: '取消',\n    },\n    Drawer: {\n        close: '关闭',\n    },\n    Message: {\n        closeAriaLabel: '关闭',\n    },\n    Pagination: {\n        prev: '上一页',\n        next: '下一页',\n        goTo: '到第',\n        page: '页',\n        go: '确定',\n        total: '第{current}页，共{total}页',\n        labelPrev: '上一页，当前第{current}页',\n        labelNext: '下一页，当前第{current}页',\n        inputAriaLabel: '请输入跳转到第几页',\n        selectAriaLabel: '请选择每页显示几条',\n        pageSize: '每页显示：',\n    },\n    Input: {\n        clear: '清除',\n    },\n    TextArea: {\n        clear: '清除',\n    },\n    List: {\n        empty: '没有数据',\n    },\n    Select: {\n        selectPlaceholder: '请选择',\n        autoCompletePlaceholder: '请输入',\n        notFoundContent: '无选项',\n        maxTagPlaceholder: '已选择 {selected}/{total} 项',\n        selectAll: '全选',\n    },\n    TreeSelect: {\n        maxTagPlaceholder: '已选择 {selected}/{total} 项',\n        shortMaxTagPlaceholder: '已选择 {selected} 项',\n    },\n    Table: {\n        empty: '没有数据',\n        ok: '确认',\n        reset: '重置',\n        asc: '升序',\n        desc: '降序',\n        expanded: '已展开',\n        folded: '已折叠',\n        filter: '筛选',\n        selectAll: '全选',\n    },\n    TimePicker: {\n        placeholder: '请选择时间',\n        clear: '清除',\n        hour: '时',\n        minute: '分',\n        second: '秒',\n        ok: '确定',\n    },\n    Transfer: {\n        items: '项',\n        item: '项',\n        moveAll: '移动全部',\n        searchPlaceholder: '请输入',\n        moveToLeft: '撤销选中元素',\n        moveToRight: '提交选中元素',\n    },\n    Upload: {\n        card: {\n            cancel: '取消',\n            addPhoto: '上传图片',\n            download: '下载',\n            delete: '删除',\n        },\n        drag: {\n            text: '点击或者拖动文件到虚线框内上传',\n            hint: '支持 docx, xls, PDF, rar, zip, PNG, JPG 等类型的文件',\n        },\n        upload: {\n            delete: '删除',\n        },\n    },\n    Search: {\n        buttonText: '搜索',\n    },\n    Tag: {\n        delete: '删除',\n    },\n    Rating: {\n        description: '评分选项',\n    },\n    Switch: {\n        on: '已打开',\n        off: '已关闭',\n    },\n    Tab: {\n        closeAriaLabel: '关闭',\n    },\n    Form: {\n        Validate: {\n            default: '%s 校验失败',\n            required: '%s 是必填字段',\n            format: {\n                number: '%s 不是合法的数字',\n                email: '%s 不是合法的 email 地址',\n                url: '%s 不是合法的 URL 地址',\n                tel: '%s 不是合法的电话号码',\n            },\n            number: {\n                length: '%s 长度必须是 %s',\n                min: '%s 不得小于 %s',\n                max: '%s 不得大于 %s',\n                minLength: '%s 字段字符长度不得少于 %s',\n                maxLength: '%s 字段字符长度不得超过 %s',\n            },\n            string: {\n                length: '%s 长度必须是 %s',\n                min: '%s 不得小于 %s',\n                max: '%s 不得大于 %s',\n                minLength: '%s 长度不得少于 %s',\n                maxLength: '%s 长度不得超过 %s',\n            },\n            array: {\n                length: '%s 个数必须是 %s',\n                minLength: '%s 个数不得少于 %s',\n                maxLength: '%s 个数不得超过 %s',\n            },\n            pattern: '%s 数值 %s 不匹配正则 %s',\n        },\n    },\n};\nexport default locale;\n","import { __assign } from \"tslib\";\nimport zhCN from '../locale/zh-cn';\nimport { obj } from '../util';\n/**\n *\n * @param input - ErrorBoundaryType\n * @returns typeof obj.open === 'boolean'\n */\nfunction parseBoundary(input) {\n    var obj;\n    if (input === undefined || input === null) {\n        return {};\n    }\n    else if (typeof input === 'boolean') {\n        obj = { open: input };\n    }\n    else {\n        obj = __assign({ open: true }, input);\n    }\n    return obj;\n}\nexport default function getContextProps(props, context, displayName) {\n    var prefix = props.prefix, locale = props.locale, pure = props.pure, rtl = props.rtl, device = props.device, popupContainer = props.popupContainer, errorBoundary = props.errorBoundary;\n    var nextPrefix = context.nextPrefix, nextLocale = context.nextLocale, nextDefaultPropsConfig = context.nextDefaultPropsConfig, nextPure = context.nextPure, nextWarning = context.nextWarning, nextRtl = context.nextRtl, nextDevice = context.nextDevice, nextPopupContainer = context.nextPopupContainer, nextErrorBoundary = context.nextErrorBoundary;\n    var newPrefix = prefix || nextPrefix;\n    var localeFromContext;\n    var newDisplayName = displayName;\n    switch (displayName) {\n        case 'DatePicker2':\n            newDisplayName = 'DatePicker';\n            break;\n        case 'Calendar2':\n            newDisplayName = 'Calendar';\n            break;\n        case 'TimePicker2':\n            newDisplayName = 'TimePicker';\n            break;\n        default:\n            break;\n    }\n    if (nextLocale) {\n        localeFromContext = nextLocale[newDisplayName];\n        if (localeFromContext) {\n            localeFromContext.momentLocale = nextLocale.momentLocale;\n        }\n    }\n    var newLocale;\n    if (locale) {\n        newLocale = obj.deepMerge({}, zhCN[newDisplayName], localeFromContext, locale);\n    }\n    else if (localeFromContext) {\n        newLocale = obj.deepMerge({}, zhCN[newDisplayName], localeFromContext);\n    }\n    var newPure = typeof pure === 'boolean' ? pure : nextPure;\n    var newRtl = typeof rtl === 'boolean' ? rtl : nextRtl;\n    // ProtoType of [nextE|e]rrorBoundary can be one of [boolean, object]\n    // but typeof newErrorBoundary === 'object'\n    // newErrorBoundary should always have the key 'open', which indicates ErrorBoundary on or off\n    var newErrorBoundary = __assign(__assign({}, parseBoundary(nextErrorBoundary)), parseBoundary(errorBoundary));\n    if (!('open' in newErrorBoundary)) {\n        newErrorBoundary.open = false;\n    }\n    return {\n        prefix: newPrefix,\n        locale: newLocale,\n        pure: newPure,\n        rtl: newRtl,\n        warning: nextWarning,\n        defaultPropsConfig: nextDefaultPropsConfig || {},\n        device: device || nextDevice || undefined,\n        popupContainer: popupContainer || nextPopupContainer,\n        errorBoundary: newErrorBoundary,\n    };\n}\n","/** @license React v16.13.1\n * react-is.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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.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\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (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 || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import { __extends } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nfunction DefaultUI() {\n    // fixme: string is not a valid react component return type\n    return '';\n}\nDefaultUI.propTypes = {\n    error: PropTypes.object,\n    errorInfo: PropTypes.object,\n};\nvar ErrorBoundary = /** @class */ (function (_super) {\n    __extends(ErrorBoundary, _super);\n    function ErrorBoundary(props) {\n        var _this = _super.call(this, props) || this;\n        _this.state = { error: null, errorInfo: null };\n        return _this;\n    }\n    ErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {\n        this.setState({\n            error: error,\n            errorInfo: errorInfo,\n        });\n        var afterCatch = this.props.afterCatch;\n        if (typeof afterCatch === 'function') {\n            afterCatch(error, errorInfo);\n        }\n    };\n    ErrorBoundary.prototype.render = function () {\n        var _a = this.props.fallbackUI, FallbackUI = _a === void 0 ? DefaultUI : _a;\n        if (this.state.errorInfo) {\n            return React.createElement(FallbackUI, { error: this.state.error, errorInfo: this.state.errorInfo });\n        }\n        // Normally, just render children\n        return this.props.children;\n    };\n    ErrorBoundary.propTypes = {\n        children: PropTypes.element,\n        afterCatch: PropTypes.func,\n        fallbackUI: PropTypes.func,\n    };\n    return ErrorBoundary;\n}(Component));\nexport default ErrorBoundary;\n","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport { obj, log } from '../util';\nimport getContextProps from './get-context-props';\nimport ErrorBoundary from './error-boundary';\nvar shallowEqual = obj.shallowEqual;\nfunction getDisplayName(Component) {\n    return Component.displayName || Component.name || 'Component';\n}\nvar globalLocales;\nvar currentGlobalLanguage = 'zh-cn';\nvar currentGlobalLocale = {};\nvar currentGlobalRtl;\nexport function initLocales(locales) {\n    globalLocales = locales;\n    if (locales) {\n        currentGlobalLocale = locales[currentGlobalLanguage];\n        if (typeof currentGlobalRtl !== 'boolean') {\n            currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n        }\n    }\n}\nexport function setLanguage(language) {\n    if (globalLocales) {\n        currentGlobalLanguage = language;\n        currentGlobalLocale = globalLocales[language];\n        if (typeof currentGlobalRtl !== 'boolean') {\n            currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n        }\n    }\n}\nexport function setLocale(locale) {\n    currentGlobalLocale = __assign(__assign({}, (globalLocales ? globalLocales[currentGlobalLanguage] : {})), locale);\n    if (typeof currentGlobalRtl !== 'boolean') {\n        currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n    }\n}\nexport function setDirection(dir) {\n    currentGlobalRtl = dir === 'rtl';\n}\nexport function getLocale() {\n    return currentGlobalLocale;\n}\nexport function getLanguage() {\n    return currentGlobalLanguage;\n}\nexport function getDirection() {\n    return currentGlobalRtl;\n}\nfunction isCanPassRefComponent(component) {\n    return obj.isClassComponent(component) || obj.isForwardRefComponent(component);\n}\nfunction config(Component, options) {\n    if (options === void 0) { options = {}; }\n    // 非 forwardRef 创建的 class component\n    if (obj.isClassComponent(Component) &&\n        Component.prototype.shouldComponentUpdate === undefined) {\n        // class component: 通过定义 shouldComponentUpdate 改写成 pure component, 有 refs\n        Component.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n            if (this.props.pure) {\n                return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n            }\n            return true;\n        };\n    }\n    var ConfigedComponent = /** @class */ (function (_super) {\n        __extends(ConfigedComponent, _super);\n        function ConfigedComponent(props, context) {\n            var _this = _super.call(this, props, context) || this;\n            _this._getInstance = _this._getInstance.bind(_this);\n            _this._deprecated = _this._deprecated.bind(_this);\n            return _this;\n        }\n        ConfigedComponent.prototype._getInstance = function (ref) {\n            var _this = this;\n            this._instance = ref;\n            if (this._instance && options.exportNames) {\n                options.exportNames.forEach(function (name) {\n                    var field = _this._instance[name];\n                    if (typeof field === 'function') {\n                        _this[name] = field.bind(_this._instance);\n                    }\n                    else {\n                        _this[name] = field;\n                    }\n                });\n            }\n        };\n        ConfigedComponent.prototype._deprecated = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (this.context.nextWarning !== false) {\n                log.deprecated.apply(log, __spreadArray([], __read(args), false));\n            }\n        };\n        ConfigedComponent.prototype.getInstance = function () {\n            return this._instance;\n        };\n        ConfigedComponent.prototype.render = function () {\n            var _a = this.props, prefix = _a.prefix, locale = _a.locale, \n            // fixme: defaultPropsConfig is unused\n            defaultPropsConfig = _a.defaultPropsConfig, pure = _a.pure, rtl = _a.rtl, device = _a.device, popupContainer = _a.popupContainer, errorBoundary = _a.errorBoundary, others = __rest(_a, [\"prefix\", \"locale\", \"defaultPropsConfig\", \"pure\", \"rtl\", \"device\", \"popupContainer\", \"errorBoundary\"]);\n            var _b = this.context, nextPrefix = _b.nextPrefix, _c = _b.nextLocale, nextLocale = _c === void 0 ? {} : _c, _d = _b.nextDefaultPropsConfig, nextDefaultPropsConfig = _d === void 0 ? {} : _d, nextPure = _b.nextPure, nextRtl = _b.nextRtl, nextDevice = _b.nextDevice, nextPopupContainer = _b.nextPopupContainer, nextErrorBoundary = _b.nextErrorBoundary;\n            var displayName = options.componentName || getDisplayName(Component);\n            var contextProps = getContextProps({\n                prefix: prefix,\n                locale: locale,\n                defaultPropsConfig: defaultPropsConfig,\n                pure: pure,\n                device: device,\n                popupContainer: popupContainer,\n                rtl: rtl,\n                errorBoundary: errorBoundary,\n            }, {\n                nextPrefix: nextPrefix,\n                nextLocale: __assign(__assign({}, currentGlobalLocale), nextLocale),\n                nextDefaultPropsConfig: nextDefaultPropsConfig,\n                nextPure: nextPure,\n                nextDevice: nextDevice,\n                nextPopupContainer: nextPopupContainer,\n                nextRtl: typeof nextRtl === 'boolean'\n                    ? nextRtl\n                    : currentGlobalRtl === true\n                        ? true\n                        : undefined,\n                nextErrorBoundary: nextErrorBoundary,\n            }, displayName);\n            // errorBoundary is only for <ErrorBoundary>\n            var newContextProps = ['prefix', 'locale', 'pure', 'rtl', 'device', 'popupContainer'].reduce(function (ret, name) {\n                if (typeof contextProps[name] !== 'undefined') {\n                    // @ts-expect-error ignore assign type error\n                    ret[name] = contextProps[name];\n                }\n                return ret;\n            }, {});\n            if ('pure' in newContextProps && newContextProps.pure) {\n                log.warning('pure of ConfigProvider is deprecated, use Function Component or React.PureComponent');\n            }\n            // 对于两个真正消费 popupContainer 的组件来说，正确的名字是 container,\n            if ('popupContainer' in newContextProps &&\n                this.props.container === undefined &&\n                ['Overlay', 'Popup'].indexOf(displayName) > -1) {\n                newContextProps.container = newContextProps.popupContainer;\n                delete newContextProps.popupContainer;\n            }\n            var newOthers = options.transform\n                ? options.transform(others, this._deprecated)\n                : others;\n            var newProps = __assign(__assign(__assign({}, contextProps.defaultPropsConfig[displayName]), newOthers), newContextProps);\n            // 仅向 class or forwardRef component 传递 ref，否则 react 会报一个 warning\n            if (isCanPassRefComponent(Component)) {\n                newProps.ref = this._getInstance;\n            }\n            var content = React.createElement(Component, __assign({}, newProps));\n            var _e = contextProps.errorBoundary, open = _e.open, othersBoundary = __rest(_e, [\"open\"]);\n            return open ? React.createElement(ErrorBoundary, __assign({}, othersBoundary), content) : content;\n        };\n        ConfigedComponent.displayName = \"Config(\".concat(getDisplayName(Component), \")\");\n        ConfigedComponent.propTypes = __assign(__assign({}, (Component.propTypes || {})), { prefix: PropTypes.string, locale: PropTypes.object, defaultPropsConfig: PropTypes.object, pure: PropTypes.bool, rtl: PropTypes.bool, device: PropTypes.oneOf(['tablet', 'desktop', 'phone']), popupContainer: PropTypes.any, errorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]) });\n        ConfigedComponent.contextTypes = __assign(__assign({}, (Component.contextTypes || {})), { nextPrefix: PropTypes.string, nextLocale: PropTypes.object, nextDefaultPropsConfig: PropTypes.object, nextPure: PropTypes.bool, nextRtl: PropTypes.bool, nextWarning: PropTypes.bool, nextDevice: PropTypes.oneOf(['tablet', 'desktop', 'phone']), nextPopupContainer: PropTypes.any, nextErrorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]) });\n        return ConfigedComponent;\n    }(React.Component));\n    hoistNonReactStatic(ConfigedComponent, Component);\n    // 这里将 ConfigedComponent 推断一个限定的类型，以简化生成的类型代码\n    return ConfigedComponent;\n}\nexport { config };\n","import PropTypes from 'prop-types';\n/**\n * Creates an object with the same values as object and keys\n * generated by running each own enumerable string keyed property\n * of object thru iteratee.\n */\nvar mapKeys = function (obj, fn) {\n    var result = {};\n    for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            var value = obj[key];\n            var newKey = fn(key, value);\n            result[newKey] = value;\n        }\n    }\n    return result;\n};\n/**\n * Replace specific key with prefix `next`\n * and lowercase first character of the result.\n */\nvar replaceKey = function (key) {\n    return key.replace(/^(next)([A-Z])/, function (match, p1, p2) { return p2.toLowerCase(); });\n};\nvar transformContext = function (source) { return mapKeys(source, replaceKey); };\n/**\n * Consumer\n */\nvar Consumer = function (_a, context) {\n    var children = _a.children;\n    return typeof children === 'function' ? children(transformContext(context)) : null;\n};\n/**\n * PropTypes\n */\nConsumer.propTypes = {\n    // Render context as function\n    // Function(context: object): ReactElement\n    children: PropTypes.func,\n};\n/**\n * ContextTypes (legacy context)\n */\nConsumer.contextTypes = {\n    nextPrefix: PropTypes.string,\n    nextLocale: PropTypes.object,\n    nextPure: PropTypes.bool,\n    newRtl: PropTypes.bool,\n    nextWarning: PropTypes.bool,\n    nextDevice: PropTypes.oneOf(['tablet', 'desktop', 'phone']),\n    nextPopupContainer: PropTypes.any,\n};\nexport default Consumer;\n","var Cache = /** @class */ (function () {\n    function Cache() {\n        this._root = null;\n        this._store = new Map();\n    }\n    Cache.prototype.empty = function () {\n        return this._store.size === 0;\n    };\n    Cache.prototype.has = function (key) {\n        return this._store.has(key);\n    };\n    Cache.prototype.get = function (key, defaultValue) {\n        var res = this.has(key) ? this._store.get(key) : this.root();\n        return typeof res === 'undefined' || res === null ? defaultValue : res;\n    };\n    Cache.prototype.add = function (key, value) {\n        if (this.empty()) {\n            this._root = key;\n        }\n        this._store.set(key, value);\n    };\n    Cache.prototype.update = function (key, value) {\n        if (this.has(key)) {\n            this._store.set(key, value);\n        }\n    };\n    Cache.prototype.remove = function (key) {\n        this._store.delete(key);\n        if (key === this._root) {\n            var maps = this._store.keys();\n            // 如果当前销毁的实例刚好是 root，那么从 map 中取下一个加入的节点当作 root\n            var nextkey = maps.next().value;\n            this._root = nextkey;\n        }\n    };\n    Cache.prototype.clear = function () {\n        this._store.clear();\n    };\n    Cache.prototype.root = function () {\n        return this._store.get(this._root);\n    };\n    return Cache;\n}());\nexport default Cache;\n","import { __extends } from \"tslib\";\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { polyfill } from 'react-lifecycles-compat';\nimport moment from 'moment';\nimport getContextProps from './get-context-props';\nimport { config, initLocales, setLanguage, setLocale, setDirection, getLocale, getLanguage, getDirection, } from './config';\nimport Consumer from './consumer';\nimport ErrorBoundary from './error-boundary';\nimport Cache from './cache';\nimport datejs from '../util/date';\nvar childContextCache = new Cache();\nvar setMomentLocale = function (locale) {\n    if (moment && moment.locale && locale) {\n        moment.locale(locale.momentLocale);\n    }\n};\nvar setDateLocale = function (locale) {\n    if (locale) {\n        datejs.locale(locale.dateLocale || locale.momentLocale);\n    }\n};\nvar ConfigProvider = /** @class */ (function (_super) {\n    __extends(ConfigProvider, _super);\n    function ConfigProvider(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        childContextCache.add(_this, Object.assign({}, childContextCache.get(_this, {}), _this.getChildContext()));\n        setMomentLocale(_this.props.locale);\n        setDateLocale(_this.props.locale);\n        _this.state = {\n            locale: _this.props.locale,\n        };\n        return _this;\n    }\n    ConfigProvider.prototype.getChildContext = function () {\n        var _a = this.props, prefix = _a.prefix, locale = _a.locale, defaultPropsConfig = _a.defaultPropsConfig, pure = _a.pure, warning = _a.warning, rtl = _a.rtl, device = _a.device, popupContainer = _a.popupContainer, errorBoundary = _a.errorBoundary;\n        var _b = this.context, nextPrefix = _b.nextPrefix, nextDefaultPropsConfig = _b.nextDefaultPropsConfig, nextLocale = _b.nextLocale, nextPure = _b.nextPure, nextRtl = _b.nextRtl, nextWarning = _b.nextWarning, nextDevice = _b.nextDevice, nextPopupContainer = _b.nextPopupContainer, nextErrorBoundary = _b.nextErrorBoundary;\n        return {\n            nextPrefix: prefix || nextPrefix,\n            nextDefaultPropsConfig: defaultPropsConfig || nextDefaultPropsConfig,\n            nextLocale: locale || nextLocale,\n            nextPure: typeof pure === 'boolean' ? pure : nextPure,\n            nextRtl: typeof rtl === 'boolean' ? rtl : nextRtl,\n            nextWarning: typeof warning === 'boolean' ? warning : nextWarning,\n            nextDevice: device || nextDevice,\n            nextPopupContainer: popupContainer || nextPopupContainer,\n            nextErrorBoundary: errorBoundary || nextErrorBoundary,\n        };\n    };\n    ConfigProvider.getDerivedStateFromProps = function (nextProps, prevState) {\n        if (nextProps.locale !== prevState.locale) {\n            setMomentLocale(nextProps.locale);\n            setDateLocale(nextProps.locale);\n            return {\n                locale: nextProps.locale,\n            };\n        }\n        return null;\n    };\n    ConfigProvider.prototype.componentDidUpdate = function () {\n        childContextCache.add(this, Object.assign({}, childContextCache.get(this, {}), this.getChildContext()));\n    };\n    ConfigProvider.prototype.componentWillUnmount = function () {\n        childContextCache.remove(this);\n    };\n    ConfigProvider.prototype.render = function () {\n        return Children.only(this.props.children);\n    };\n    ConfigProvider.propTypes = {\n        /**\n         * 样式类名的品牌前缀\n         */\n        prefix: PropTypes.string,\n        /**\n         * 国际化文案对象，属性为组件的 displayName\n         */\n        locale: PropTypes.object,\n        /**\n         * 组件 API 的默认配置\n         */\n        defaultPropsConfig: PropTypes.object,\n        /**\n         * 是否开启错误捕捉 errorBoundary\n         * 如需自定义参数，请传入对象 对象接受参数列表如下：\n         *\n         * fallbackUI `Function(error?: {}, errorInfo?: {}) => Element` 捕获错误后的展示\n         * afterCatch `Function(error?: {}, errorInfo?: {})` 捕获错误后的行为，比如埋点上传\n         */\n        errorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n        /**\n         * 是否开启 Pure Render 模式，会提高性能，但是也会带来副作用\n         */\n        pure: PropTypes.bool,\n        /**\n         * 是否在开发模式下显示组件属性被废弃的 warning 提示\n         */\n        warning: PropTypes.bool,\n        /**\n         * 是否开启 rtl 模式\n         */\n        rtl: PropTypes.bool,\n        /**\n         * 设备类型，针对不同的设备类型组件做出对应的响应式变化\n         */\n        device: PropTypes.oneOf(['tablet', 'desktop', 'phone']),\n        /**\n         * 组件树\n         */\n        children: PropTypes.any,\n        /**\n         * 指定浮层渲染的父节点，可以为节点 id 的字符串，也可以返回节点的函数\n         */\n        popupContainer: PropTypes.any,\n    };\n    ConfigProvider.defaultProps = {\n        warning: true,\n        errorBoundary: false,\n    };\n    ConfigProvider.contextTypes = {\n        nextPrefix: PropTypes.string,\n        nextLocale: PropTypes.object,\n        nextDefaultPropsConfig: PropTypes.object,\n        nextPure: PropTypes.bool,\n        nextRtl: PropTypes.bool,\n        nextWarning: PropTypes.bool,\n        nextDevice: PropTypes.oneOf(['tablet', 'desktop', 'phone']),\n        nextPopupContainer: PropTypes.any,\n        nextErrorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n    };\n    ConfigProvider.childContextTypes = {\n        nextPrefix: PropTypes.string,\n        nextLocale: PropTypes.object,\n        nextDefaultPropsConfig: PropTypes.object,\n        nextPure: PropTypes.bool,\n        nextRtl: PropTypes.bool,\n        nextWarning: PropTypes.bool,\n        nextDevice: PropTypes.oneOf(['tablet', 'desktop', 'phone']),\n        nextPopupContainer: PropTypes.any,\n        nextErrorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n    };\n    /**\n     * 传入组件，生成受 ConfigProvider 控制的 HOC 组件\n     * @param Component - 组件类\n     * @param options - 可选项\n     * @returns 被 HOC 后的组件\n     */\n    ConfigProvider.config = config;\n    ConfigProvider.initLocales = initLocales;\n    ConfigProvider.setLanguage = setLanguage;\n    ConfigProvider.setLocale = setLocale;\n    ConfigProvider.setDirection = setDirection;\n    ConfigProvider.getLanguage = getLanguage;\n    ConfigProvider.getLocale = getLocale;\n    ConfigProvider.getDirection = getDirection;\n    ConfigProvider.Consumer = Consumer;\n    ConfigProvider.ErrorBoundary = ErrorBoundary;\n    /**\n     * 传入组件的 props 和 displayName，得到和 childContext 计算过的包含有 preifx/locale/pure 的对象，一般用于通过静态方法生成脱离组件树的组件\n     * @param props - 组件的 props\n     * @param displayName - 组件的 displayName\n     * @returns 新的 context props\n     */\n    ConfigProvider.getContextProps = function (props, displayName) {\n        return getContextProps(props, childContextCache.root() || {}, displayName);\n    };\n    ConfigProvider.clearCache = function () {\n        childContextCache.clear();\n    };\n    ConfigProvider.getContext = function () {\n        var _a = childContextCache.root() || {}, nextPrefix = _a.nextPrefix, nextLocale = _a.nextLocale, nextDefaultPropsConfig = _a.nextDefaultPropsConfig, nextPure = _a.nextPure, nextRtl = _a.nextRtl, nextWarning = _a.nextWarning, nextDevice = _a.nextDevice, nextPopupContainer = _a.nextPopupContainer, nextErrorBoundary = _a.nextErrorBoundary;\n        return {\n            prefix: nextPrefix,\n            locale: nextLocale,\n            defaultPropsConfig: nextDefaultPropsConfig,\n            pure: nextPure,\n            rtl: nextRtl,\n            warning: nextWarning,\n            device: nextDevice,\n            popupContainer: nextPopupContainer,\n            errorBoundary: nextErrorBoundary,\n        };\n    };\n    return ConfigProvider;\n}(Component));\nexport default polyfill(ConfigProvider);\n","export function assignSubComponent(Component, SubComponents) {\n    for (var key in SubComponents) {\n        if (Object.prototype.hasOwnProperty.call(SubComponents, key)) {\n            Component[key] = SubComponents[key];\n        }\n    }\n    return Component;\n}\n","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n  enter: _propTypes.default.number,\n  exit: _propTypes.default.number,\n  appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  active: _propTypes.default.string\n}), _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  enterDone: _propTypes.default.string,\n  enterActive: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  exitDone: _propTypes.default.string,\n  exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\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; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      _this2.onTransitionEnd(node, enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      this.props.addEndListener(node, this.nextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n   * If you want to transition on the first mount set `appear` to `true`, and the\n   * component will transition in as soon as the `<Transition>` mounts.\n   *\n   * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = _PropTypes.timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. **Note:** Timeouts are still used as a fallback if provided.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _addClass.default)(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _removeClass.default)(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.onEnter = function (node, appearing) {\n      var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          className = _this$getClassNames.className;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, className);\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(node, appearing);\n      }\n    };\n\n    _this.onEntering = function (node, appearing) {\n      var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          activeClassName = _this$getClassNames2.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(node, appearing);\n      }\n    };\n\n    _this.onEntered = function (node, appearing) {\n      var appearClassName = _this.getClassNames('appear').doneClassName;\n\n      var enterClassName = _this.getClassNames('enter').doneClassName;\n\n      var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n      _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(node, appearing);\n      }\n    };\n\n    _this.onExit = function (node) {\n      var _this$getClassNames3 = _this.getClassNames('exit'),\n          className = _this$getClassNames3.className;\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      addClass(node, className);\n\n      if (_this.props.onExit) {\n        _this.props.onExit(node);\n      }\n    };\n\n    _this.onExiting = function (node) {\n      var _this$getClassNames4 = _this.getClassNames('exit'),\n          activeClassName = _this$getClassNames4.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(node);\n      }\n    };\n\n    _this.onExited = function (node) {\n      var _this$getClassNames5 = _this.getClassNames('exit'),\n          doneClassName = _this$getClassNames5.doneClassName;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onExited) {\n        _this.props.onExited(node);\n      }\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n      var className = isStringClassNames ? prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n      var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n      return {\n        className: className,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$getClassNames6 = this.getClassNames(type),\n        className = _this$getClassNames6.className,\n        activeClassName = _this$getClassNames6.activeClassName,\n        doneClassName = _this$getClassNames6.doneClassName;\n\n    className && removeClass(node, className);\n    activeClassName && removeClass(node, activeClassName);\n    doneClassName && removeClass(node, doneClassName);\n  };\n\n  _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n    // This is for to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n    if (className) {\n      /* eslint-disable no-unused-expressions */\n      node && node.scrollTop;\n      /* eslint-enable no-unused-expressions */\n\n      addClass(node, className);\n    }\n  };\n\n  _proto.render = function render() {\n    var props = _extends({}, this.props);\n\n    delete props.classNames;\n    return _react.default.createElement(_Transition.default, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n  /**\n   * The animation classNames applied to the component as it enters, exits or\n   * has finished the transition. A single name can be provided and it will be\n   * suffixed for each stage: e.g.\n   *\n   * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n   * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n   * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n   *\n   * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n   * This allows you to define different behavior for when appearing is done and\n   * when regular entering is done, using selectors like\n   * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n   * epic entrance animation when element first appears in the DOM using\n   * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   * simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: _PropTypes.classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) _react.Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return (0, _react.cloneElement)(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!(0, _react.isValidElement)(child)) return;\n    var hasPrev = key in prevChildMapping;\n    var hasNext = key in nextChildMapping;\n    var prevChild = prevChildMapping[key];\n    var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\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; }\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n  /**\n   * The `<TransitionGroup>` component manages a set of transition components\n   * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n   * components, `<TransitionGroup>` is a state machine for managing the mounting\n   * and unmounting of components over time.\n   *\n   * Consider the example below. As items are removed or added to the TodoList the\n   * `in` prop is toggled automatically by the `<TransitionGroup>`.\n   *\n   * Note that `<TransitionGroup>`  does not define any animation behavior!\n   * Exactly _how_ a list item animates is up to the individual transition\n   * component. This means you can mix and match animations across different list\n   * items.\n   */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: {\n        isMounting: !this.appeared\n      }\n    };\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.appeared = true;\n    this.mounted = true;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  };\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return children;\n    }\n\n    return _react.default.createElement(Component, props, children);\n  };\n\n  return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n  transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: _propTypes.default.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: _propTypes.default.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\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; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n *   <Fade><div>I appear first</div></Fade>\n *   <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ReplaceTransition, _React$Component);\n\n  function ReplaceTransition() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n    _this.handleEnter = function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _this.handleLifecycle('onEnter', 0, args);\n    };\n\n    _this.handleEntering = function () {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return _this.handleLifecycle('onEntering', 0, args);\n    };\n\n    _this.handleEntered = function () {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return _this.handleLifecycle('onEntered', 0, args);\n    };\n\n    _this.handleExit = function () {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n\n      return _this.handleLifecycle('onExit', 1, args);\n    };\n\n    _this.handleExiting = function () {\n      for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n        args[_key6] = arguments[_key6];\n      }\n\n      return _this.handleLifecycle('onExiting', 1, args);\n    };\n\n    _this.handleExited = function () {\n      for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n        args[_key7] = arguments[_key7];\n      }\n\n      return _this.handleLifecycle('onExited', 1, args);\n    };\n\n    return _this;\n  }\n\n  var _proto = ReplaceTransition.prototype;\n\n  _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n    var _child$props;\n\n    var children = this.props.children;\n\n    var child = _react.default.Children.toArray(children)[idx];\n\n    if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n    if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        inProp = _this$props.in,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n    var _React$Children$toArr = _react.default.Children.toArray(children),\n        first = _React$Children$toArr[0],\n        second = _React$Children$toArr[1];\n\n    delete props.onEnter;\n    delete props.onEntering;\n    delete props.onEntered;\n    delete props.onExit;\n    delete props.onExiting;\n    delete props.onExited;\n    return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n      key: 'first',\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onEntered: this.handleEntered\n    }) : _react.default.cloneElement(second, {\n      key: 'second',\n      onEnter: this.handleExit,\n      onEntering: this.handleExiting,\n      onEntered: this.handleExited\n    }));\n  };\n\n  return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  in: _propTypes.default.bool.isRequired,\n  children: function children(props, propName) {\n    if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n    return null;\n  }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n  Transition: _Transition.default,\n  TransitionGroup: _TransitionGroup.default,\n  ReplaceTransition: _ReplaceTransition.default,\n  CSSTransition: _CSSTransition.default\n};","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { func, support, events, dom, guid } from '../util';\nvar noop = function () { };\nvar on = events.on, off = events.off;\nvar addClass = dom.addClass, removeClass = dom.removeClass;\nvar prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\nfunction getStyleProperty(node, name) {\n    var style = window.getComputedStyle(node);\n    var ret = '';\n    for (var i = 0; i < prefixes.length; i++) {\n        ret = style.getPropertyValue(prefixes[i] + name);\n        if (ret) {\n            break;\n        }\n    }\n    return ret;\n}\nvar AnimateChild = /** @class */ (function (_super) {\n    __extends(AnimateChild, _super);\n    function AnimateChild(props) {\n        var _this_1 = _super.call(this, props) || this;\n        func.bindCtx(_this_1, [\n            'handleEnter',\n            'handleEntering',\n            'handleEntered',\n            'handleExit',\n            'handleExiting',\n            'handleExited',\n            'addEndListener',\n        ]);\n        _this_1.endListeners = {\n            transitionend: [],\n            animationend: [],\n        };\n        _this_1.timeoutMap = {};\n        return _this_1;\n    }\n    AnimateChild.prototype.componentWillUnmount = function () {\n        var _this_1 = this;\n        Object.keys(this.endListeners).forEach(function (eventName) {\n            _this_1.endListeners[eventName].forEach(function (listener) {\n                off(_this_1.node, eventName, listener);\n            });\n        });\n        this.endListeners = {\n            transitionend: [],\n            animationend: [],\n        };\n    };\n    AnimateChild.prototype.generateEndListener = function (node, done, eventName, id) {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        var _this = this;\n        return function endListener(e) {\n            if (e && e.target === node) {\n                if (_this.timeoutMap[id]) {\n                    clearTimeout(_this.timeoutMap[id]);\n                    delete _this.timeoutMap[id];\n                }\n                done();\n                off(node, eventName, endListener);\n                var listeners = _this.endListeners[eventName];\n                var index = listeners.indexOf(endListener);\n                index > -1 && listeners.splice(index, 1);\n            }\n        };\n    };\n    AnimateChild.prototype.addEndListener = function (node, done) {\n        var _this_1 = this;\n        if (support.transition || support.animation) {\n            var id_1 = guid();\n            this.node = node;\n            if (support.transition) {\n                var transitionEndListener = this.generateEndListener(node, done, 'transitionend', id_1);\n                on(node, 'transitionend', transitionEndListener);\n                this.endListeners.transitionend.push(transitionEndListener);\n            }\n            if (support.animation) {\n                var animationEndListener = this.generateEndListener(node, done, 'animationend', id_1);\n                on(node, 'animationend', animationEndListener);\n                this.endListeners.animationend.push(animationEndListener);\n            }\n            setTimeout(function () {\n                var transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0;\n                var transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0;\n                var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n                var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n                var time = Math.max(transitionDuration + transitionDelay, animationDuration + animationDelay);\n                if (time) {\n                    _this_1.timeoutMap[id_1] = window.setTimeout(function () {\n                        done();\n                    }, time * 1000 + 200);\n                }\n            }, 15);\n        }\n        else {\n            done();\n        }\n    };\n    AnimateChild.prototype.removeEndtListener = function () {\n        this.transitionOff && this.transitionOff();\n        this.animationOff && this.animationOff();\n    };\n    AnimateChild.prototype.removeClassNames = function (node, names) {\n        Object.keys(names).forEach(function (key) {\n            removeClass(node, names[key]);\n        });\n    };\n    AnimateChild.prototype.handleEnter = function (node, isAppearing) {\n        var names = this.props.names;\n        if (names) {\n            this.removeClassNames(node, names);\n            var className = isAppearing ? 'appear' : 'enter';\n            addClass(node, names[className]);\n        }\n        var hook = isAppearing ? this.props.onAppear : this.props.onEnter;\n        hook(node);\n    };\n    AnimateChild.prototype.handleEntering = function (node, isAppearing) {\n        var _this_1 = this;\n        setTimeout(function () {\n            var names = _this_1.props.names;\n            if (names) {\n                var className = isAppearing ? 'appearActive' : 'enterActive';\n                addClass(node, names[className]);\n            }\n            var hook = isAppearing ? _this_1.props.onAppearing : _this_1.props.onEntering;\n            hook(node);\n        }, 10);\n    };\n    AnimateChild.prototype.handleEntered = function (node, isAppearing) {\n        var names = this.props.names;\n        if (names) {\n            var classNames = isAppearing\n                ? [names.appear, names.appearActive]\n                : [names.enter, names.enterActive];\n            classNames.forEach(function (className) {\n                removeClass(node, className);\n            });\n        }\n        var hook = isAppearing ? this.props.onAppeared : this.props.onEntered;\n        hook(node);\n    };\n    AnimateChild.prototype.handleExit = function (node) {\n        var names = this.props.names;\n        if (names) {\n            this.removeClassNames(node, names);\n            addClass(node, names.leave);\n        }\n        this.props.onExit(node);\n    };\n    AnimateChild.prototype.handleExiting = function (node) {\n        var _this_1 = this;\n        setTimeout(function () {\n            var names = _this_1.props.names;\n            if (names) {\n                addClass(node, names.leaveActive);\n            }\n            _this_1.props.onExiting(node);\n        }, 10);\n    };\n    AnimateChild.prototype.handleExited = function (node) {\n        var names = this.props.names;\n        if (names) {\n            [names.leave, names.leaveActive].forEach(function (className) {\n                removeClass(node, className);\n            });\n        }\n        this.props.onExited(node);\n    };\n    AnimateChild.prototype.render = function () {\n        var _a = this.props, names = _a.names, onAppear = _a.onAppear, onAppeared = _a.onAppeared, onAppearing = _a.onAppearing, onEnter = _a.onEnter, onEntering = _a.onEntering, onEntered = _a.onEntered, onExit = _a.onExit, onExiting = _a.onExiting, onExited = _a.onExited, others = __rest(_a, [\"names\", \"onAppear\", \"onAppeared\", \"onAppearing\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\"]);\n        return (React.createElement(Transition, __assign({}, others, { onEnter: this.handleEnter, onEntering: this.handleEntering, onEntered: this.handleEntered, onExit: this.handleExit, onExiting: this.handleExiting, onExited: this.handleExited, addEndListener: this.addEndListener })));\n    };\n    AnimateChild.displayName = 'AnimateChild';\n    AnimateChild.propTypes = {\n        names: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n        onAppear: PropTypes.func,\n        onAppearing: PropTypes.func,\n        onAppeared: PropTypes.func,\n        onEnter: PropTypes.func,\n        onEntering: PropTypes.func,\n        onEntered: PropTypes.func,\n        onExit: PropTypes.func,\n        onExiting: PropTypes.func,\n        onExited: PropTypes.func,\n    };\n    AnimateChild.defaultProps = {\n        onAppear: noop,\n        onAppearing: noop,\n        onAppeared: noop,\n        onEnter: noop,\n        onEntering: noop,\n        onEntered: noop,\n        onExit: noop,\n        onExiting: noop,\n        onExited: noop,\n    };\n    return AnimateChild;\n}(Component));\nexport default AnimateChild;\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport AnimateChild from './child';\nvar noop = function () { };\nvar FirstChild = function (props) {\n    var childrenArray = React.Children.toArray(props.children);\n    return childrenArray[0] || null;\n};\n/**\n * Animate\n */\nvar Animate = /** @class */ (function (_super) {\n    __extends(Animate, _super);\n    function Animate() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Animate.prototype.normalizeNames = function (names) {\n        if (typeof names === 'string') {\n            return {\n                appear: \"\".concat(names, \"-appear\"),\n                appearActive: \"\".concat(names, \"-appear-active\"),\n                enter: \"\".concat(names, \"-enter\"),\n                enterActive: \"\".concat(names, \"-enter-active\"),\n                leave: \"\".concat(names, \"-leave\"),\n                leaveActive: \"\".concat(names, \"-leave-active\"),\n            };\n        }\n        if (typeof names === 'object') {\n            return {\n                appear: names.appear,\n                appearActive: \"\".concat(names.appear, \"-active\"),\n                enter: \"\".concat(names.enter),\n                enterActive: \"\".concat(names.enter, \"-active\"),\n                leave: \"\".concat(names.leave),\n                leaveActive: \"\".concat(names.leave, \"-active\"),\n            };\n        }\n    };\n    Animate.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, animation = _a.animation, children = _a.children, animationAppear = _a.animationAppear, singleMode = _a.singleMode, component = _a.component, beforeAppear = _a.beforeAppear, onAppear = _a.onAppear, afterAppear = _a.afterAppear, beforeEnter = _a.beforeEnter, onEnter = _a.onEnter, afterEnter = _a.afterEnter, beforeLeave = _a.beforeLeave, onLeave = _a.onLeave, afterLeave = _a.afterLeave, others = __rest(_a, [\"animation\", \"children\", \"animationAppear\", \"singleMode\", \"component\", \"beforeAppear\", \"onAppear\", \"afterAppear\", \"beforeEnter\", \"onEnter\", \"afterEnter\", \"beforeLeave\", \"onLeave\", \"afterLeave\"]);\n        var animateChildren = Children.map(children, function (child) {\n            return (React.createElement(AnimateChild, { key: child === null || child === void 0 ? void 0 : child.key, names: _this.normalizeNames(animation), onAppear: beforeAppear, onAppearing: onAppear, onAppeared: afterAppear, onEnter: beforeEnter, onEntering: onEnter, onEntered: afterEnter, onExit: beforeLeave, onExiting: onLeave, onExited: afterLeave }, child));\n        });\n        return (React.createElement(TransitionGroup, __assign({ appear: animationAppear, component: singleMode ? FirstChild : component }, others), animateChildren));\n    };\n    Animate.displayName = 'Animate';\n    Animate.propTypes = {\n        animation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n        animationAppear: PropTypes.bool,\n        component: PropTypes.any,\n        singleMode: PropTypes.bool,\n        children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),\n        beforeAppear: PropTypes.func,\n        onAppear: PropTypes.func,\n        afterAppear: PropTypes.func,\n        beforeEnter: PropTypes.func,\n        onEnter: PropTypes.func,\n        afterEnter: PropTypes.func,\n        beforeLeave: PropTypes.func,\n        onLeave: PropTypes.func,\n        afterLeave: PropTypes.func,\n    };\n    Animate.defaultProps = {\n        animationAppear: true,\n        component: 'div',\n        singleMode: true,\n        beforeAppear: noop,\n        onAppear: noop,\n        afterAppear: noop,\n        beforeEnter: noop,\n        onEnter: noop,\n        afterEnter: noop,\n        beforeLeave: noop,\n        onLeave: noop,\n        afterLeave: noop,\n    };\n    return Animate;\n}(Component));\nexport default Animate;\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { func, dom } from '../util';\nimport Animate from './animate';\nvar noop = function () { };\nvar getStyle = dom.getStyle;\nvar Expand = /** @class */ (function (_super) {\n    __extends(Expand, _super);\n    function Expand(props) {\n        var _this = _super.call(this, props) || this;\n        func.bindCtx(_this, [\n            'beforeEnter',\n            'onEnter',\n            'afterEnter',\n            'beforeLeave',\n            'onLeave',\n            'afterLeave',\n        ]);\n        return _this;\n    }\n    Expand.prototype.beforeEnter = function (node) {\n        if (this.leaving) {\n            this.afterLeave(node);\n        }\n        this.cacheCurrentStyle(node);\n        this.cacheComputedStyle(node);\n        this.setCurrentStyleToZero(node);\n        this.props.beforeEnter(node);\n    };\n    Expand.prototype.onEnter = function (node) {\n        this.setCurrentStyleToComputedStyle(node);\n        this.props.onEnter(node);\n    };\n    Expand.prototype.afterEnter = function (node) {\n        this.restoreCurrentStyle(node);\n        this.props.afterEnter(node);\n    };\n    Expand.prototype.beforeLeave = function (node) {\n        this.leaving = true;\n        this.cacheCurrentStyle(node);\n        this.cacheComputedStyle(node);\n        this.setCurrentStyleToComputedStyle(node);\n        this.props.beforeLeave(node);\n    };\n    Expand.prototype.onLeave = function (node) {\n        this.setCurrentStyleToZero(node);\n        this.props.onLeave(node);\n    };\n    Expand.prototype.afterLeave = function (node) {\n        this.leaving = false;\n        this.restoreCurrentStyle(node);\n        this.props.afterLeave(node);\n    };\n    Expand.prototype.cacheCurrentStyle = function (node) {\n        this.styleBorderTopWidth = node.style.borderTopWidth;\n        this.stylePaddingTop = node.style.paddingTop;\n        this.styleHeight = node.style.height;\n        this.stylePaddingBottom = node.style.paddingBottom;\n        this.styleBorderBottomWidth = node.style.borderBottomWidth;\n    };\n    Expand.prototype.cacheComputedStyle = function (node) {\n        this.borderTopWidth = getStyle(node, 'borderTopWidth');\n        this.paddingTop = getStyle(node, 'paddingTop');\n        this.height = node.offsetHeight;\n        this.paddingBottom = getStyle(node, 'paddingBottom');\n        this.borderBottomWidth = getStyle(node, 'borderBottomWidth');\n    };\n    Expand.prototype.setCurrentStyleToZero = function (node) {\n        node.style.borderTopWidth = '0px';\n        node.style.paddingTop = '0px';\n        node.style.height = '0px';\n        node.style.paddingBottom = '0px';\n        node.style.borderBottomWidth = '0px';\n    };\n    Expand.prototype.setCurrentStyleToComputedStyle = function (node) {\n        node.style.borderTopWidth = \"\".concat(this.borderTopWidth, \"px\");\n        node.style.paddingTop = \"\".concat(this.paddingTop, \"px\");\n        node.style.height = \"\".concat(this.height, \"px\");\n        node.style.paddingBottom = \"\".concat(this.paddingBottom, \"px\");\n        node.style.borderBottomWidth = \"\".concat(this.borderBottomWidth, \"px\");\n    };\n    Expand.prototype.restoreCurrentStyle = function (node) {\n        node.style.borderTopWidth = this.styleBorderTopWidth;\n        node.style.paddingTop = this.stylePaddingTop;\n        node.style.height = this.styleHeight;\n        node.style.paddingBottom = this.stylePaddingBottom;\n        node.style.borderBottomWidth = this.styleBorderBottomWidth;\n    };\n    Expand.prototype.render = function () {\n        var _a = this.props, animation = _a.animation, others = __rest(_a, [\"animation\"]);\n        var newAnimation = animation || 'expand';\n        return (React.createElement(Animate, __assign({}, others, { animation: newAnimation, beforeEnter: this.beforeEnter, onEnter: this.onEnter, afterEnter: this.afterEnter, beforeLeave: this.beforeLeave, onLeave: this.onLeave, afterLeave: this.afterLeave })));\n    };\n    Expand.displayName = 'Expand';\n    Expand.propTypes = {\n        animation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n        beforeEnter: PropTypes.func,\n        onEnter: PropTypes.func,\n        afterEnter: PropTypes.func,\n        beforeLeave: PropTypes.func,\n        onLeave: PropTypes.func,\n        afterLeave: PropTypes.func,\n    };\n    Expand.defaultProps = {\n        beforeEnter: noop,\n        onEnter: noop,\n        afterEnter: noop,\n        beforeLeave: noop,\n        onLeave: noop,\n        afterLeave: noop,\n    };\n    return Expand;\n}(Component));\nexport default Expand;\n","import { __assign, __rest } from \"tslib\";\nimport React from 'react';\nimport { Transition } from 'react-transition-group';\nimport classNames from 'classnames';\nvar OverlayAnimate = function (props) {\n    var animation = props.animation, visible = props.visible, children = props.children, _a = props.timeout, timeout = _a === void 0 ? 300 : _a, style = props.style, mountOnEnter = props.mountOnEnter, unmountOnExit = props.unmountOnExit, appear = props.appear, enter = props.enter, exit = props.exit, onEnter = props.onEnter, onEntering = props.onEntering, onEntered = props.onEntered, onExit = props.onExit, onExiting = props.onExiting, onExited = props.onExited, others = __rest(props, [\"animation\", \"visible\", \"children\", \"timeout\", \"style\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\"]);\n    var animateProps = {\n        mountOnEnter: mountOnEnter,\n        unmountOnExit: unmountOnExit,\n        appear: appear,\n        enter: enter,\n        exit: exit,\n        onEnter: onEnter,\n        onEntering: onEntering,\n        onEntered: onEntered,\n        onExit: onExit,\n        onExiting: onExiting,\n        onExited: onExited,\n    };\n    Object.keys(animateProps).forEach(function (k) {\n        if (!(k in props) || typeof props[k] === 'undefined') {\n            delete animateProps[k];\n        }\n    });\n    var animationMap = typeof animation === 'string' ? { in: animation, out: animation } : animation;\n    var animateClsMap = animationMap\n        ? {\n            entering: animationMap.in,\n            exiting: animationMap.out,\n        }\n        : {};\n    if (animation === false) {\n        animateClsMap.entering = '';\n        animateClsMap.exiting = '';\n    }\n    return (React.createElement(Transition, __assign({}, animateProps, { in: visible, timeout: animation ? timeout : 0, appear: true }), function (state) {\n        var _a;\n        var cls = classNames((_a = {},\n            _a[children.props.className] = !!children.props.className,\n            _a[animateClsMap[state]] = state in animateClsMap && animateClsMap[state],\n            _a));\n        var childProps = __assign(__assign({}, others), { className: cls });\n        if (style && children.props && children.props.style) {\n            childProps.style = Object.assign({}, children.props.style, style);\n        }\n        return React.cloneElement(children, childProps);\n    }));\n};\nexport default OverlayAnimate;\n","import { assignSubComponent } from '../util/component';\nimport Animate from './animate';\nimport Expand from './expand';\nimport OverlayAnimate from './overlay-animate';\nvar AnimateWithSubComponent = assignSubComponent(Animate, { Expand: Expand, OverlayAnimate: OverlayAnimate });\nexport default AnimateWithSubComponent;\n","var overlayManager = {\n    allOverlays: [],\n    addOverlay: function (overlay) {\n        this.removeOverlay(overlay);\n        this.allOverlays.unshift(overlay);\n    },\n    isCurrentOverlay: function (overlay) {\n        return overlay && this.allOverlays[0] === overlay;\n    },\n    removeOverlay: function (overlay) {\n        var i = this.allOverlays.indexOf(overlay);\n        if (i > -1) {\n            this.allOverlays.splice(i, 1);\n        }\n    },\n};\nexport default overlayManager;\n","import { findDOMNode } from 'react-dom';\nexport default function findNode(target, param) {\n    var realTarget = target;\n    if (!realTarget) {\n        return null;\n    }\n    if (typeof realTarget === 'string') {\n        return document.getElementById(realTarget);\n    }\n    if (typeof realTarget === 'function') {\n        try {\n            realTarget = realTarget(param);\n        }\n        catch (err) {\n            realTarget = null;\n        }\n    }\n    if (!realTarget) {\n        return null;\n    }\n    try {\n        // @ts-expect-error realTarget需要判断是否是ReactInstance，还会存在Element Node Text的情况\n        return findDOMNode(realTarget);\n    }\n    catch (err) {\n        // @ts-expect-error 这个兜底逻辑十分破坏类型完备\n        return realTarget;\n    }\n}\n","import { __extends } from \"tslib\";\nimport { Component, Children, cloneElement } from 'react';\nimport { findDOMNode, createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { func } from '../util';\nimport findNode from './utils/find-node';\nvar makeChain = func.makeChain;\nvar getContainerNode = function (props) {\n    var targetNode = findNode(props.target);\n    return findNode(props.container, targetNode);\n};\nvar Gateway = /** @class */ (function (_super) {\n    __extends(Gateway, _super);\n    function Gateway(props) {\n        var _this = _super.call(this, props) || this;\n        _this.updateContainer = function () {\n            var containerNode = getContainerNode(_this.props);\n            if (containerNode !== _this.state.containerNode) {\n                // eslint-disable-next-line\n                _this.setState({\n                    containerNode: containerNode,\n                });\n            }\n        };\n        _this.saveChildRef = function (ref) {\n            _this.child = ref;\n        };\n        _this.state = {\n            containerNode: null,\n        };\n        return _this;\n    }\n    Gateway.prototype.componentDidMount = function () {\n        this.updateContainer();\n    };\n    Gateway.prototype.componentDidUpdate = function () {\n        this.updateContainer();\n    };\n    Gateway.prototype.getChildNode = function () {\n        try {\n            return findDOMNode(this.child);\n        }\n        catch (err) {\n            return null;\n        }\n    };\n    Gateway.prototype.render = function () {\n        var containerNode = this.state.containerNode;\n        if (!containerNode) {\n            return null;\n        }\n        var children = this.props.children;\n        var child = children ? Children.only(children) : null;\n        if (!child) {\n            return null;\n        }\n        if (typeof child.ref === 'string') {\n            throw new Error('Can not set ref by string in Gateway, use function instead.');\n        }\n        child = cloneElement(child, {\n            ref: makeChain(this.saveChildRef, child.ref),\n        });\n        return createPortal(child, containerNode);\n    };\n    Gateway.displayName = 'Gateway';\n    Gateway.propTypes = {\n        children: PropTypes.node,\n        container: PropTypes.any,\n        target: PropTypes.any,\n    };\n    Gateway.defaultProps = {\n        container: function () { return document.body; },\n    };\n    return Gateway;\n}(Component));\nexport default polyfill(Gateway);\n","import { __read, __spreadArray } from \"tslib\";\nimport { dom } from '../../util';\nimport findNode from './find-node';\nvar VIEWPORT = 'viewport';\n// IE8 not support pageXOffset\nvar getPageX = function () { return window.pageXOffset || document.documentElement.scrollLeft; };\nvar getPageY = function () { return window.pageYOffset || document.documentElement.scrollTop; };\n/**\n * @internal get element size\n */\nfunction _getSize(element) {\n    // element like `svg` do not have offsetWidth and offsetHeight prop\n    // then getBoundingClientRect\n    if ('offsetWidth' in element && 'offsetHeight' in element) {\n        return {\n            width: element.offsetWidth,\n            height: element.offsetHeight,\n        };\n    }\n    else {\n        var _a = element.getBoundingClientRect(), width = _a.width, height = _a.height;\n        return {\n            width: width,\n            height: height,\n        };\n    }\n}\n/**\n * @internal get element rect\n */\nfunction _getElementRect(elem, container) {\n    var offsetTop = 0, offsetLeft = 0, scrollTop = 0, scrollLeft = 0;\n    var _a = _getSize(elem), width = _a.width, height = _a.height;\n    do {\n        if (!isNaN(elem.offsetTop)) {\n            offsetTop += elem.offsetTop;\n        }\n        if (!isNaN(elem.offsetLeft)) {\n            offsetLeft += elem.offsetLeft;\n        }\n        if (elem && elem.offsetParent) {\n            if (!isNaN(elem.offsetParent.scrollLeft) && elem.offsetParent !== document.body) {\n                scrollLeft += elem.offsetParent.scrollLeft;\n            }\n            if (!isNaN(elem.offsetParent.scrollTop) && elem.offsetParent !== document.body) {\n                scrollTop += elem.offsetParent.scrollTop;\n            }\n        }\n        elem = elem.offsetParent;\n    } while (elem !== null && elem !== container);\n    // if container is body or invalid, treat as window, use client width & height\n    var treatAsWindow = !container || container === document.body;\n    return {\n        top: offsetTop -\n            scrollTop -\n            (treatAsWindow ? document.documentElement.scrollTop || document.body.scrollTop : 0),\n        left: offsetLeft -\n            scrollLeft -\n            (treatAsWindow ? document.documentElement.scrollLeft || document.body.scrollLeft : 0),\n        width: width,\n        height: height,\n    };\n}\n/**\n * @internal get viewport size\n */\nfunction _getViewportSize(container) {\n    if (!container || container === document.body) {\n        return {\n            width: document.documentElement.clientWidth,\n            height: document.documentElement.clientHeight,\n        };\n    }\n    var _a = container.getBoundingClientRect(), width = _a.width, height = _a.height;\n    return {\n        width: width,\n        height: height,\n    };\n}\nvar getContainer = function (_a) {\n    var container = _a.container, baseElement = _a.baseElement;\n    // SSR下会有副作用\n    if (typeof document === 'undefined') {\n        return container;\n    }\n    var calcContainer = findNode(container, baseElement);\n    if (!calcContainer) {\n        calcContainer = document.body;\n    }\n    while (dom.getStyle(calcContainer, 'position') === 'static') {\n        if (!calcContainer || calcContainer === document.body) {\n            return document.body;\n        }\n        calcContainer = calcContainer.parentNode;\n    }\n    return calcContainer;\n};\nvar Position = /** @class */ (function () {\n    function Position(props) {\n        var _this = this;\n        this._calPinOffset = function (align) {\n            var offset = __spreadArray([], __read(_this.offset), false);\n            if (_this.autoFit && align && _this.container && _this.container !== document.body) {\n                var baseElementRect = _getElementRect(\n                // @ts-expect-error _getElementRect baseElement不支持\"viewport\" 需要对baseElement做非\"viewport\"处理\n                _this.baseElement, _this.container);\n                // @ts-expect-error _getElementRect pinElement不支持\"viewport\" 需要对pinElement做非\"viewport\"处理\n                var pinElementRect = _getElementRect(_this.pinElement, _this.container);\n                var viewportSize = _getViewportSize(_this.container);\n                var pinAlign = align.split(' ')[0];\n                var y = pinAlign.charAt(0);\n                if (pinElementRect.top < 0 ||\n                    pinElementRect.top + pinElementRect.height > viewportSize.height) {\n                    offset[1] = -baseElementRect.top - (y === 't' ? baseElementRect.height : 0);\n                }\n            }\n            return offset;\n        };\n        this._getParentScrollOffset = function (elem) {\n            var top = 0;\n            var left = 0;\n            if (elem && elem.offsetParent && elem.offsetParent !== document.body) {\n                if (!isNaN(elem.offsetParent.scrollTop)) {\n                    top += elem.offsetParent.scrollTop;\n                }\n                if (!isNaN(elem.offsetParent.scrollLeft)) {\n                    left += elem.offsetParent.scrollLeft;\n                }\n            }\n            return {\n                top: top,\n                left: left,\n            };\n        };\n        this.pinElement = props.pinElement;\n        this.baseElement = props.baseElement;\n        this.pinFollowBaseElementWhenFixed = props.pinFollowBaseElementWhenFixed;\n        this.container = getContainer(props);\n        this.autoFit = props.autoFit || false;\n        this.align = props.align || 'tl tl';\n        this.offset = props.offset || [0, 0];\n        this.needAdjust = props.needAdjust || false;\n        this.isRtl = props.isRtl || false;\n    }\n    Position.prototype.setPosition = function () {\n        var pinElement = this.pinElement;\n        var baseElement = this.baseElement;\n        var pinFollowBaseElementWhenFixed = this.pinFollowBaseElementWhenFixed;\n        var expectedAlign = this._getExpectedAlign();\n        var isPinFixed, isBaseFixed, firstPositionResult;\n        if (pinElement === VIEWPORT) {\n            return;\n        }\n        if (dom.getStyle(pinElement, 'position') !== 'fixed') {\n            dom.setStyle(pinElement, 'position', 'absolute');\n            isPinFixed = false;\n        }\n        else {\n            isPinFixed = true;\n        }\n        if (baseElement === VIEWPORT || dom.getStyle(baseElement, 'position') !== 'fixed') {\n            isBaseFixed = false;\n        }\n        else {\n            isBaseFixed = true;\n        }\n        // 根据期望的定位\n        for (var i = 0; i < expectedAlign.length; i++) {\n            var align = expectedAlign[i];\n            var pinElementPoints = this._normalizePosition(pinElement, align.split(' ')[0], isPinFixed);\n            var baseElementPoints = this._normalizePosition(baseElement, align.split(' ')[1], \n            // 忽略元素位置，发生在类似dialog的场景下\n            isPinFixed && !pinFollowBaseElementWhenFixed);\n            var pinElementParentOffset = this._getParentOffset(pinElement);\n            var pinElementParentScrollOffset = this._getParentScrollOffset(pinElement);\n            var baseElementOffset = isPinFixed && isBaseFixed\n                ? // @ts-expect-error _getLeftTop 不支持\"viewport\" 需要对baseElement做非\"viewport\"处理\n                    this._getLeftTop(baseElement)\n                : // 在 pin 是 fixed 布局，并且又需要根据 base 计算位置时，计算 base 的 offset 需要忽略页面滚动\n                    baseElementPoints.offset(isPinFixed && pinFollowBaseElementWhenFixed);\n            var top_1 = baseElementOffset.top +\n                baseElementPoints.y -\n                pinElementParentOffset.top -\n                pinElementPoints.y +\n                pinElementParentScrollOffset.top;\n            var left = baseElementOffset.left +\n                baseElementPoints.x -\n                pinElementParentOffset.left -\n                pinElementPoints.x +\n                pinElementParentScrollOffset.left;\n            // 此处若真实改变元素位置可能为导致布局发生变化，从而导致 container 发生 resize，进而重复触发 postion 和 componentUpdate，导致崩溃\n            // 需要根据新的 left、top 进行模拟计算 isInViewport\n            var xOffset = Math.round(left + this.offset[0] - dom.getStyle(pinElement, 'left'));\n            var yOffset = Math.round(top_1 + this.offset[1] - dom.getStyle(pinElement, 'top'));\n            if (this._isInViewport(pinElement, align, [xOffset, yOffset])) {\n                // 如果在视区内，则设置 pin 位置，并中断 postion 返回设置的位置\n                this._setPinElementPostion(pinElement, { left: left, top: top_1 }, this.offset);\n                return align;\n            }\n            else if (!firstPositionResult) {\n                if (this.needAdjust && !this.autoFit) {\n                    var right = this._getViewportOffset(pinElement, align).right;\n                    firstPositionResult = {\n                        left: right < 0 ? left + right : left,\n                        top: top_1,\n                    };\n                }\n                else {\n                    firstPositionResult = { left: left, top: top_1 };\n                }\n            }\n        }\n        // This will only execute if `pinElement` could not be placed entirely in the Viewport\n        var inViewportLeft = this._makeElementInViewport(pinElement, firstPositionResult.left, 'Left', isPinFixed);\n        var inViewportTop = this._makeElementInViewport(pinElement, firstPositionResult.top, 'Top', isPinFixed);\n        this._setPinElementPostion(pinElement, { left: inViewportLeft, top: inViewportTop }, this._calPinOffset(expectedAlign[0]));\n        return expectedAlign[0];\n    };\n    Position.prototype._getParentOffset = function (element) {\n        var parent = element.offsetParent || document.documentElement;\n        var offset;\n        if (parent === document.body && dom.getStyle(parent, 'position') === 'static') {\n            offset = {\n                top: 0,\n                left: 0,\n            };\n        }\n        else {\n            offset = this._getElementOffset(parent);\n        }\n        // @ts-expect-error parseFloat 不支持第二个参数\n        offset.top += parseFloat(dom.getStyle(parent, 'border-top-width'), 10);\n        // @ts-expect-error parseFloat 不支持第二个参数\n        offset.left += parseFloat(dom.getStyle(parent, 'border-left-width'), 10);\n        offset.offsetParent = parent;\n        return offset;\n    };\n    Position.prototype._makeElementInViewport = function (pinElement, number, type, isPinFixed) {\n        // pinElement.offsetParent is never body because wrapper has position: absolute\n        // refactored to make code clearer. Revert if wrapper style changes.\n        var result = number;\n        var docElement = document.documentElement;\n        var offsetParent = pinElement.offsetParent || document.documentElement;\n        if (result < 0) {\n            if (isPinFixed) {\n                result = 0;\n            }\n            else if (offsetParent === document.body &&\n                dom.getStyle(offsetParent, 'position') === 'static') {\n                // Only when div's offsetParent is document.body, we set new position result.\n                result = Math.max(docElement[\"scroll\".concat(type)], document.body[\"scroll\".concat(type)]);\n            }\n        }\n        return result;\n    };\n    // 这里的第三个参数真实含义为：是否为fixed布局，并且像dialog一样，不跟随trigger元素\n    Position.prototype._normalizePosition = function (element, align, ignoreElementOffset) {\n        var points = this._normalizeElement(element, ignoreElementOffset);\n        this._normalizeXY(points, align);\n        return points;\n    };\n    Position.prototype._normalizeXY = function (points, align) {\n        var x = align.split('')[1];\n        var y = align.split('')[0];\n        points.x = this._xyConverter(x, points, 'width');\n        points.y = this._xyConverter(y, points, 'height');\n        return points;\n    };\n    Position.prototype._xyConverter = function (align, points, type) {\n        var res = align\n            .replace(/t|l/gi, '0%')\n            .replace(/c/gi, '50%')\n            .replace(/b|r/gi, '100%')\n            .replace(/(\\d+)%/gi, function (m, d) {\n            // @ts-expect-error  返回值需要转换为string，目前是number\n            return points.size()[type] * (d / 100);\n        });\n        // @ts-expect-error parseFloat 不支持第二个参数\n        return parseFloat(res, 10) || 0;\n    };\n    Position.prototype._getLeftTop = function (element) {\n        return {\n            // @ts-expect-error parseFloat 不支持第二个参数\n            left: parseFloat(dom.getStyle(element, 'left')) || 0,\n            // @ts-expect-error parseFloat 不支持第二个参数\n            top: parseFloat(dom.getStyle(element, 'top')) || 0,\n        };\n    };\n    Position.prototype._normalizeElement = function (element, ignoreElementOffset) {\n        var _this = this;\n        var result = {\n            element: element,\n            x: 0,\n            y: 0,\n        }, isViewport = element === VIEWPORT, docElement = document.documentElement;\n        result.offset = function (ignoreScroll) {\n            // 这里是关键，第二个参数的含义以ing该是：是否为 fixed 布局，并且像 dialog 一样，不跟随 trigger 元素\n            if (ignoreElementOffset) {\n                return {\n                    left: 0,\n                    top: 0,\n                };\n            }\n            else if (isViewport) {\n                return {\n                    left: getPageX(),\n                    top: getPageY(),\n                };\n            }\n            else {\n                return _this._getElementOffset(element, ignoreScroll);\n            }\n        };\n        result.size = function () {\n            if (isViewport) {\n                return {\n                    width: docElement.clientWidth,\n                    height: docElement.clientHeight,\n                };\n            }\n            else {\n                return _getSize(element);\n            }\n        };\n        return result;\n    };\n    // ignoreScroll 在 pin 元素为 fixed 的时候生效，此时需要忽略页面滚动\n    // 对 fixed 模式下 subNav 弹层的计算很重要，只有在这种情况下，才同时需要元素的相对位置，又不关心页面滚动\n    Position.prototype._getElementOffset = function (element, ignoreScroll) {\n        var rect = element.getBoundingClientRect();\n        var docElement = document.documentElement;\n        var body = document.body;\n        var docClientLeft = docElement.clientLeft || body.clientLeft || 0;\n        var docClientTop = docElement.clientTop || body.clientTop || 0;\n        return {\n            left: rect.left + (ignoreScroll ? 0 : getPageX()) - docClientLeft,\n            top: rect.top + (ignoreScroll ? 0 : getPageY()) - docClientTop,\n        };\n    };\n    // According to the location of the overflow to calculate the desired positioning\n    Position.prototype._getExpectedAlign = function () {\n        // @ts-expect-error align这里需要确定是string，不能是boolean\n        var align = this.isRtl\n            ? // @ts-expect-error align这里需要确定是string，不能是boolean\n                this._replaceAlignDir(this.align, /l|r/g, { l: 'r', r: 'l' })\n            : this.align;\n        var expectedAlign = [align];\n        if (this.needAdjust) {\n            if (/t|b/g.test(align)) {\n                expectedAlign.push(this._replaceAlignDir(align, /t|b/g, { t: 'b', b: 't' }));\n            }\n            if (/l|r/g.test(align)) {\n                expectedAlign.push(this._replaceAlignDir(align, /l|r/g, { l: 'r', r: 'l' }));\n            }\n            if (/c/g.test(align)) {\n                expectedAlign.push(this._replaceAlignDir(align, /c(?= |$)/g, { c: 'l' }));\n                expectedAlign.push(this._replaceAlignDir(align, /c(?= |$)/g, { c: 'r' }));\n            }\n            expectedAlign.push(this._replaceAlignDir(align, /l|r|t|b/g, {\n                l: 'r',\n                r: 'l',\n                t: 'b',\n                b: 't',\n            }));\n        }\n        return expectedAlign;\n    };\n    // Transform align order.\n    Position.prototype._replaceAlignDir = function (align, regExp, map) {\n        return align.replace(regExp, function (res) {\n            return map[res];\n        });\n    };\n    // Are the right sides of the pin and base aligned?\n    Position.prototype._isRightAligned = function (align) {\n        var _a = __read(align.split(' '), 2), pinAlign = _a[0], baseAlign = _a[1];\n        return pinAlign[1] === 'r' && pinAlign[1] === baseAlign[1];\n    };\n    // Are the bottoms of the pin and base aligned?\n    Position.prototype._isBottomAligned = function (align) {\n        var _a = __read(align.split(' '), 2), pinAlign = _a[0], baseAlign = _a[1];\n        return pinAlign[0] === 'b' && pinAlign[0] === baseAlign[0];\n    };\n    // Detecting element is in the window， we want to adjust position later.\n    Position.prototype._isInViewport = function (element, align, adjustOffset) {\n        if (adjustOffset === void 0) { adjustOffset = []; }\n        var viewportSize = _getViewportSize(this.container);\n        var elementRect = _getElementRect(element, this.container);\n        var _a = __read(adjustOffset, 2), _b = _a[0], xOffset = _b === void 0 ? 0 : _b, _c = _a[1], yOffset = _c === void 0 ? 0 : _c;\n        var left = elementRect.left + xOffset;\n        var top = elementRect.top + yOffset;\n        var elementSize = _getSize(element);\n        // https://github.com/alibaba-fusion/next/issues/853\n        // Equality causes issues in Chrome when pin element is off screen to right or bottom.\n        // If it is not supposed to align with the bottom or right, then subtract 1 to use strict less than.\n        var viewportWidth = this._isRightAligned(align)\n            ? viewportSize.width\n            : viewportSize.width - 1;\n        var viewportHeight = this._isBottomAligned(align)\n            ? viewportSize.height\n            : viewportSize.height - 1;\n        // 临时方案，在 select + table 的场景下，不需要关注横向上是否在可视区域内\n        // 在 balloon 场景下需要关注\n        if (this.autoFit) {\n            return top >= 0 && top + element.offsetHeight <= viewportHeight;\n        }\n        // Avoid animate problem that use offsetWidth instead of getBoundingClientRect.\n        return (left >= 0 &&\n            left + elementSize.width <= viewportWidth &&\n            top >= 0 &&\n            top + elementSize.height <= viewportHeight);\n    };\n    Position.prototype._getViewportOffset = function (element, align) {\n        var viewportSize = _getViewportSize(this.container);\n        var elementRect = _getElementRect(element, this.container);\n        var elementSize = _getSize(element);\n        var viewportWidth = this._isRightAligned(align)\n            ? viewportSize.width\n            : viewportSize.width - 1;\n        var viewportHeight = this._isBottomAligned(align)\n            ? viewportSize.height\n            : viewportSize.height - 1;\n        return {\n            top: elementRect.top,\n            right: viewportWidth - (elementRect.left + elementSize.width),\n            bottom: viewportHeight - (elementRect.top + elementSize.height),\n            left: elementRect.left,\n        };\n    };\n    // 在这里做RTL判断 top-left 定位转化为等效的 top-right定位\n    Position.prototype._setPinElementPostion = function (pinElement, postion, offset) {\n        if (offset === void 0) { offset = [0, 0]; }\n        var top = postion.top, left = postion.left;\n        if (!this.isRtl) {\n            dom.setStyle(pinElement, {\n                left: \"\".concat(left + offset[0], \"px\"),\n                top: \"\".concat(top + offset[1], \"px\"),\n            });\n            return;\n        }\n        // transfer {left,top} equaly to {right,top}\n        var pinElementParentOffset = this._getParentOffset(pinElement);\n        var offsetParentWidth = _getElementRect(pinElementParentOffset.offsetParent).width;\n        var width = _getElementRect(pinElement).width;\n        var right = offsetParentWidth - (left + width);\n        dom.setStyle(pinElement, {\n            left: 'auto',\n            right: \"\".concat(right + offset[0], \"px\"),\n            top: \"\".concat(top + offset[1], \"px\"),\n        });\n    };\n    Position.VIEWPORT = VIEWPORT;\n    Position.place = function (props) { return new Position(props).setPosition(); };\n    return Position;\n}());\nexport default Position;\n","import { __extends } from \"tslib\";\nimport { Component, Children } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { func, dom, events } from '../util';\nimport position from './utils/position';\nimport findNode from './utils/find-node';\nimport { warning } from '../util/log';\nvar noop = func.noop, bindCtx = func.bindCtx;\nvar getStyle = dom.getStyle;\nvar place = position.place;\n// Follow react NESTED_UPDATE_LIMIT = 50\nvar MAX_UPDATE_COUNT = 50;\nvar Position = /** @class */ (function (_super) {\n    __extends(Position, _super);\n    function Position(props) {\n        var _this = _super.call(this, props) || this;\n        _this.updateCount = 0;\n        _this.observe = function () {\n            var contentNode = _this.getContentNode();\n            contentNode && _this.resizeObserver.observe(contentNode);\n        };\n        _this.unobserve = function () {\n            _this.resizeObserver.disconnect();\n        };\n        _this.shouldIgnorePosition = function () {\n            var node = _this.getContentNode();\n            if (typeof window === 'undefined') {\n                return true;\n            }\n            if (!node) {\n                return true;\n            }\n            // 从文档中移除\n            if (!node.parentNode) {\n                return true;\n            }\n            // 元素隐藏\n            var _a = getComputedStyle(node), position = _a.position, display = _a.display, visibility = _a.visibility;\n            if (!node.offsetParent && position !== 'fixed') {\n                return true;\n            }\n            // Firefox offsetParent 会返回 body，这里兼容处理\n            if (display === 'none' || visibility === 'hidden') {\n                return true;\n            }\n            // 兜底处理，同步进程里连续更新多次，强制中断\n            _this.updateCount++;\n            Promise.resolve().then(function () {\n                _this.updateCount = 0;\n            });\n            if (_this.updateCount > MAX_UPDATE_COUNT - 10) {\n                warning('Over maximum times to adjust position at one task, it is recommended to use v2.');\n                return true;\n            }\n            return false;\n        };\n        bindCtx(_this, ['handleResize']);\n        _this.resizeObserver = new ResizeObserver(_this.handleResize);\n        return _this;\n    }\n    Position.prototype.componentDidMount = function () {\n        this.setPosition();\n        if (this.props.needListenResize) {\n            if (typeof window !== 'undefined') {\n                events.on(window, 'resize', this.handleResize);\n            }\n            this.observe();\n        }\n    };\n    Position.prototype.componentDidUpdate = function (prevProps) {\n        var props = this.props;\n        if (('align' in props && props.align !== prevProps.align) || props.shouldUpdatePosition) {\n            this.shouldUpdatePosition = true;\n        }\n        if (this.shouldUpdatePosition) {\n            clearTimeout(this.resizeTimeout);\n            this.setPosition();\n            this.shouldUpdatePosition = false;\n        }\n    };\n    Position.prototype.componentWillUnmount = function () {\n        if (this.props.needListenResize) {\n            events.off(window, 'resize', this.handleResize);\n            this.unobserve();\n        }\n        clearTimeout(this.resizeTimeout);\n    };\n    Position.prototype.setPosition = function () {\n        var _a = this.props, align = _a.align, offset = _a.offset, beforePosition = _a.beforePosition, onPosition = _a.onPosition, needAdjust = _a.needAdjust, container = _a.container, rtl = _a.rtl, pinFollowBaseElementWhenFixed = _a.pinFollowBaseElementWhenFixed, autoFit = _a.autoFit;\n        if (this.shouldIgnorePosition()) {\n            return;\n        }\n        beforePosition();\n        var contentNode = this.getContentNode();\n        var targetNode = this.getTargetNode();\n        if (contentNode && targetNode) {\n            var resultAlign = place({\n                pinElement: contentNode,\n                baseElement: targetNode,\n                pinFollowBaseElementWhenFixed: pinFollowBaseElementWhenFixed,\n                align: align,\n                offset: offset,\n                autoFit: autoFit,\n                container: container,\n                needAdjust: needAdjust,\n                isRtl: rtl,\n            });\n            var top_1 = getStyle(contentNode, 'top');\n            var left = getStyle(contentNode, 'left');\n            onPosition({\n                align: resultAlign.split(' '),\n                top: top_1,\n                left: left,\n            }, contentNode);\n        }\n    };\n    Position.prototype.getContentNode = function () {\n        try {\n            return findDOMNode(this);\n        }\n        catch (err) {\n            return null;\n        }\n    };\n    Position.prototype.getTargetNode = function () {\n        var target = this.props.target;\n        return target === position.VIEWPORT ? position.VIEWPORT : findNode(target, this.props);\n    };\n    Position.prototype.handleResize = function () {\n        var _this = this;\n        clearTimeout(this.resizeTimeout);\n        this.resizeTimeout = window.setTimeout(function () {\n            _this.setPosition();\n        }, 200);\n    };\n    Position.prototype.render = function () {\n        return Children.only(this.props.children);\n    };\n    Position.displayName = 'Position';\n    Position.VIEWPORT = position.VIEWPORT;\n    Position.propTypes = {\n        children: PropTypes.node,\n        target: PropTypes.any,\n        container: PropTypes.any,\n        align: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n        offset: PropTypes.array,\n        beforePosition: PropTypes.func,\n        onPosition: PropTypes.func,\n        needAdjust: PropTypes.bool,\n        autoFit: PropTypes.bool,\n        needListenResize: PropTypes.bool,\n        shouldUpdatePosition: PropTypes.bool,\n        rtl: PropTypes.bool,\n        pinFollowBaseElementWhenFixed: PropTypes.bool,\n    };\n    Position.defaultProps = {\n        align: 'tl bl',\n        offset: [0, 0],\n        beforePosition: noop,\n        onPosition: noop,\n        needAdjust: true,\n        autoFit: false,\n        needListenResize: true,\n        shouldUpdatePosition: false,\n        rtl: false,\n    };\n    return Position;\n}(Component));\nexport default Position;\n","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport React, { Children, Component, cloneElement, } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { dom, events, focus, func, guid, KEYCODE, support } from '../util';\nimport overlayManager from './manager';\nimport Gateway from './gateway';\nimport Position from './position';\nimport findNode from './utils/find-node';\nvar saveLastFocusNode = focus.saveLastFocusNode, getFocusNodeList = focus.getFocusNodeList, backLastFocusNode = focus.backLastFocusNode;\nvar makeChain = func.makeChain, noop = func.noop, bindCtx = func.bindCtx;\nvar getContainerNode = function (props) {\n    var targetNode = findNode(props.target);\n    return findNode(props.container, targetNode);\n};\nvar prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\nvar getStyleProperty = function (node, name) {\n    var style = window.getComputedStyle(node);\n    var ret = '';\n    for (var i = 0; i < prefixes.length; i++) {\n        ret = style.getPropertyValue(prefixes[i] + name);\n        if (ret) {\n            break;\n        }\n    }\n    return ret;\n};\n// 存 containerNode 信息\nvar containerNodeList = [];\n/**\n * Overlay\n */\nvar Overlay = /** @class */ (function (_super) {\n    __extends(Overlay, _super);\n    function Overlay(props) {\n        var _this = _super.call(this, props) || this;\n        _this.saveContentRef = function (ref) {\n            _this.contentRef = ref;\n        };\n        _this.saveGatewayRef = function (ref) {\n            _this.gatewayRef = ref;\n        };\n        _this.lastAlign = props.align;\n        bindCtx(_this, [\n            'handlePosition',\n            'handleAnimateEnd',\n            'handleDocumentKeyDown',\n            'handleDocumentClick',\n            'handleMaskClick',\n            'beforeOpen',\n            'beforeClose',\n        ]);\n        _this.state = {\n            visible: false,\n            status: 'none',\n            animation: _this.getAnimation(props),\n            willOpen: false,\n            willClose: false,\n        };\n        _this.timeoutMap = {};\n        return _this;\n    }\n    Overlay.getDerivedStateFromProps = function (nextProps, prevState) {\n        var willOpen = !prevState.visible && nextProps.visible;\n        var willClose = prevState.visible && !nextProps.visible;\n        var nextState = {\n            willOpen: willOpen,\n            willClose: willClose,\n        };\n        if (willOpen) {\n            nextProps.beforeOpen && nextProps.beforeOpen();\n        }\n        else if (willClose) {\n            nextProps.beforeClose && nextProps.beforeClose();\n        }\n        if (nextProps.animation || nextProps.animation === false) {\n            nextState.animation = nextProps.animation;\n        }\n        if (nextProps.animation !== false && support.animation) {\n            if (willOpen) {\n                nextState.visible = true;\n                nextState.status = 'mounting';\n            }\n            else if (willClose) {\n                // can not set visible=false directly, otherwise animation not work without dom\n                // nextState.visible = false;\n                nextState.status = 'leaving';\n            }\n        }\n        else if ('visible' in nextProps && nextProps.visible !== prevState.visible) {\n            nextState.visible = nextProps.visible;\n        }\n        return nextState;\n    };\n    Overlay.prototype.componentDidMount = function () {\n        if (this.state.willOpen) {\n            this.beforeOpen();\n        }\n        else if (this.state.willClose) {\n            this.beforeClose();\n        }\n        if (this.state.visible) {\n            this.doAnimation(true, false);\n            this._isMounted = true;\n        }\n        this.addDocumentEvents();\n        overlayManager.addOverlay(this);\n    };\n    Overlay.prototype.componentDidUpdate = function (prevProps) {\n        if (this.state.willOpen) {\n            this.beforeOpen();\n        }\n        else if (this.state.willClose) {\n            this.beforeClose();\n        }\n        if (!this._isMounted && this.props.visible) {\n            this._isMounted = true;\n        }\n        if (this.props.align !== prevProps.align) {\n            this.lastAlign = prevProps.align;\n        }\n        var willOpen = !prevProps.visible && this.props.visible;\n        var willClose = prevProps.visible && !this.props.visible;\n        (willOpen || willClose) && this.doAnimation(willOpen, willClose);\n    };\n    Overlay.prototype.componentWillUnmount = function () {\n        this._isDestroyed = true;\n        this._isMounted = false;\n        overlayManager.removeOverlay(this);\n        this.removeDocumentEvents();\n        if (this.focusTimeout) {\n            clearTimeout(this.focusTimeout);\n        }\n        if (this._animation) {\n            this._animation.off();\n            this._animation = null;\n        }\n        this.beforeClose();\n    };\n    Overlay.prototype.doAnimation = function (open, close) {\n        var _this = this;\n        if (this.state.animation && support.animation) {\n            if (open) {\n                this.onEntering();\n            }\n            else if (close) {\n                this.onLeaving();\n            }\n            this.addAnimationEvents();\n        }\n        else {\n            if (open) {\n                // fix https://github.com/alibaba-fusion/next/issues/1901\n                setTimeout(function () {\n                    _this.props.onOpen();\n                    dom.addClass(_this.getWrapperNode(), 'opened');\n                    overlayManager.addOverlay(_this);\n                    _this.props.afterOpen();\n                });\n            }\n            else if (close) {\n                this.props.onClose();\n                dom.removeClass(this.getWrapperNode(), 'opened');\n                overlayManager.removeOverlay(this);\n                this.props.afterClose();\n            }\n            this.setFocusNode();\n        }\n    };\n    Overlay.prototype.getAnimation = function (props) {\n        if (props.animation === false) {\n            return false;\n        }\n        if (props.animation) {\n            return props.animation;\n        }\n        return this.getAnimationByAlign(props.align);\n    };\n    Overlay.prototype.getAnimationByAlign = function (align) {\n        switch (align[0]) {\n            case 't':\n                return {\n                    // 为了防止有的用户 js 升级了而 css 没升级，所以把两个动画都保留了。\n                    // 动画不会叠加，会替代，顺序根据 src/animate/main.scss 中的样式先后顺序遵循 css 覆盖原则\n                    // fadeInDownSmall fadeOutUpSmall 优先级更高\n                    in: 'expandInDown fadeInDownSmall',\n                    out: 'expandOutUp fadeOutUpSmall',\n                };\n            case 'b':\n                return {\n                    in: 'fadeInUp',\n                    out: 'fadeOutDown',\n                };\n            default:\n                return {\n                    in: 'expandInDown fadeInDownSmall',\n                    out: 'expandOutUp fadeOutUpSmall',\n                };\n        }\n    };\n    Overlay.prototype.addAnimationEvents = function () {\n        var _this = this;\n        if (typeof window === 'undefined') {\n            return;\n        }\n        setTimeout(function () {\n            var node = _this.getContentNode();\n            if (node) {\n                var id_1 = guid();\n                _this._animation = events.on(node, support.animation.end, _this.handleAnimateEnd.bind(_this, id_1));\n                var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n                var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n                var time = animationDelay + animationDuration;\n                if (time) {\n                    _this.timeoutMap[id_1] = window.setTimeout(function () {\n                        _this.handleAnimateEnd(id_1);\n                    }, time * 1000 + 200);\n                }\n            }\n        });\n    };\n    Overlay.prototype.handlePosition = function (config) {\n        var align = config.align.join(' ');\n        if (!('animation' in this.props) && this.props.needAdjust && this.lastAlign !== align) {\n            this.setState({\n                animation: this.getAnimationByAlign(align),\n            });\n        }\n        var status = this.state.status;\n        if (status === 'mounting') {\n            this.setState({\n                status: 'entering',\n            });\n        }\n        this.lastAlign = align;\n    };\n    Overlay.prototype.handleAnimateEnd = function (id) {\n        if (this.timeoutMap[id]) {\n            clearTimeout(this.timeoutMap[id]);\n        }\n        delete this.timeoutMap[id];\n        if (this._animation) {\n            this._animation.off();\n            this._animation = null;\n        }\n        if (!this._isMounted) {\n            return;\n        }\n        if (this.state.status === 'leaving') {\n            this.setState({\n                visible: false,\n                status: 'none',\n            });\n            this.onLeaved();\n            // dom 结构首次出现 触发的是 entering\n            // dom 结构已经存在（例如设置了 cache），触发的是 mounting\n        }\n        else if (this.state.status === 'entering' || this.state.status === 'mounting') {\n            this.setState({\n                status: 'none',\n            });\n            this.onEntered();\n        }\n    };\n    Overlay.prototype.onEntering = function () {\n        var _this = this;\n        if (this._isDestroyed) {\n            return;\n        }\n        // make sure overlay.ref has been called (eg: menu/popup-item called overlay.getInstance().getContentNode().)\n        setTimeout(function () {\n            var wrapperNode = _this.getWrapperNode();\n            dom.addClass(wrapperNode, 'opened');\n            _this.props.onOpen();\n        });\n    };\n    Overlay.prototype.onLeaving = function () {\n        var wrapperNode = this.getWrapperNode();\n        dom.removeClass(wrapperNode, 'opened');\n        this.props.onClose();\n    };\n    Overlay.prototype.onEntered = function () {\n        overlayManager.addOverlay(this);\n        this.setFocusNode();\n        this.props.afterOpen();\n    };\n    Overlay.prototype.onLeaved = function () {\n        overlayManager.removeOverlay(this);\n        this.setFocusNode();\n        this.props.afterClose();\n    };\n    Overlay.prototype.beforeOpen = function () {\n        if (this.props.disableScroll) {\n            var containerNode_1 = getContainerNode(this.props) || document.body;\n            var _a = containerNode_1.style, overflow = _a.overflow, paddingRight = _a.paddingRight;\n            var cnInfo = containerNodeList.find(function (m) { return m.containerNode === containerNode_1; }) || {\n                containerNode: containerNode_1,\n                count: 0,\n            };\n            /**\n             * container 节点初始状态已经是 overflow=hidden 则忽略\n             * See {@link https://codesandbox.io/s/next-overlay-overflow-2-fulpq?file=/src/App.js}\n             */\n            if (cnInfo.count === 0 && overflow !== 'hidden') {\n                var style = {\n                    overflow: 'hidden',\n                };\n                cnInfo.overflow = overflow;\n                if (dom.hasScroll(containerNode_1)) {\n                    cnInfo.paddingRight = paddingRight;\n                    style.paddingRight = \"\".concat(dom.getStyle(containerNode_1, 'paddingRight') +\n                        dom.scrollbar().width, \"px\");\n                }\n                dom.setStyle(containerNode_1, style);\n                containerNodeList.push(cnInfo);\n                cnInfo.count++;\n            }\n            else if (cnInfo.count) {\n                cnInfo.count++;\n            }\n            this._containerNode = containerNode_1;\n        }\n    };\n    Overlay.prototype.beforeClose = function () {\n        var _this = this;\n        if (this.props.disableScroll) {\n            var idx = containerNodeList.findIndex(function (cn) { return cn.containerNode === _this._containerNode; });\n            if (idx !== -1) {\n                var cnInfo = containerNodeList[idx];\n                var overflow = cnInfo.overflow, paddingRight = cnInfo.paddingRight;\n                // 最后一个 overlay 的时候再将样式重置回去\n                // 此时 overflow 应该值在 beforeOpen 中设置的 hidden\n                if (cnInfo.count === 1 &&\n                    this._containerNode &&\n                    this._containerNode.style.overflow === 'hidden') {\n                    var style = {\n                        overflow: overflow,\n                    };\n                    if (paddingRight !== undefined) {\n                        style.paddingRight = paddingRight;\n                    }\n                    dom.setStyle(this._containerNode, style);\n                }\n                cnInfo.count--;\n                if (cnInfo.count === 0) {\n                    containerNodeList.splice(idx, 1);\n                }\n            }\n            this._containerNode = undefined;\n        }\n    };\n    Overlay.prototype.setFocusNode = function () {\n        var _this = this;\n        if (!this.props.autoFocus) {\n            return;\n        }\n        if (this.state.visible && !this._hasFocused) {\n            saveLastFocusNode();\n            // 这个时候很可能上一个弹层的关闭事件还未触发，导致焦点已经回到触发的元素\n            // 这里延时处理一下，延时的时间为 document.click 捕获触发的延时时间\n            this.focusTimeout = window.setTimeout(function () {\n                var node = _this.getContentNode();\n                if (node) {\n                    var focusNodeList = getFocusNodeList(node);\n                    if (focusNodeList.length) {\n                        focusNodeList[0].focus();\n                    }\n                    _this._hasFocused = true;\n                }\n            }, 100);\n        }\n        else if (!this.state.visible && this._hasFocused) {\n            backLastFocusNode();\n            this._hasFocused = false;\n        }\n    };\n    Overlay.prototype.getContent = function () {\n        return this.contentRef;\n    };\n    Overlay.prototype.getContentNode = function () {\n        try {\n            return findDOMNode(this.contentRef);\n        }\n        catch (err) {\n            return null;\n        }\n    };\n    Overlay.prototype.getWrapperNode = function () {\n        return this.gatewayRef ? this.gatewayRef.getChildNode() : null;\n    };\n    /**\n     * document global event\n     */\n    Overlay.prototype.addDocumentEvents = function () {\n        // FIXME: canCloseByEsc、canCloseByOutSideClick、canCloseByMask 仅在 didMount 时生效，update 时不生效\n        var useCapture = this.props.useCapture;\n        // use capture phase listener to be compatible with react17\n        // https://reactjs.org/blog/2020/08/10/react-v17-rc.html#fixing-potential-issues\n        if (typeof document === 'undefined')\n            return;\n        if (this.props.canCloseByEsc) {\n            this._keydownEvents = events.on(document, 'keydown', this.handleDocumentKeyDown, useCapture);\n        }\n        if (this.props.canCloseByOutSideClick) {\n            this._clickEvents = events.on(document, 'click', this.handleDocumentClick, useCapture);\n            this._touchEvents = events.on(document, 'touchend', this.handleDocumentClick, useCapture);\n        }\n    };\n    Overlay.prototype.removeDocumentEvents = function () {\n        var _this = this;\n        ['_keydownEvents', '_clickEvents', '_touchEvents'].forEach(function (event) {\n            if (_this[event]) {\n                _this[event].off();\n                _this[event] = null;\n            }\n        });\n    };\n    Overlay.prototype.handleDocumentKeyDown = function (e) {\n        if (this.state.visible &&\n            e.keyCode === KEYCODE.ESC &&\n            overlayManager.isCurrentOverlay(this)) {\n            this.props.onRequestClose('keyboard', e);\n        }\n    };\n    Overlay.prototype.isInShadowDOM = function (node) {\n        return node.getRootNode ? node.getRootNode().nodeType === 11 : false;\n    };\n    Overlay.prototype.getEventPath = function (event) {\n        // 参考 https://github.com/spring-media/react-shadow-dom-retarget-events/blob/master/index.js#L29\n        return (event.path ||\n            (event.composedPath && event.composedPath()) ||\n            this.composedPath(event.target));\n    };\n    Overlay.prototype.composedPath = function (el) {\n        var path = [];\n        while (el) {\n            path.push(el);\n            if (el.tagName === 'HTML') {\n                path.push(document);\n                path.push(window);\n                return path;\n            }\n            el = el.parentElement;\n        }\n    };\n    Overlay.prototype.matchInShadowDOM = function (node, e) {\n        if (this.isInShadowDOM(node)) {\n            // Shadow DOM 环境中，触发点击事件，监听 document click 事件获得的事件源\n            // 并非实际触发的 dom 节点，而是 Shadow DOM 的 host 节点\n            // 进而会导致如 Select 组件的下拉弹层打开后立即关闭等问题\n            // 因此额外增加 node 和 eventPath 的判断\n            var eventPath = this.getEventPath(e);\n            return node === eventPath[0] || node.contains(eventPath[0]);\n        }\n        return false;\n    };\n    Overlay.prototype.handleDocumentClick = function (e) {\n        var _this = this;\n        if (this.state.visible) {\n            var safeNode = this.props.safeNode;\n            var safeNodes = Array.isArray(safeNode) ? __spreadArray([], __read(safeNode), false) : [safeNode];\n            safeNodes.unshift(function () { return _this.getWrapperNode(); });\n            for (var i = 0; i < safeNodes.length; i++) {\n                var node = findNode(safeNodes[i], this.props);\n                // HACK: 如果触发点击的节点是弹层内部的节点，并且在被点击后立即销毁，那么此时无法使用 node.contains(e.target)\n                // 来判断此时点击的节点是否是弹层内部的节点，额外判断\n                if (node &&\n                    (node === e.target ||\n                        node.contains(e.target) ||\n                        this.matchInShadowDOM(node, e) ||\n                        (e.target !== document &&\n                            !document.documentElement.contains(e.target)))) {\n                    return;\n                }\n            }\n            this.props.onRequestClose('docClick', e);\n        }\n    };\n    Overlay.prototype.handleMaskClick = function (e) {\n        if (e.currentTarget === e.target && this.props.canCloseByMask) {\n            this.props.onRequestClose('maskClick', e);\n        }\n    };\n    // 兼容过去的用法：this.popupRef.getInstance().overlay.getInstance().getContentNode()\n    Overlay.prototype.getInstance = function () {\n        return this;\n    };\n    Overlay.prototype.render = function () {\n        var _a, _b;\n        var _c = this.props, prefix = _c.prefix, className = _c.className, style = _c.style, propChildren = _c.children, target = _c.target, align = _c.align, offset = _c.offset, container = _c.container, hasMask = _c.hasMask, needAdjust = _c.needAdjust, autoFit = _c.autoFit, beforePosition = _c.beforePosition, onPosition = _c.onPosition, wrapperStyle = _c.wrapperStyle, rtl = _c.rtl, propShouldUpdatePosition = _c.shouldUpdatePosition, cache = _c.cache, wrapperClassName = _c.wrapperClassName, onMaskMouseEnter = _c.onMaskMouseEnter, onMaskMouseLeave = _c.onMaskMouseLeave, maskClass = _c.maskClass, isChildrenInMask = _c.isChildrenInMask, pinFollowBaseElementWhenFixed = _c.pinFollowBaseElementWhenFixed;\n        var _d = this.state, stateVisible = _d.visible, status = _d.status, animation = _d.animation;\n        var children = stateVisible || (cache && this._isMounted) ? propChildren : null;\n        if (children) {\n            var child = Children.only(children);\n            // if chlild is a functional component wrap in a component to allow a ref to be set\n            if (typeof child.type === 'function' && !(child.type.prototype instanceof Component)) {\n                child = React.createElement(\"div\", { role: \"none\" }, child);\n            }\n            var childClazz = classnames((_a = {},\n                _a[\"\".concat(prefix, \"overlay-inner\")] = true,\n                _a[animation.in] = status === 'entering' || status === 'mounting',\n                _a[animation.out] = status === 'leaving',\n                _a[child.props.className] = !!child.props.className,\n                _a[className] = !!className,\n                _a));\n            if (typeof child.ref === 'string') {\n                throw new Error('Can not set ref by string in Overlay, use function instead.');\n            }\n            children = cloneElement(child, {\n                className: childClazz,\n                style: __assign(__assign({}, child.props.style), style),\n                ref: makeChain(this.saveContentRef, child.ref),\n                'aria-hidden': !stateVisible && cache && this._isMounted,\n                onClick: makeChain(this.props.onClick, child.props.onClick),\n                onTouchEnd: makeChain(this.props.onTouchEnd, child.props.onTouchEnd),\n            });\n            if (align) {\n                var shouldUpdatePosition = status !== 'leaving' && propShouldUpdatePosition;\n                children = (React.createElement(Position, { children: children, target: target, align: align, offset: offset, autoFit: autoFit, container: container, needAdjust: needAdjust, pinFollowBaseElementWhenFixed: pinFollowBaseElementWhenFixed, beforePosition: beforePosition, onPosition: makeChain(this.handlePosition, onPosition), shouldUpdatePosition: shouldUpdatePosition, rtl: rtl }));\n            }\n            var wrapperClazz = classnames([\"\".concat(prefix, \"overlay-wrapper\"), wrapperClassName]);\n            var newWrapperStyle = Object.assign({}, {\n                display: stateVisible ? '' : 'none',\n            }, wrapperStyle);\n            var maskClazz = classnames((_b = {},\n                _b[\"\".concat(prefix, \"overlay-backdrop\")] = true,\n                _b[maskClass] = !!maskClass,\n                _b));\n            children = (React.createElement(\"div\", { className: wrapperClazz, style: newWrapperStyle, dir: rtl ? 'rtl' : undefined },\n                hasMask ? (React.createElement(\"div\", { className: maskClazz, onClick: this.handleMaskClick, onMouseEnter: onMaskMouseEnter, onMouseLeave: onMaskMouseLeave, dir: rtl ? 'rtl' : undefined }, isChildrenInMask && children)) : null,\n                !isChildrenInMask && children));\n        }\n        return React.createElement(Gateway, { container: container, target: target, children: children, ref: this.saveGatewayRef });\n    };\n    Overlay.propTypes = {\n        prefix: PropTypes.string,\n        pure: PropTypes.bool,\n        rtl: PropTypes.bool,\n        className: PropTypes.string,\n        style: PropTypes.object,\n        children: PropTypes.any,\n        visible: PropTypes.bool,\n        onRequestClose: PropTypes.func,\n        target: PropTypes.any,\n        align: PropTypes.string,\n        offset: PropTypes.array,\n        container: PropTypes.any,\n        hasMask: PropTypes.bool,\n        canCloseByEsc: PropTypes.bool,\n        canCloseByOutSideClick: PropTypes.bool,\n        canCloseByMask: PropTypes.bool,\n        beforeOpen: PropTypes.func,\n        onOpen: PropTypes.func,\n        afterOpen: PropTypes.func,\n        beforeClose: PropTypes.func,\n        onClose: PropTypes.func,\n        afterClose: PropTypes.func,\n        beforePosition: PropTypes.func,\n        onPosition: PropTypes.func,\n        shouldUpdatePosition: PropTypes.bool,\n        autoFocus: PropTypes.bool,\n        needAdjust: PropTypes.bool,\n        disableScroll: PropTypes.bool,\n        useCapture: PropTypes.bool,\n        cache: PropTypes.bool,\n        safeNode: PropTypes.any,\n        wrapperClassName: PropTypes.string,\n        wrapperStyle: PropTypes.object,\n        animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n        onMaskMouseEnter: PropTypes.func,\n        onMaskMouseLeave: PropTypes.func,\n        onClick: PropTypes.func,\n        maskClass: PropTypes.string,\n        isChildrenInMask: PropTypes.bool,\n        pinFollowBaseElementWhenFixed: PropTypes.bool,\n        v2: PropTypes.bool,\n        points: PropTypes.array,\n    };\n    Overlay.defaultProps = {\n        prefix: 'next-',\n        pure: false,\n        visible: false,\n        onRequestClose: noop,\n        target: Position.VIEWPORT,\n        align: 'tl bl',\n        offset: [0, 0],\n        hasMask: false,\n        canCloseByEsc: true,\n        canCloseByOutSideClick: true,\n        canCloseByMask: true,\n        beforeOpen: noop,\n        onOpen: noop,\n        afterOpen: noop,\n        beforeClose: noop,\n        onClose: noop,\n        afterClose: noop,\n        beforePosition: noop,\n        onPosition: noop,\n        onMaskMouseEnter: noop,\n        onMaskMouseLeave: noop,\n        shouldUpdatePosition: false,\n        autoFocus: false,\n        needAdjust: true,\n        disableScroll: false,\n        cache: false,\n        isChildrenInMask: false,\n        onTouchEnd: function (event) {\n            event.stopPropagation();\n        },\n        onClick: function (event) { return event.stopPropagation(); },\n        maskClass: '',\n        useCapture: true,\n    };\n    Overlay.displayName = 'Overlay';\n    return Overlay;\n}(Component));\nexport default polyfill(Overlay);\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import { useEffect, useRef, useLayoutEffect, useCallback } from 'react';\nimport { findDOMNode } from 'react-dom';\nexport function useListener(nodeList, eventName, callback, useCapture, condition) {\n  useEffect(function () {\n    if (condition) {\n      if (!Array.isArray(nodeList)) {\n        nodeList = [nodeList];\n      }\n      nodeList.forEach(function (n) {\n        n && n.addEventListener && n.addEventListener(eventName, callback, useCapture || false);\n      });\n      return function () {\n        Array.isArray(nodeList) && nodeList.forEach(function (n) {\n          n && n.removeEventListener && n.removeEventListener(eventName, callback, useCapture || false);\n        });\n      };\n    }\n    return undefined;\n  }, [condition]);\n}\n\n/**\n * 将 N 个方法合并为一个链式调用的方法\n * @return {Function}     合并后的方法\n *\n * @example\n * func.makeChain(this.handleChange, this.props.onChange);\n */\nexport function makeChain() {\n  var _this2 = this;\n  for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n    fns[_key] = arguments[_key];\n  }\n  if (fns.length === 1) {\n    return fns[0];\n  }\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    for (var i = 0, j = fns.length; i < j; i++) {\n      if (fns[i] && fns[i].apply) {\n        // @ts-ignore\n        fns[i].apply(_this2, args);\n      }\n    }\n  };\n}\nexport function callRef(ref, element) {\n  if (!ref) {\n    return;\n  }\n  if (typeof ref === 'string') {\n    throw new Error(\"can not set ref string for \" + ref);\n  } else if (typeof ref === 'function') {\n    ref(element);\n  } else if (Object.prototype.hasOwnProperty.call(ref, 'current')) {\n    ref.current = element;\n  }\n}\nexport function saveRef(ref) {\n  if (!ref) {\n    return null;\n  }\n  return function (element) {\n    if (typeof ref === 'string') {\n      throw new Error(\"can not set ref string for \" + ref);\n    } else if (typeof ref === 'function') {\n      ref(element);\n    } else if (Object.prototype.hasOwnProperty.call(ref, 'current')) {\n      ref.current = element;\n    }\n  };\n}\n\n/**\n * 获取 position != static，用来计算相对位置的容器\n * @param container\n * @returns\n */\nexport var getRelativeContainer = function getRelativeContainer(container) {\n  if (typeof document === 'undefined') {\n    return container;\n  }\n  var calcContainer = container;\n  while (getStyle(calcContainer, 'position') === 'static') {\n    if (!calcContainer || calcContainer === document.documentElement) {\n      return document.documentElement;\n    }\n    calcContainer = calcContainer.parentNode;\n  }\n  return calcContainer;\n};\n\n/**\n * 获取 target 和 container 之间会滚动的元素 (不包含 target、container)\n * 用来监听滚动元素，自动更新弹窗位置\n * @param targetNode\n * @param container\n * @returns\n */\nexport var getOverflowNodes = function getOverflowNodes(targetNode, container) {\n  if (typeof document === 'undefined') {\n    return [];\n  }\n  var overflowNodes = [];\n  // 使用 getViewPort 方式获取滚动节点，考虑元素可能会跳出最近的滚动容器的情况（绝对定位，containingBlock 等原因）\n  // 原先的只获取了可滚动的滚动容器（滚动高度超出容器高度），改成只要具有滚动属性即可，因为后面可能会发生内容变化导致其变得可滚动了\n  var overflowNode = getViewPortExcludeSelf(targetNode);\n  while (overflowNode && container.contains(overflowNode) && container !== overflowNode) {\n    overflowNodes.push(overflowNode);\n    overflowNode = getViewPortExcludeSelf(overflowNode);\n  }\n  if (isScrollableElement(container)) {\n    overflowNodes.push(container);\n  }\n  return overflowNodes;\n};\n\n/**\n * 是否是 webkit 内核\n */\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) {\n    return false;\n  }\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\n\n/**\n * 判断元素是否是会影响后代节点定位的 containing block\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n */\nfunction isContainingBlock(ele) {\n  var webkit = isWebKit();\n  var css = getComputedStyle(ele);\n  return Boolean(css.transform && css.transform !== 'none' || css.perspective && css.perspective !== 'none' || css.containerType && css.containerType !== 'normal' || !webkit && css.backdropFilter && css.backdropFilter !== 'none' || !webkit && css.filter && css.filter !== 'none' || ['transform', 'perspective', 'filter'].some(function (value) {\n    return (css.willChange || '').includes(value);\n  }) || ['paint', 'layout', 'strict', 'content'].some(function (value) {\n    return (css.contain || '').includes(value);\n  }));\n}\n\n/**\n * 判断元素是否是 html 或 body 元素\n */\nfunction isLastTraversableElement(ele) {\n  return ['html', 'body'].includes(ele.tagName.toLowerCase());\n}\n\n/**\n * 获取 containing block\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n */\nfunction getContainingBlock(element) {\n  var currentElement = element.parentElement;\n  while (currentElement && !isLastTraversableElement(currentElement)) {\n    if (isContainingBlock(currentElement)) {\n      return currentElement;\n    } else {\n      currentElement = currentElement.parentElement;\n    }\n  }\n  return null;\n}\n\n/**\n * 判断元素是否会裁剪内容区域\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\n */\nvar isContentClippedElement = function isContentClippedElement(element) {\n  var overflow = getStyle(element, 'overflow');\n  // 测试环境 overflow 默认为 ''\n  return overflow && overflow !== 'visible' || element === document.documentElement;\n};\n\n/**\n * 判断元素是否是可滚动的元素，且滚动内容尺寸大于元素尺寸\n */\nfunction isScrollableElement(element) {\n  var overflow = getStyle(element, 'overflow');\n  // 这里兼容老的逻辑判断，忽略 hidden\n  if (element === document.documentElement || overflow && overflow.match(/auto|scroll/)) {\n    var clientWidth = element.clientWidth,\n      clientHeight = element.clientHeight,\n      scrollWidth = element.scrollWidth,\n      scrollHeight = element.scrollHeight;\n    // 仅当实际滚动高度大于元素尺寸时，才被视作是可滚动元素\n    return clientHeight !== scrollHeight || clientWidth !== scrollWidth;\n  }\n  return false;\n}\nexport function getRect(target) {\n  if (target === document.documentElement || target === document.body) {\n    var _document$documentEle = document.documentElement,\n      _width = _document$documentEle.clientWidth,\n      _height = _document$documentEle.clientHeight;\n    return {\n      left: 0,\n      top: 0,\n      width: _width,\n      height: _height\n    };\n  }\n  var _target$getBoundingCl = target.getBoundingClientRect(),\n    left = _target$getBoundingCl.left,\n    top = _target$getBoundingCl.top,\n    width = _target$getBoundingCl.width,\n    height = _target$getBoundingCl.height;\n  return {\n    left: left,\n    top: top,\n    width: width,\n    height: height\n  };\n}\n\n/**\n * 获取最近的裁剪内容区域的祖先节点\n */\nfunction getContentClippedElement(element) {\n  if (isContentClippedElement(element)) {\n    return element;\n  }\n  var parent = element.parentElement;\n  while (parent) {\n    if (isContentClippedElement(parent)) {\n      return parent;\n    }\n    parent = parent.parentElement;\n  }\n  return null;\n}\n\n/**\n * 获取定位节点，忽略表格元素影响\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n * @param element\n * @returns closest positioned ancestor element\n */\nfunction getOffsetParent(element) {\n  var offsetParent = element.offsetParent;\n  while (offsetParent && ['table', 'th', 'td'].includes(offsetParent.tagName.toLowerCase())) {\n    offsetParent = offsetParent.offsetParent;\n  }\n  return offsetParent;\n}\nexport function getViewPortExcludeSelf(target) {\n  var fallbackViewportElement = document.documentElement;\n  if (!target) {\n    return fallbackViewportElement;\n  }\n  var parent = ['fixed', 'absolute'].includes(getStyle(target, 'position')) ? getOffsetParent(target) || getContainingBlock(target) : target.parentElement;\n  if (!parent) {\n    return fallbackViewportElement;\n  }\n  if (isContentClippedElement(parent)) {\n    return parent;\n  }\n  return getViewPortExcludeSelf(parent);\n}\n\n/**\n * 获取可视区域，用来计算弹窗应该相对哪个节点做上下左右的位置变化。\n * @param container\n * @returns\n */\nexport function getViewPort(container) {\n  var fallbackViewportElement = document.documentElement;\n  if (!container) {\n    return fallbackViewportElement;\n  }\n\n  // 若 container 的 position 是 absolute 或 fixed，则有可能会脱离其最近的滚动容器，需要根据 offsetParent 和 containing block 来综合判断\n  if (['fixed', 'absolute'].includes(getStyle(container, 'position'))) {\n    if (isContentClippedElement(container)) {\n      return container;\n    }\n\n    // 先获取定位节点（若无则使用 containerBlock）\n    var offsetParent = getOffsetParent(container) || getContainingBlock(container);\n    // 拥有定位节点\n    if (offsetParent) {\n      // 从定位节点开始寻找父级滚动容器\n      return getViewPort(offsetParent);\n    } else {\n      // 无定位节点，也无 containingBlock 影响，则用 fallback 元素\n      return fallbackViewportElement;\n    }\n  }\n  if (isContentClippedElement(container)) {\n    return container;\n  }\n  if (container.parentElement) {\n    return getViewPort(container.parentElement) || fallbackViewportElement;\n  }\n  return fallbackViewportElement;\n}\nexport function getStyle(elt, name) {\n  if (!elt || elt.nodeType !== 1) {\n    return null;\n  }\n  var style = window.getComputedStyle(elt, null);\n  return style.getPropertyValue(name);\n}\nvar PIXEL_PATTERN = /margin|padding|width|height|max|min|offset|size|top|left/i;\nexport function setStyle(node, name, value) {\n  if (!node) {\n    return;\n  }\n  if (typeof name === 'string') {\n    if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n      value = value + \"px\";\n    }\n    // @ts-ignore\n    node.style[name] = value;\n  } else if (typeof name === 'object' && arguments.length === 2) {\n    // @ts-ignore\n    Object.keys(name).forEach(function (key) {\n      return setStyle(node, key, name[key]);\n    });\n  }\n}\n\n// 默认首次调用是立刻执行\nexport function throttle(func, wait) {\n  var previous = -wait;\n  return function () {\n    var now = Date.now();\n    var args = arguments;\n    if (now - previous > wait) {\n      // @ts-ignore\n      var _this = this;\n      window.requestAnimationFrame(function () {\n        func.apply(_this, args);\n      });\n      previous = now;\n    }\n  };\n}\nexport function debounce(func, wait) {\n  var _arguments = arguments,\n    _this3 = this;\n  var timeoutID;\n  return function () {\n    var args = _arguments;\n    clearTimeout(timeoutID);\n    timeoutID = setTimeout(function () {\n      // @ts-ignore\n      func.apply(_this3, args);\n    }, wait);\n  };\n}\n\n/**\n * 元素相对于可视区的 left/top\n * @param node\n * @returns\n */\nexport function getViewTopLeft(node) {\n  /**\n   * document.body 向下滚动后 scrollTop 一直为 0，同时 top=-xx 为负数，相当于本身是没有滚动条的，这个逻辑是正确的。\n   * document.documentElement 向下滚动后 scrollTop/top 都在变化，会影响计算逻辑，所以这里写死 0\n   */\n  if (node === document.documentElement) {\n    return {\n      top: 0,\n      left: 0\n    };\n  }\n  var _node$getBoundingClie = node.getBoundingClientRect(),\n    left = _node$getBoundingClie.left,\n    top = _node$getBoundingClie.top;\n  return {\n    top: top,\n    left: left\n  };\n}\n\n/**\n * get element size\n * offsetWidth/offsetHeight 更容易获取真实大小，不会受到动画影响优先使用。\n * @param       {Element} element\n * @return      {Object}\n */\nexport function getWidthHeight(element) {\n  // element like `svg` do not have offsetWidth and offsetHeight prop\n  // then getBoundingClientRect\n  if ('offsetWidth' in element && 'offsetHeight' in element) {\n    return {\n      width: element.offsetWidth,\n      height: element.offsetHeight\n    };\n  } else {\n    var _getBoundingClientRec = element.getBoundingClientRect(),\n      width = _getBoundingClientRec.width,\n      height = _getBoundingClientRec.height;\n    return {\n      width: width,\n      height: height\n    };\n  }\n}\n\n/**\n * 获取默认的滚动条大小\n * @return {Number} width\n */\nexport function getScrollbarWidth() {\n  var scrollDiv = document.createElement('div');\n  scrollDiv.className += 'just-to-get-scrollbar-size';\n  setStyle(scrollDiv, {\n    position: 'absolute',\n    width: '100px',\n    height: '100px',\n    overflow: 'scroll',\n    top: '-9999px'\n  });\n  document.body && document.body.appendChild(scrollDiv);\n  var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n  document.body.removeChild(scrollDiv);\n  return scrollbarWidth;\n}\n\n/**\n * 元素是否可见\n * @private\n * @param   {Element}  node\n * @return  {Boolean}\n */\nfunction _isVisible(node) {\n  while (node) {\n    if (node === document.body || node === document.documentElement) {\n      break;\n    }\n    if (node.style.display === 'none' || node.style.visibility === 'hidden') {\n      return false;\n    }\n    node = node.parentNode;\n  }\n  return true;\n}\n\n/**\n * 元素是否可以获取焦点\n * @private\n * @param   {Element}  node\n * @return  {Boolean}\n */\nfunction _isFocusable(node) {\n  var nodeName = node.nodeName.toLowerCase();\n  var tabIndex = parseInt(node.getAttribute('tabindex'), 10);\n  var hasTabIndex = !isNaN(tabIndex) && tabIndex > -1;\n  if (_isVisible(node)) {\n    if (nodeName === 'input') {\n      // @ts-ignore\n      return !node.disabled && node.type !== 'hidden';\n    } else if (['select', 'textarea', 'button'].indexOf(nodeName) > -1) {\n      // @ts-ignore\n      return !node.disabled;\n    } else if (nodeName === 'a') {\n      return node.getAttribute('href') || hasTabIndex;\n    } else {\n      return hasTabIndex;\n    }\n  }\n  return false;\n}\n\n/**\n * 列出能获取焦点的子节点\n * @param  {Element} node 容器节点\n * @return {Array<Element>}\n */\nexport function getFocusNodeList(node) {\n  var res = [];\n  var nodeList = node.querySelectorAll('*');\n  nodeList.forEach(function (item) {\n    if (_isFocusable(item)) {\n      var method = item.getAttribute('data-auto-focus') ? 'unshift' : 'push';\n      res[method](item);\n    }\n  });\n  if (_isFocusable(node)) {\n    res.unshift(node);\n  }\n  return res;\n}\nexport function getHTMLElement(node) {\n  if (node) {\n    if (node.nodeType) {\n      if (node.nodeType === 1) {\n        return node;\n      } else {\n        return document.body;\n      }\n    } else if (node === window) {\n      return document.body;\n    } else {\n      return findDOMNode(node);\n    }\n  }\n  return node;\n}\nexport function getTargetNode(target) {\n  if (typeof target === 'function') {\n    return target();\n  } else if (typeof target === 'string') {\n    return document.getElementById(target);\n  }\n\n  // 兼容 target = HTMLElement\n  return target;\n}\nexport function isSameObject(object1, object2) {\n  if (!object1 || !object2) {\n    return false;\n  }\n  var o1keys = Object.keys(object1);\n  var o2keys = Object.keys(object2);\n  if (o2keys.length !== o1keys.length) return false;\n  for (var i = 0; i <= o1keys.length - 1; i++) {\n    var key = o1keys[i];\n    if (!o2keys.includes(key)) return false;\n    // @ts-ignore\n    if (object2[key] !== object1[key]) return false;\n  }\n  return true;\n}\nexport var useEvent = function useEvent(handler) {\n  var handleRef = useRef(handler);\n  useLayoutEffect(function () {\n    handleRef.current = handler;\n  });\n  return useCallback(function () {\n    var fn = handleRef.current;\n    return fn.apply(void 0, arguments);\n  }, []);\n};","function _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport { getViewTopLeft, getViewPort, getWidthHeight, getRect } from './utils';\nvar placementMap = {\n  tl: ['bl', 'tl'],\n  t: ['bc', 'tc'],\n  tr: ['br', 'tr'],\n  lt: ['tr', 'tl'],\n  l: ['cr', 'cl'],\n  lb: ['br', 'bl'],\n  bl: ['tl', 'bl'],\n  b: ['tc', 'bc'],\n  br: ['tr', 'br'],\n  rt: ['tl', 'tr'],\n  r: ['cl', 'cr'],\n  rb: ['bl', 'br']\n};\nfunction getXY(p, staticInfo) {\n  var targetInfo = staticInfo.targetInfo,\n    containerInfo = staticInfo.containerInfo,\n    overlayInfo = staticInfo.overlayInfo,\n    opoints = staticInfo.points,\n    placementOffset = staticInfo.placementOffset,\n    offset = staticInfo.offset,\n    rtl = staticInfo.rtl;\n  var basex = targetInfo.left - containerInfo.left + containerInfo.scrollLeft;\n  var basey = targetInfo.top - containerInfo.top + containerInfo.scrollTop;\n  function setPointX(point, positive, width) {\n    if (positive === void 0) {\n      positive = true;\n    }\n    var plus = positive ? 1 : -1;\n    switch (point) {\n      case 'l':\n        basex += 0;\n        break;\n      case 'c':\n        basex += plus * width / 2;\n        break;\n      case 'r':\n        basex += plus * width;\n        break;\n      // no default\n    }\n  }\n  function setPointY(point, positive, height) {\n    if (positive === void 0) {\n      positive = true;\n    }\n    var plus = positive ? 1 : -1;\n    switch (point) {\n      case 't':\n        basey += 0;\n        break;\n      case 'c':\n        basey += plus * height / 2;\n        break;\n      case 'b':\n        basey += plus * height;\n        break;\n      // no default\n    }\n  }\n  var points = [].concat(opoints);\n  if (p && p in placementMap) {\n    points = placementMap[p];\n  }\n\n  // rtl 左右对调\n  if (rtl) {\n    if (points[0].match(/l/)) {\n      points[0] = points[0].replace('l', 'r');\n    } else if (points[0].match(/r/)) {\n      points[0] = points[0].replace('r', 'l');\n    }\n    if (points[1].match(/l/)) {\n      points[1] = points[1].replace('l', 'r');\n    } else if (points[1].match(/r/)) {\n      points[1] = points[1].replace('r', 'l');\n    }\n  }\n\n  // 目标元素\n  setPointY(points[1][0], true, targetInfo.height);\n  setPointX(points[1][1], true, targetInfo.width);\n  setPointY(points[0][0], false, overlayInfo.height);\n  setPointX(points[0][1], false, overlayInfo.width);\n  if (placementOffset && p.length >= 1) {\n    switch (p[0]) {\n      case 't':\n        basey -= placementOffset;\n        break;\n      case 'b':\n        basey += placementOffset;\n        break;\n      case 'l':\n        basex -= placementOffset;\n        break;\n      case 'r':\n        basex += placementOffset;\n        break;\n      // no default\n    }\n  }\n  return {\n    points: points,\n    left: basex + offset[0],\n    top: basey + offset[1]\n  };\n}\nfunction shouldResizePlacement(l, t, viewport, staticInfo) {\n  var container = staticInfo.container,\n    containerInfo = staticInfo.containerInfo,\n    overlayInfo = staticInfo.overlayInfo;\n  if (viewport !== container) {\n    // 说明 container 不具备滚动属性\n    var _getViewTopLeft = getViewTopLeft(viewport),\n      vleft = _getViewTopLeft.left,\n      vtop = _getViewTopLeft.top;\n    var vwidth = viewport.scrollWidth,\n      vheight = viewport.scrollHeight,\n      vscrollTop = viewport.scrollTop,\n      vscrollLeft = viewport.scrollLeft;\n    var nt = t + containerInfo.top - vtop + vscrollTop;\n    var nl = l + containerInfo.left - vleft + vscrollLeft;\n    return nt < 0 || nl < 0 || nt + overlayInfo.height > vheight || nl + overlayInfo.width > vwidth;\n  }\n  return t < 0 || l < 0 || t + overlayInfo.height > containerInfo.height || l + overlayInfo.width > containerInfo.width;\n}\nfunction getNewPlacements(l, t, p, staticInfo) {\n  var overlayInfo = staticInfo.overlayInfo,\n    viewportInfo = staticInfo.viewportInfo;\n  var _p$split = p.split(''),\n    direction = _p$split[0],\n    _p$split$ = _p$split[1],\n    align = _p$split$ === void 0 ? '' : _p$split$;\n  var topOut = t < 0;\n  var leftOut = l < 0;\n  var rightOut = l + overlayInfo.width > viewportInfo.width;\n  var bottomOut = t + overlayInfo.height > viewportInfo.height;\n  var forbiddenSet = new Set();\n  var forbid = function forbid() {\n    for (var _len = arguments.length, ps = new Array(_len), _key = 0; _key < _len; _key++) {\n      ps[_key] = arguments[_key];\n    }\n    return ps.forEach(function (t) {\n      return forbiddenSet.add(t);\n    });\n  };\n  // 上方超出\n  if (topOut) {\n    forbid('t', 'tl', 'tr');\n  }\n\n  // 右侧超出\n  if (rightOut) {\n    forbid('r', 'rt', 'rb');\n  }\n\n  // 下方超出\n  if (bottomOut) {\n    forbid('b', 'bl', 'br');\n  }\n\n  // 左侧超出\n  if (leftOut) {\n    forbid('l', 'lt', 'lb');\n  }\n  var allPlacements = Object.keys(placementMap);\n  // 过滤出所有可用的\n  var canTryPlacements = allPlacements.filter(function (t) {\n    return !forbiddenSet.has(t);\n  });\n\n  // 无可用\n  if (!canTryPlacements.length) {\n    return null;\n  }\n\n  // 排序规则: 同向 > 对向 > 其他方向; 同align > 其他align; 中间 > l = t > r = b; align规则仅在同侧比较时生效\n  // 参考： https://github.com/alibaba-fusion/overlay/issues/23\n\n  var reverseMap = {\n    l: 'r',\n    r: 'l',\n    t: 'b',\n    b: 't',\n    '': ''\n  };\n  // direction权重, l=t > r=b\n  // 权重差值 4\n  var directionOrderWeights = {\n    t: 10,\n    b: 6,\n    l: 10,\n    r: 6\n  };\n  // 用户的 direction 最高\n  directionOrderWeights[direction] = 12;\n  // 用户 direction 的反转方向其次\n  directionOrderWeights[reverseMap[direction]] = 11;\n\n  // align排序权重: '' > l=t > r=b\n  // 此处取值 2, 1, 0 意为远小于 direction 权重值和其差值，使得在加权和比较时不影响 direction，达到\"仅同向比较align的目的\"\n  var alignOrderWeights = {\n    '': 2,\n    l: 1,\n    r: 0,\n    t: 1,\n    b: 0\n  };\n  // 用户的 align 权重最高\n  alignOrderWeights[align] = 3;\n  canTryPlacements.sort(function (after, before) {\n    var _after$split = after.split(''),\n      afterDirection = _after$split[0],\n      _after$split$ = _after$split[1],\n      afterAlign = _after$split$ === void 0 ? '' : _after$split$;\n    var _before$split = before.split(''),\n      beforeDirection = _before$split[0],\n      _before$split$ = _before$split[1],\n      beforeAlign = _before$split$ === void 0 ? '' : _before$split$;\n    var afterDirectionWeight = directionOrderWeights[afterDirection];\n    var afterAlignWeight = alignOrderWeights[afterAlign];\n    var beforeDirectionWeight = directionOrderWeights[beforeDirection];\n    var beforeAlighWeight = alignOrderWeights[beforeAlign];\n    // direction都相同，比较align weight\n    if (afterDirection === beforeDirection) {\n      return afterAlignWeight > beforeAlighWeight ? -1 : 1;\n    }\n\n    // align 相同，比较 direction weight\n    if (afterAlign === beforeAlign) {\n      return afterDirectionWeight > beforeDirectionWeight ? -1 : 1;\n    }\n\n    // 都不同\n    // 与用户 direction相同情况优先最高\n    if ([afterDirection, beforeDirection].includes(direction)) {\n      return afterDirection === direction ? -1 : 1;\n    }\n    var reverseDirection = reverseMap[direction];\n    // 与用户 reverse direction 相同则优先级其次\n    if ([afterDirection, beforeDirection].includes(reverseDirection)) {\n      return afterDirection === reverseDirection ? -1 : 1;\n    }\n\n    // 与用户align相同,则优先级更高\n    if ([afterAlign, beforeAlign].includes(align)) {\n      return afterAlign === align ? -1 : 1;\n    }\n\n    // 没有特殊情况，进行加权和比较\n    return afterDirectionWeight + afterAlignWeight > beforeDirectionWeight + beforeAlighWeight ? -1 : 1;\n  });\n  return canTryPlacements;\n}\n\n/**\n * 任意预设位置都无法完全容纳overlay，则走兜底逻辑，原则是哪边空间大用哪边\n * fixme: 在overlay尺寸宽高超过滚动容器宽高情况没有考虑，先走adjustXY逻辑\n */\nfunction getBackupPlacement(l, t, p, staticInfo) {\n  var overlayInfo = staticInfo.overlayInfo,\n    viewportInfo = staticInfo.viewportInfo;\n  var _p$split2 = p.split(''),\n    direction = _p$split2[0],\n    align = _p$split2[1];\n  var topOut = t < 0;\n  var leftOut = l < 0;\n  var rightOut = l + overlayInfo.width > viewportInfo.width;\n  var bottomOut = t + overlayInfo.height > viewportInfo.height;\n  var outNumber = [topOut, leftOut, rightOut, bottomOut].filter(Boolean).length;\n  if (outNumber === 3) {\n    var _maps$find;\n    // 三面超出，则使用未超出的方向\n    var maps = [{\n      direction: 't',\n      value: topOut\n    }, {\n      direction: 'r',\n      value: rightOut\n    }, {\n      direction: 'b',\n      value: bottomOut\n    }, {\n      direction: 'l',\n      value: leftOut\n    }];\n    var backDirection = (_maps$find = maps.find(function (t) {\n      return !t.value;\n    })) === null || _maps$find === void 0 ? void 0 : _maps$find.direction;\n    // 若原来的方向跟调整后不一致，则使用调整后的\n    if (backDirection && backDirection !== direction) {\n      return backDirection;\n    }\n  }\n  return null;\n}\n\n/**\n * 基于xy的兜底调整\n * @param left overlay距离定位节点左侧距离\n * @param top overlay距离定位节点上方距离\n * @param placement 位置\n * @param staticInfo 其它信息\n */\nfunction adjustXY(left, top, placement, staticInfo) {\n  var viewport = staticInfo.viewport,\n    viewportInfo = staticInfo.viewportInfo,\n    container = staticInfo.container,\n    containerInfo = staticInfo.containerInfo,\n    overlayInfo = staticInfo.overlayInfo,\n    rtl = staticInfo.rtl;\n  if (!shouldResizePlacement(left, top, viewport, staticInfo)) {\n    // 无需调整\n    return null;\n  }\n  // 仍然需要调整\n  var x = left;\n  var y = top;\n  var xAdjust = 0;\n  var yAdjust = 0;\n  // 调整为基于 viewport 的xy\n  if (viewport !== container) {\n    var cLeft = containerInfo.left,\n      cTop = containerInfo.top,\n      scrollLeft = containerInfo.scrollLeft,\n      scrollTop = containerInfo.scrollTop;\n    xAdjust = cLeft - scrollLeft;\n    yAdjust = cTop - scrollTop;\n    x += xAdjust;\n    y += yAdjust;\n  }\n  var oWidth = overlayInfo.width,\n    oHeight = overlayInfo.height;\n  var vWidth = viewportInfo.width,\n    vHeight = viewportInfo.height;\n  var leftOut = x < 0;\n  var topOut = y < 0;\n  var rightOut = x + oWidth > vWidth;\n  var bottomOut = y + oHeight > vHeight;\n  if (oWidth > vWidth || oHeight > vHeight) {\n    // overlay 比 可视区域还要大，方案有：\n    // 1. 根据rtl模式，强制对齐习惯侧边缘，忽略另一侧超出\n    // 2. 强制调整overlay宽高，并设置overflow\n    // 第二种会影响用户布局，先采用第一种办法吧\n\n    if (oWidth > vWidth) {\n      if (rtl) {\n        x = vWidth - oWidth;\n      } else {\n        x = 0;\n      }\n    }\n    if (oHeight > vHeight) {\n      y = 0;\n    }\n  } else {\n    // viewport可以容纳 overlay\n    // 则哪边超出，哪边重置为边缘位置\n    if (leftOut) {\n      x = 0;\n    }\n    if (topOut) {\n      y = 0;\n    }\n    if (rightOut) {\n      x = vWidth - oWidth;\n    }\n    if (bottomOut) {\n      y = vHeight - oHeight;\n    }\n  }\n  return {\n    left: x - xAdjust,\n    top: y - yAdjust,\n    placement: placement\n  };\n}\nfunction autoAdjustPosition(l, t, p, staticInfo) {\n  var left = l;\n  var top = t;\n  var viewport = staticInfo.viewport,\n    container = staticInfo.container,\n    containerInfo = staticInfo.containerInfo;\n  var cLeft = containerInfo.left,\n    cTop = containerInfo.top,\n    scrollLeft = containerInfo.scrollLeft,\n    scrollTop = containerInfo.scrollTop;\n\n  // 此时left&top是相对于container的，若container不是 viewport，则需要调整为相对 viewport 的 left & top 再计算\n  if (viewport !== container) {\n    left += cLeft - scrollLeft;\n    top += cTop - scrollTop;\n  }\n\n  // 根据位置超出情况，获取所有可以尝试的位置列表\n  var placements = getNewPlacements(left, top, p, staticInfo);\n  // 按顺序寻找能够容纳的位置\n  for (var _iterator = _createForOfIteratorHelperLoose(placements), _step; !(_step = _iterator()).done;) {\n    var placement = _step.value;\n    var _getXY2 = getXY(placement, staticInfo),\n      _nLeft = _getXY2.left,\n      _nTop = _getXY2.top;\n    if (!shouldResizePlacement(_nLeft, _nTop, viewport, staticInfo)) {\n      return {\n        left: _nLeft,\n        top: _nTop,\n        placement: placement\n      };\n    }\n  }\n  var backupPlacement = getBackupPlacement(left, top, p, staticInfo);\n  if (backupPlacement) {\n    var _getXY = getXY(backupPlacement, staticInfo),\n      nLeft = _getXY.left,\n      nTop = _getXY.top;\n    return {\n      left: nLeft,\n      top: nTop,\n      placement: backupPlacement\n    };\n  }\n  return null;\n}\n\n/**\n * 获取滚动容器的尺寸位置信息\n * 滚动宽高代替宽高\n */\nfunction getScrollerRect(scroller) {\n  var _getViewTopLeft2 = getViewTopLeft(scroller),\n    left = _getViewTopLeft2.left,\n    top = _getViewTopLeft2.top;\n  var width = scroller.scrollWidth,\n    height = scroller.scrollHeight,\n    scrollTop = scroller.scrollTop,\n    scrollLeft = scroller.scrollLeft;\n  return {\n    left: left,\n    top: top,\n    width: width,\n    height: height,\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}\n\n/**\n * 计算相对于 container 的偏移位置\n * @param config\n * @returns\n */\nexport default function getPlacements(config) {\n  var target = config.target,\n    overlay = config.overlay,\n    container = config.container,\n    scrollNode = config.scrollNode,\n    oplacement = config.placement,\n    _config$placementOffs = config.placementOffset,\n    placementOffset = _config$placementOffs === void 0 ? 0 : _config$placementOffs,\n    _config$points = config.points,\n    opoints = _config$points === void 0 ? ['tl', 'bl'] : _config$points,\n    _config$offset = config.offset,\n    offset = _config$offset === void 0 ? [0, 0] : _config$offset,\n    _config$position = config.position,\n    position = _config$position === void 0 ? 'absolute' : _config$position,\n    beforePosition = config.beforePosition,\n    _config$autoAdjust = config.autoAdjust,\n    autoAdjust = _config$autoAdjust === void 0 ? true : _config$autoAdjust,\n    _config$autoHideScrol = config.autoHideScrollOverflow,\n    autoHideScrollOverflow = _config$autoHideScrol === void 0 ? true : _config$autoHideScrol,\n    rtl = config.rtl;\n  var placement = oplacement;\n\n  /**\n   * 可视窗口是浏览器给用户展示的窗口\n   * getBoundingClientRect(): top/left 是相对 viewport\n   * node: offsetTop/offsetarget.Left 是相对 parent 元素的\n   *\n   * top: 元素上边  距离可视窗口 上边框的距离\n   * left: 元素左边 距离可视窗口 左边框的距离\n   *\n   * scrollTop: 容器上下滚动距离\n   * scrollLeft: 容器左右滚动距离\n   */\n  var _getWidthHeight = getWidthHeight(overlay),\n    owidth = _getWidthHeight.width,\n    oheight = _getWidthHeight.height;\n  if (position === 'fixed') {\n    var _result = {\n      config: {\n        placement: undefined,\n        points: undefined\n      },\n      style: {\n        position: position,\n        left: offset[0],\n        top: offset[1]\n      }\n    };\n    if (beforePosition && typeof beforePosition) {\n      return beforePosition(_result, {\n        overlay: {\n          node: overlay,\n          width: owidth,\n          height: oheight\n        }\n      });\n    }\n    return _result;\n  }\n  var _target$getBoundingCl = target.getBoundingClientRect(),\n    twidth = _target$getBoundingCl.width,\n    theight = _target$getBoundingCl.height,\n    tleft = _target$getBoundingCl.left,\n    ttop = _target$getBoundingCl.top;\n  var containerInfo = getScrollerRect(container);\n\n  // 获取可视区域，来计算容器相对位置\n  var viewport = getViewPort(container);\n  var viewportInfo = containerInfo;\n  if (viewport !== container) {\n    viewportInfo = getScrollerRect(viewport);\n  }\n  var staticInfo = {\n    targetInfo: {\n      width: twidth,\n      height: theight,\n      left: tleft,\n      top: ttop\n    },\n    containerInfo: containerInfo,\n    overlay: overlay,\n    overlayInfo: {\n      width: owidth,\n      height: oheight\n    },\n    points: opoints,\n    placementOffset: placementOffset,\n    offset: offset,\n    container: container,\n    rtl: rtl,\n    viewport: viewport,\n    viewportInfo: viewportInfo\n  };\n\n  // step1: 根据 placement 计算位置\n  var _getXY3 = getXY(placement, staticInfo),\n    left = _getXY3.left,\n    top = _getXY3.top,\n    points = _getXY3.points;\n\n  // step2: 根据 viewport（挂载容器不一定是可视区, eg: 挂载在父节点，但是弹窗超出父节点）重新计算位置. 根据可视区域优化位置\n  // 位置动态优化思路见 https://github.com/alibaba-fusion/overlay/issues/23\n  if (autoAdjust && placement && shouldResizePlacement(left, top, viewport, staticInfo)) {\n    var adjustResult = autoAdjustPosition(left, top, placement, staticInfo);\n    if (adjustResult) {\n      left = adjustResult.left;\n      top = adjustResult.top;\n      placement = adjustResult.placement;\n    }\n    var adjustXYResult = adjustXY(left, top, placement, staticInfo);\n    if (adjustXYResult) {\n      left = adjustXYResult.left;\n      top = adjustXYResult.top;\n      placement = adjustXYResult.placement;\n    }\n  }\n  var result = {\n    config: {\n      placement: placement,\n      points: points\n    },\n    style: {\n      position: position,\n      left: Math.round(left),\n      top: Math.round(top)\n    }\n  };\n\n  /**\n   * step3: 滚动隐藏弹窗逻辑。避免出现 target 已经滚动消失，弹层飘在页面最上方的情况。详细见 https://github.com/alibaba-fusion/overlay/issues/3\n   * 触发条件: target 和 document.body 之间存在 overflow 滚动元素， target 进入不可见区域\n   */\n  if (autoHideScrollOverflow && placement && scrollNode !== null && scrollNode !== void 0 && scrollNode.length) {\n    // 滚动改成 transform 提高性能, 但是有动效问题\n    // result.style.transform = `translate3d(${result.style.left}px, ${result.style.top}px, 0px)`;\n    // result.style.left = 0;\n    // result.style.top = 0;\n\n    for (var _iterator2 = _createForOfIteratorHelperLoose(scrollNode), _step2; !(_step2 = _iterator2()).done;) {\n      var node = _step2.value;\n      var _getRect = getRect(node),\n        _top = _getRect.top,\n        _left = _getRect.left,\n        width = _getRect.width,\n        height = _getRect.height;\n      if (ttop + theight < _top || ttop > _top + height || tleft + twidth < _left || tleft > _left + width) {\n        result.style.display = 'none';\n        break;\n      } else {\n        result.style.display = '';\n      }\n    }\n  }\n  if (beforePosition && typeof beforePosition) {\n    return beforePosition(result, {\n      target: {\n        node: target,\n        width: twidth,\n        height: theight,\n        left: tleft,\n        top: ttop\n      },\n      overlay: {\n        node: overlay,\n        width: owidth,\n        height: oheight\n      }\n    });\n  }\n  return result;\n}","import { createContext } from 'react';\nvar OverlayContext = /*#__PURE__*/createContext({\n  setVisibleOverlayToParent: function setVisibleOverlayToParent() {}\n});\nexport default OverlayContext;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nvar _excluded = [\"target\", \"children\", \"wrapperClassName\", \"maskClassName\", \"maskStyle\", \"hasMask\", \"canCloseByMask\", \"maskRender\", \"points\", \"offset\", \"fixed\", \"visible\", \"onRequestClose\", \"onOpen\", \"onClose\", \"container\", \"placement\", \"placementOffset\", \"disableScroll\", \"canCloseByOutSideClick\", \"canCloseByEsc\", \"safeNode\", \"beforePosition\", \"onPosition\", \"cache\", \"autoAdjust\", \"autoFocus\", \"isAnimationEnd\", \"rtl\", \"wrapperStyle\"],\n  _excluded2 = [\"setVisibleOverlayToParent\"];\nfunction _createForOfIteratorHelperLoose(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport React, { useEffect, useState, useCallback, useRef, cloneElement, useContext } from 'react';\nimport { findDOMNode, createPortal } from 'react-dom';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport getPlacements from './placement';\nimport { useListener, getHTMLElement, getTargetNode, getStyle, setStyle, getRelativeContainer, throttle, callRef, getOverflowNodes, getScrollbarWidth, getFocusNodeList, isSameObject, useEvent } from './utils';\nimport OverlayContext from './overlay-context';\nvar isScrollDisplay = function isScrollDisplay(element) {\n  try {\n    var scrollbarStyle = window.getComputedStyle(element, '::-webkit-scrollbar');\n    return !scrollbarStyle || scrollbarStyle.getPropertyValue('display') !== 'none';\n  } catch (e) {\n    // ignore error for firefox\n  }\n  return true;\n};\nvar hasScroll = function hasScroll(containerNode) {\n  var overflow = getStyle(containerNode, 'overflow');\n  if (overflow === 'hidden') {\n    return false;\n  }\n  var parentNode = containerNode.parentNode;\n  return parentNode && parentNode.scrollHeight > parentNode.clientHeight && getScrollbarWidth() > 0 && isScrollDisplay(parentNode) && isScrollDisplay(containerNode);\n};\n\n/**\n * 传入的组件可能是没有 forwardRef 包裹的 Functional Component, 会导致取不到 ref\n */\nexport var RefWrapper = /*#__PURE__*/function (_React$Component) {\n  function RefWrapper() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n  _inheritsLoose(RefWrapper, _React$Component);\n  var _proto = RefWrapper.prototype;\n  _proto.render = function render() {\n    return this.props.children;\n  };\n  return RefWrapper;\n}(React.Component);\nvar Overlay = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _overflowRef$current, _overflowRef$current2;\n  var body = function body() {\n    return document.body;\n  };\n  var target = props.target,\n    children = props.children,\n    wrapperClassName = props.wrapperClassName,\n    maskClassName = props.maskClassName,\n    maskStyle = props.maskStyle,\n    hasMask = props.hasMask,\n    _props$canCloseByMask = props.canCloseByMask,\n    canCloseByMask = _props$canCloseByMask === void 0 ? true : _props$canCloseByMask,\n    maskRender = props.maskRender,\n    points = props.points,\n    offset = props.offset,\n    fixed = props.fixed,\n    visible = props.visible,\n    _props$onRequestClose = props.onRequestClose,\n    onRequestClose = _props$onRequestClose === void 0 ? function () {} : _props$onRequestClose,\n    onOpen = props.onOpen,\n    onClose = props.onClose,\n    _props$container = props.container,\n    popupContainer = _props$container === void 0 ? body : _props$container,\n    placement = props.placement,\n    placementOffset = props.placementOffset,\n    _props$disableScroll = props.disableScroll,\n    disableScroll = _props$disableScroll === void 0 ? false : _props$disableScroll,\n    _props$canCloseByOutS = props.canCloseByOutSideClick,\n    canCloseByOutSideClick = _props$canCloseByOutS === void 0 ? true : _props$canCloseByOutS,\n    _props$canCloseByEsc = props.canCloseByEsc,\n    canCloseByEsc = _props$canCloseByEsc === void 0 ? true : _props$canCloseByEsc,\n    safeNode = props.safeNode,\n    beforePosition = props.beforePosition,\n    onPosition = props.onPosition,\n    _props$cache = props.cache,\n    cache = _props$cache === void 0 ? false : _props$cache,\n    autoAdjust = props.autoAdjust,\n    _props$autoFocus = props.autoFocus,\n    autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n    _props$isAnimationEnd = props.isAnimationEnd,\n    isAnimationEnd = _props$isAnimationEnd === void 0 ? true : _props$isAnimationEnd,\n    rtl = props.rtl,\n    owrapperStyle = props.wrapperStyle,\n    others = _objectWithoutPropertiesLoose(props, _excluded);\n  var position = fixed ? 'fixed' : 'absolute';\n  var _useState = useState(visible),\n    firstVisible = _useState[0],\n    setFirst = _useState[1];\n  var _useState2 = useState(null),\n    forceUpdate = _useState2[1];\n  var positionStyleRef = useRef({\n    position: position\n  });\n  var getContainer = typeof popupContainer === 'string' ? function () {\n    return document.getElementById(popupContainer);\n  } : typeof popupContainer !== 'function' ? function () {\n    return popupContainer;\n  } : popupContainer;\n  var _useState3 = useState(null),\n    container = _useState3[0],\n    setContainer = _useState3[1];\n  var targetRef = useRef(null);\n  var preTarget = useRef(target);\n  var overlayRef = useRef(null);\n  var containerRef = useRef(null);\n  var maskRef = useRef(null);\n  var overflowRef = useRef([]);\n  var lastFocus = useRef(null);\n  var ro = useRef(null);\n  var _useState4 = useState(Date.now().toString(36)),\n    uuid = _useState4[0];\n  var _useContext = useContext(OverlayContext),\n    setVisibleOverlayToParent = _useContext.setVisibleOverlayToParent,\n    otherContext = _objectWithoutPropertiesLoose(_useContext, _excluded2);\n  var childIDMap = useRef(new Map());\n  var handleOpen = function handleOpen(node) {\n    setVisibleOverlayToParent(uuid, node);\n    onOpen === null || onOpen === void 0 ? void 0 : onOpen(node);\n  };\n  var handleClose = function handleClose() {\n    positionStyleRef.current = null;\n    setVisibleOverlayToParent(uuid, null);\n    onClose === null || onClose === void 0 ? void 0 : onClose();\n  };\n  var getVisibleOverlayFromChild = function getVisibleOverlayFromChild(id, node) {\n    if (node) {\n      childIDMap.current.set(id, node);\n    } else {\n      childIDMap.current[\"delete\"](id);\n    }\n    // 让父级也感知\n    setVisibleOverlayToParent(id, node);\n  };\n  var child = React.Children.only(children);\n  if (typeof child.ref === 'string') {\n    throw new Error('Can not set ref by string in Overlay, use function instead.');\n  }\n  var updatePosition = useEvent(function () {\n    var overlayNode = overlayRef.current;\n    var containerNode = containerRef.current;\n    var targetNode = targetRef.current;\n    if (!overlayNode || !containerNode || !targetNode) {\n      return;\n    }\n    var placements = getPlacements({\n      target: targetNode,\n      overlay: overlayNode,\n      container: containerNode,\n      scrollNode: overflowRef.current,\n      points: points,\n      offset: offset,\n      position: position,\n      placement: placement,\n      placementOffset: placementOffset,\n      beforePosition: beforePosition,\n      autoAdjust: autoAdjust,\n      rtl: rtl,\n      autoHideScrollOverflow: others.autoHideScrollOverflow\n    });\n    if (!isSameObject(positionStyleRef.current, placements.style)) {\n      positionStyleRef.current = placements.style;\n      setStyle(overlayNode, placements.style);\n      typeof onPosition === 'function' && onPosition(placements);\n    }\n  });\n\n  // 弹窗挂载\n  var overlayRefCallback = useCallback(function (nodeRef) {\n    var node = findDOMNode(nodeRef);\n    overlayRef.current = node;\n    callRef(ref, node);\n    if (node !== null && container) {\n      var containerNode = getRelativeContainer(getHTMLElement(container));\n      containerRef.current = containerNode;\n      var targetElement = target === 'viewport' ? hasMask ? maskRef.current : body() : getTargetNode(target) || body();\n      var targetNode = getHTMLElement(targetElement);\n      targetRef.current = targetNode;\n      overflowRef.current = getOverflowNodes(targetNode, containerNode);\n\n      // fixme: 在followTrigger且空间受限且overlay自动宽度情况下，overlay宽度会跟随left设定自动撑满containing block最右侧，这里建议手动设定overlay宽度或拥有固定内容宽度的overlay来解决，这里暂时使用原来的-1000位置的方案隐藏overlay并不影响容器宽高\n      setStyle(node, {\n        position: fixed ? 'fixed' : 'absolute',\n        top: -1000,\n        left: -1000\n      });\n      var waitTime = 100;\n      var throttledUpdatePosition = throttle(updatePosition, waitTime);\n      ro.current = new ResizeObserver(throttledUpdatePosition);\n      ro.current.observe(containerNode);\n      ro.current.observe(node);\n      // fist call, 不依赖 ResizeObserver observe时的首次执行(测试环境不会执行)，因为 throttle 原因也不会执行两次\n      throttledUpdatePosition();\n      forceUpdate({});\n      if (autoFocus) {\n        // 这里setTimeout是等弹窗位置计算完成再进行 focus，否则弹窗还在页面最低端，会出现突然滚动到页面最下方的情况\n        setTimeout(function () {\n          var focusableNodes = getFocusNodeList(node);\n          if (focusableNodes.length > 0 && focusableNodes[0]) {\n            lastFocus.current = document.activeElement;\n            focusableNodes[0].focus();\n          }\n        }, waitTime);\n      }\n      !cache && handleOpen(node);\n    } else {\n      !cache && handleClose();\n      if (ro.current) {\n        ro.current.disconnect();\n        ro.current = null;\n      }\n    }\n  }, [container]);\n  var clickEvent = function clickEvent(e) {\n    // 点击在子元素上面，则忽略。为了兼容 react16，这里用 contains 判断而不利用 e.stopPropagation() 阻止冒泡的特性来处理\n    for (var _iterator = _createForOfIteratorHelperLoose(childIDMap.current.entries()), _step; !(_step = _iterator()).done;) {\n      var _step$value = _step.value,\n        oNode = _step$value[1];\n      var _node = getHTMLElement(oNode);\n      if (_node && (_node === e.target || _node.contains(e.target))) {\n        return;\n      }\n    }\n    if (!visible) {\n      return;\n    }\n\n    // 点击遮罩关闭\n    if (hasMask && maskRef.current === e.target) {\n      if (canCloseByMask) {\n        onRequestClose('maskClick', e); // TODO: will rename to `mask` in 1.0\n      }\n      return;\n    }\n    var safeNodeList = Array.isArray(safeNode) ? safeNode : [safeNode];\n\n    // 弹层默认是安全节点\n    if (overlayRef.current) {\n      safeNodeList.push(function () {\n        return overlayRef.current;\n      });\n    }\n\n    // 安全节点不关闭\n    for (var i = 0; i < safeNodeList.length; i++) {\n      var _safeNode = getTargetNode(safeNodeList[i]);\n      var node = getHTMLElement(_safeNode);\n      if (node && (node === e.target || node.contains(e.target))) {\n        return;\n      }\n    }\n    if (canCloseByOutSideClick) {\n      onRequestClose('docClick', e); // TODO: will rename to `doc` in 1.0\n    }\n  };\n\n  // 这里用 mousedown 而不是用 click。因为 click 是 mouseup 才触发。\n  // 如果用 click 带来的问题: mousedown 在弹窗内部，然后按住鼠标不放拖动到弹窗外触发 mouseup 结果弹窗关了，这是不期望的展示。 https://github.com/alibaba-fusion/next/issues/742\n  // react 17 冒泡问题:\n  //  - react17 中，如果弹窗 mousedown 阻止了 e.stopPropagation(), 那么 document 就不会监听到事件，因为事件冒泡到挂载节点 rootElement 就中断了。\n  //  - https://reactjs.org/blog/2020/08/10/react-v17-rc.html#changes-to-event-delegation\n  useListener(typeof document !== 'undefined' ? document : null, 'mousedown', clickEvent, false, !!(visible && overlayRef.current && (canCloseByOutSideClick || hasMask && canCloseByMask)));\n  var keydownEvent = function keydownEvent(e) {\n    if (!visible) {\n      return;\n    }\n\n    // 无子元素才能 esc 取消关闭\n    if (e.keyCode === 27 && canCloseByEsc && !childIDMap.current.size) {\n      onRequestClose('esc', e);\n    }\n  };\n  useListener(typeof document !== 'undefined' ? document : null, 'keydown', keydownEvent, false, !!(visible && overlayRef.current && canCloseByEsc));\n  var scrollEvent = function scrollEvent(e) {\n    if (!visible) {\n      return;\n    }\n    updatePosition();\n  };\n  useListener(typeof document !== 'undefined' ? (_overflowRef$current = overflowRef.current) === null || _overflowRef$current === void 0 ? void 0 : _overflowRef$current.map(function (t) {\n    return t === document.documentElement ? document : t;\n  }) : null, 'scroll', scrollEvent, false, !!(visible && overlayRef.current && (_overflowRef$current2 = overflowRef.current) !== null && _overflowRef$current2 !== void 0 && _overflowRef$current2.length));\n\n  // 有弹窗情况下在 body 增加 overflow:hidden，两个弹窗同时存在也没问题，会按照堆的方式依次 pop\n  useEffect(function () {\n    if (visible && disableScroll) {\n      var originStyle = document.body.getAttribute('style');\n      setStyle(document.body, 'overflow', 'hidden');\n      if (hasScroll(document.body)) {\n        var scrollWidth = getScrollbarWidth();\n        if (scrollWidth) {\n          setStyle(document.body, 'padding-right', \"calc(\" + getStyle(document.body, 'padding-right') + \" + \" + scrollWidth + \"px)\");\n        }\n      }\n      return function () {\n        document.body.setAttribute('style', originStyle || '');\n      };\n    }\n    return undefined;\n  }, [visible && disableScroll]);\n\n  // 第一次加载并且 visible=false 的情况不挂载弹窗\n  useEffect(function () {\n    if (!firstVisible && visible) {\n      setFirst(true);\n    }\n  }, [visible]);\n\n  // cache 情况下的模拟 onOpen/onClose\n  var overlayNode = overlayRef.current; // overlayRef.current 可能会异步变化，所以要先接下\n  useEffect(function () {\n    if (cache && overlayNode) {\n      if (visible) {\n        updatePosition();\n        handleOpen(overlayNode);\n      } else {\n        handleClose();\n      }\n    }\n  }, [visible, cache && overlayNode]);\n\n  // target 动态更新则重新刷新定位\n  useEffect(function () {\n    if (visible && overlayNode) {\n      if (target && targetRef.current && preTarget.current !== target) {\n        var targetElement = target === 'viewport' ? hasMask ? maskRef.current : body() : getTargetNode(target) || body();\n        var targetNode = getHTMLElement(targetElement);\n        if (targetNode && targetRef.current !== targetNode) {\n          targetRef.current = targetNode;\n          updatePosition();\n        }\n        preTarget.current = target;\n      }\n    }\n  }, [target]);\n  useEffect(function () {\n    if (visible && overlayNode) {\n      updatePosition();\n    }\n  }, [offset, placement, placementOffset, points, autoAdjust, rtl]);\n\n  // autoFocus 弹窗关闭后回到触发点\n  useEffect(function () {\n    if (!visible && autoFocus && lastFocus.current) {\n      lastFocus.current.focus();\n      lastFocus.current = null;\n    }\n  }, [!visible && autoFocus && lastFocus.current]);\n\n  // container 异步加载, 因为 container 很可能还没渲染完成，所以 visible 后这里异步设置下\n  useEffect(function () {\n    if (visible) {\n      // 首次更新\n      if (!container) {\n        setContainer(getContainer());\n      } else if (getContainer() !== container) {\n        setContainer(getContainer());\n      }\n    }\n  }, [visible, popupContainer]);\n  if (firstVisible === false || !container) {\n    return null;\n  }\n  if (!visible && !cache && isAnimationEnd) {\n    return null;\n  }\n  var newChildren = child ? /*#__PURE__*/React.createElement(RefWrapper, {\n    ref: overlayRefCallback\n  }, /*#__PURE__*/cloneElement(child, _extends({}, others, {\n    style: _extends({\n      top: 0,\n      left: 0\n    }, child.props.style, positionStyleRef.current)\n  }))) : null;\n  var wrapperStyle = _extends({}, owrapperStyle);\n  if (cache && !visible && isAnimationEnd) {\n    wrapperStyle.display = 'none';\n  }\n  var maskNode = /*#__PURE__*/React.createElement(\"div\", {\n    className: maskClassName,\n    style: maskStyle,\n    ref: maskRef\n  });\n  var content = /*#__PURE__*/React.createElement(\"div\", {\n    className: wrapperClassName,\n    style: wrapperStyle\n  }, hasMask ? maskRender ? maskRender(maskNode) : maskNode : null, newChildren);\n  return /*#__PURE__*/React.createElement(OverlayContext.Provider, {\n    value: _extends({}, otherContext, {\n      setVisibleOverlayToParent: getVisibleOverlayFromChild\n    })\n  }, /*#__PURE__*/createPortal(content, container));\n});\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"overlay\", \"triggerType\", \"triggerClickKeyCode\", \"children\", \"defaultVisible\", \"className\", \"onVisibleChange\", \"container\", \"style\", \"placement\", \"canCloseByTrigger\", \"delay\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayProps\", \"safeNode\", \"followTrigger\", \"target\", \"disabled\"];\nimport React, { useEffect, useState, useRef, useCallback } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Overlay, { RefWrapper } from './overlay';\nimport { makeChain, saveRef } from './utils';\nvar Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var body = function body() {\n    return document.body;\n  };\n  var overlay = props.overlay,\n    _props$triggerType = props.triggerType,\n    triggerType = _props$triggerType === void 0 ? 'click' : _props$triggerType,\n    triggerClickKeyCode = props.triggerClickKeyCode,\n    children = props.children,\n    defaultVisible = props.defaultVisible,\n    className = props.className,\n    _props$onVisibleChang = props.onVisibleChange,\n    onVisibleChange = _props$onVisibleChang === void 0 ? function () {} : _props$onVisibleChang,\n    _props$container = props.container,\n    container = _props$container === void 0 ? body : _props$container,\n    _props$style = props.style,\n    style = _props$style === void 0 ? {} : _props$style,\n    _props$placement = props.placement,\n    placement = _props$placement === void 0 ? 'bl' : _props$placement,\n    _props$canCloseByTrig = props.canCloseByTrigger,\n    canCloseByTrigger = _props$canCloseByTrig === void 0 ? true : _props$canCloseByTrig,\n    _props$delay = props.delay,\n    delay = _props$delay === void 0 ? 200 : _props$delay,\n    mouseEnterDelay = props.mouseEnterDelay,\n    mouseLeaveDelay = props.mouseLeaveDelay,\n    _props$overlayProps = props.overlayProps,\n    overlayProps = _props$overlayProps === void 0 ? {} : _props$overlayProps,\n    safeNode = props.safeNode,\n    _props$followTrigger = props.followTrigger,\n    followTrigger = _props$followTrigger === void 0 ? false : _props$followTrigger,\n    otarget = props.target,\n    _props$disabled = props.disabled,\n    disabled = _props$disabled === void 0 ? false : _props$disabled,\n    others = _objectWithoutPropertiesLoose(props, _excluded);\n  var _useState = useState(defaultVisible || props.visible),\n    visible = _useState[0],\n    setVisible = _useState[1];\n  var triggerRef = useRef(null);\n  var overlayRef = useRef(null);\n  var mouseLeaveTimer = useRef(null);\n  var mouseEnterTimer = useRef(null);\n  var overlayClick = useRef(false);\n  var child = children && React.Children.only(children);\n  var overlayChild = React.Children.only(overlay);\n  useEffect(function () {\n    if ('visible' in props) {\n      setVisible(props.visible);\n    }\n  }, [props.visible]);\n  var handleVisibleChange = function handleVisibleChange(visible, e, triggerType) {\n    if (triggerType === void 0) {\n      triggerType = 'fromTrigger';\n    }\n    if (disabled) {\n      return;\n    }\n    if (!('visible' in props)) {\n      if (visible || overlayRef.current) {\n        setVisible(visible);\n      }\n    }\n    onVisibleChange(visible, triggerType, e);\n  };\n  var handleClick = function handleClick(e) {\n    if (visible && !canCloseByTrigger) {\n      return;\n    }\n    handleVisibleChange(!visible, e); // todo: rename to trigger in 1.x\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    var keycodes = Array.isArray(triggerClickKeyCode) ? triggerClickKeyCode : [triggerClickKeyCode];\n    if (keycodes.includes(e.keyCode)) {\n      handleVisibleChange(!visible, e); // todo: rename to trigger in 1.x\n    }\n  };\n  var handleMouseEnter = function handleMouseEnter(targetType) {\n    return function (e) {\n      if (mouseLeaveTimer.current && visible) {\n        clearTimeout(mouseLeaveTimer.current);\n        mouseLeaveTimer.current = null;\n        return;\n      }\n      if (!mouseEnterTimer.current && !visible) {\n        mouseEnterTimer.current = setTimeout(function () {\n          handleVisibleChange(true, e, targetType);\n          mouseEnterTimer.current = null;\n        }, mouseEnterDelay !== null && mouseEnterDelay !== void 0 ? mouseEnterDelay : delay);\n      }\n    };\n  };\n  var handleMouseLeave = function handleMouseLeave(targetType) {\n    return function (e) {\n      if (!mouseLeaveTimer.current && visible) {\n        mouseLeaveTimer.current = setTimeout(function () {\n          handleVisibleChange(false, e, targetType);\n          mouseLeaveTimer.current = null;\n        }, mouseLeaveDelay !== null && mouseLeaveDelay !== void 0 ? mouseLeaveDelay : delay);\n      }\n      if (mouseEnterTimer.current && !visible) {\n        clearTimeout(mouseEnterTimer.current);\n        mouseEnterTimer.current = null;\n      }\n    };\n  };\n  var handleFocus = function handleFocus(e) {\n    handleVisibleChange(true, e);\n  };\n  var handleBlur = function handleBlur(e) {\n    if (overlayClick.current) {\n      overlayClick.current = false;\n      return;\n    }\n    handleVisibleChange(false, e);\n  };\n\n  // 点击弹窗的时候不能被 onBlur 关闭\n  var handleOverlayClick = function handleOverlayClick(e) {\n    overlayClick.current = true;\n  };\n  var handleRequestClose = function handleRequestClose(targetType, e) {\n    handleVisibleChange(false, e, targetType);\n  };\n  var triggerProps = {};\n  var overlayOtherProps = {};\n  var safeNodes = Array.isArray(safeNode) ? safeNode : [safeNode];\n  if (child && !disabled) {\n    var triggerTypeList = typeof triggerType === 'string' ? [triggerType] : triggerType;\n    triggerTypeList.forEach(function (t) {\n      var _child$props, _child$props2, _child$props3, _child$props4, _child$props5, _child$props6;\n      switch (t) {\n        case 'click':\n          triggerProps.onClick = makeChain(handleClick, (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.onClick);\n          triggerProps.onKeyDown = makeChain(handleKeyDown, (_child$props2 = child.props) === null || _child$props2 === void 0 ? void 0 : _child$props2.onKeyDown);\n          break;\n        case 'hover':\n          triggerProps.onMouseEnter = makeChain(handleMouseEnter('fromTrigger'), (_child$props3 = child.props) === null || _child$props3 === void 0 ? void 0 : _child$props3.onMouseEnter);\n          triggerProps.onMouseLeave = makeChain(handleMouseLeave('fromTrigger'), (_child$props4 = child.props) === null || _child$props4 === void 0 ? void 0 : _child$props4.onMouseLeave);\n          overlayOtherProps.onMouseEnter = makeChain(handleMouseEnter('overlay'), overlayProps.onMouseEnter);\n          overlayOtherProps.onMouseLeave = makeChain(handleMouseLeave('overlay'), overlayProps.onMouseLeave);\n          break;\n        case 'focus':\n          triggerProps.onFocus = makeChain(handleFocus, (_child$props5 = child.props) === null || _child$props5 === void 0 ? void 0 : _child$props5.onFocus);\n          triggerProps.onBlur = makeChain(handleBlur, (_child$props6 = child.props) === null || _child$props6 === void 0 ? void 0 : _child$props6.onBlur);\n          overlayOtherProps.onMouseDown = makeChain(handleOverlayClick, overlayProps.onMouseDown);\n          break;\n      }\n    });\n\n    // trigger 是安全节点\n    safeNodes.push(function () {\n      return findDOMNode(triggerRef.current);\n    });\n  }\n  var target = otarget || (child ? function () {\n    return findDOMNode(triggerRef.current);\n  } : body);\n  var getContainer = typeof container === 'string' ? function () {\n    return document.getElementById(container);\n  } : typeof container !== 'function' ? function () {\n    return container;\n  } : function () {\n    return container(findDOMNode(triggerRef.current));\n  };\n  var overlayContainer = followTrigger ? function () {\n    var _findDOMNode;\n    return (_findDOMNode = findDOMNode(triggerRef.current)) === null || _findDOMNode === void 0 ? void 0 : _findDOMNode.parentNode;\n  } : getContainer;\n\n  // triggerRef 可能会更新，等计算的时候再通过 findDOMNode 取真实值\n  var refWrapperRef = useCallback(function (ref) {\n    triggerRef.current = ref;\n  }, []);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, child && /*#__PURE__*/React.createElement(RefWrapper, {\n    ref: refWrapperRef\n  }, /*#__PURE__*/React.cloneElement(child, triggerProps)), /*#__PURE__*/React.createElement(Overlay, _extends({}, others, overlayOtherProps, {\n    placement: placement,\n    container: overlayContainer,\n    safeNode: safeNodes,\n    visible: visible,\n    target: target,\n    onRequestClose: handleRequestClose,\n    ref: useCallback(makeChain(saveRef(overlayRef), saveRef(ref)), [])\n  }), overlayChild));\n});\nexport default Popup;","import InternalOverlay from './overlay';\nimport Popup from './popup';\nimport OverlayContext from './overlay-context';\nvar Overlay = InternalOverlay;\nOverlay.Popup = Popup;\nOverlay.OverlayContext = OverlayContext;\nexport default Overlay;","import { __assign, __read, __rest } from \"tslib\";\nimport React, { useState, useRef, useEffect, cloneElement } from 'react';\nimport classNames from 'classnames';\nimport Overlay from '@alifd/overlay';\nimport Animate from '../animate';\nimport { log } from '../util';\nvar Overlay2 = function (props) {\n    var _a;\n    if (!useState || !useRef || !useEffect) {\n        log.warning('need react version > 16.8.0');\n        return null;\n    }\n    var _b = props.prefix, prefix = _b === void 0 ? 'next-' : _b, _c = props.animation, animation = _c === void 0 ? { in: 'expandInDown', out: 'expandOutUp' } : _c, visible = props.visible, hasMask = props.hasMask, // 仅兼容，Dialog/Drawer 后续会自己提供mask\n    align = props.align, _d = props.points, points = _d === void 0 ? align ? align.split(' ') : undefined : _d, onPosition = props.onPosition, children = props.children, className = props.className, style = props.style, wrapperClassName = props.wrapperClassName, beforeOpen = props.beforeOpen, onOpen = props.onOpen, afterOpen = props.afterOpen, beforeClose = props.beforeClose, onClose = props.onClose, afterClose = props.afterClose, others = __rest(props, [\"prefix\", \"animation\", \"visible\", \"hasMask\", \"align\", \"points\", \"onPosition\", \"children\", \"className\", \"style\", \"wrapperClassName\", \"beforeOpen\", \"onOpen\", \"afterOpen\", \"beforeClose\", \"onClose\", \"afterClose\"]);\n    var _e = __read(useState(true), 2), isAnimationEnd = _e[0], markAnimationEnd = _e[1];\n    var overlayRef = useRef(null);\n    var handleEnter = function () {\n        markAnimationEnd(false);\n        typeof beforeOpen === 'function' && beforeOpen(overlayRef.current);\n    };\n    var handleEntering = function () {\n        typeof onOpen === 'function' && onOpen(overlayRef.current);\n    };\n    var handleEntered = function () {\n        typeof afterOpen === 'function' && afterOpen(overlayRef.current);\n    };\n    var handleExit = function () {\n        typeof beforeClose === 'function' && beforeClose(overlayRef.current);\n    };\n    var handleExiting = function () {\n        typeof onClose === 'function' && onClose(overlayRef.current);\n    };\n    var handleExited = function () {\n        markAnimationEnd(true);\n        typeof afterClose === 'function' && afterClose(overlayRef.current);\n    };\n    var childrenNode = (React.createElement(Animate.OverlayAnimate, { visible: visible, animation: animation, onEnter: handleEnter, onEntering: handleEntering, onEntered: handleEntered, onExit: handleExit, onExiting: handleExiting, onExited: handleExited, timeout: 300, style: style }, children ? (cloneElement(children, {\n        className: classNames([\n            \"\".concat(prefix, \"overlay-inner\"),\n            className,\n            children && children.props && children.props.className,\n        ]),\n    })) : (React.createElement(\"span\", null))));\n    var wraperCls = classNames((_a = {},\n        _a[\"\".concat(prefix, \"overlay-wrapper v2\")] = true,\n        _a[wrapperClassName] = wrapperClassName,\n        _a.opened = visible,\n        _a));\n    var handlePosition = function (result) {\n        // 兼容 1.x, 2.x 可去除这段逻辑\n        Object.assign(result, { align: result.config.points });\n        typeof onPosition === 'function' && onPosition(result);\n    };\n    var maskRender = function (node) { return (React.createElement(Animate.OverlayAnimate, { visible: visible, animation: animation ? { in: 'fadeIn', out: 'fadeOut' } : false, timeout: 300, unmountOnExit: true }, node)); };\n    return (\n    // @ts-expect-error overlay类型导出不是overlay实例， 导致 JSX 元素类型“Overlay”不具有任何构造签名或调用签名。\n    React.createElement(Overlay, __assign({}, others, { visible: visible, isAnimationEnd: isAnimationEnd, hasMask: hasMask, wrapperClassName: wraperCls, maskClassName: \"\".concat(prefix, \"overlay-backdrop\"), maskRender: maskRender, points: points, onPosition: handlePosition, ref: overlayRef }), childrenNode));\n};\nOverlay2.displayName = 'Overlay';\nexport default Overlay2;\n","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport React, { Component, Children, cloneElement, } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PropTypes from 'prop-types';\nimport { func, KEYCODE } from '../util';\nimport Overlay from './overlay';\nvar noop = func.noop, makeChain = func.makeChain, bindCtx = func.bindCtx;\n/**\n * Overlay.Popup\n * 继承 Overlay 的 API，除非特别说明\n * */\nvar Popup = /** @class */ (function (_super) {\n    __extends(Popup, _super);\n    function Popup(props) {\n        var _this = _super.call(this, props) || this;\n        _this.state = {\n            visible: typeof props.visible === 'undefined' ? props.defaultVisible : props.visible,\n        };\n        bindCtx(_this, [\n            'handleTriggerClick',\n            'handleTriggerKeyDown',\n            'handleTriggerMouseEnter',\n            'handleTriggerMouseLeave',\n            'handleTriggerFocus',\n            'handleTriggerBlur',\n            'handleContentMouseEnter',\n            'handleContentMouseLeave',\n            'handleContentMouseDown',\n            'handleRequestClose',\n            'handleMaskMouseEnter',\n            'handleMaskMouseLeave',\n        ]);\n        return _this;\n    }\n    Popup.getDerivedStateFromProps = function (nextProps, prevState) {\n        if ('visible' in nextProps) {\n            return __assign(__assign({}, prevState), { visible: nextProps.visible });\n        }\n        return null;\n    };\n    Popup.prototype.componentWillUnmount = function () {\n        var _this = this;\n        ['_timer', '_hideTimer', '_showTimer'].forEach(function (time) {\n            _this[time] && clearTimeout(_this[time]);\n        });\n    };\n    Popup.prototype.handleVisibleChange = function (visible, type, e) {\n        if (!('visible' in this.props)) {\n            this.setState({\n                visible: visible,\n            });\n        }\n        this.props.onVisibleChange(visible, type, e);\n    };\n    Popup.prototype.handleTriggerClick = function (e) {\n        if (this.state.visible && !this.props.canCloseByTrigger) {\n            return;\n        }\n        this.handleVisibleChange(!this.state.visible, 'fromTrigger', e);\n    };\n    Popup.prototype.handleTriggerKeyDown = function (e) {\n        var triggerClickKeycode = this.props.triggerClickKeycode;\n        var keycodes = Array.isArray(triggerClickKeycode)\n            ? triggerClickKeycode\n            : [triggerClickKeycode];\n        if (keycodes.includes(e.keyCode)) {\n            e.preventDefault();\n            this.handleTriggerClick(e);\n        }\n    };\n    Popup.prototype.handleTriggerMouseEnter = function (e) {\n        var _this = this;\n        this._mouseNotFirstOnMask = false;\n        if (this._hideTimer) {\n            clearTimeout(this._hideTimer);\n            this._hideTimer = null;\n        }\n        if (this._showTimer) {\n            clearTimeout(this._showTimer);\n            this._showTimer = null;\n        }\n        if (!this.state.visible) {\n            this._showTimer = window.setTimeout(function () {\n                _this.handleVisibleChange(true, 'fromTrigger', e);\n            }, this.props.mouseEnterDelay === null || this.props.mouseEnterDelay === undefined\n                ? this.props.delay\n                : this.props.mouseEnterDelay);\n        }\n    };\n    Popup.prototype.handleTriggerMouseLeave = function (e, type) {\n        var _this = this;\n        if (this._showTimer) {\n            clearTimeout(this._showTimer);\n            this._showTimer = null;\n        }\n        if (this.state.visible) {\n            this._hideTimer = window.setTimeout(function () {\n                _this.handleVisibleChange(false, type || 'fromTrigger', e);\n            }, this.props.mouseLeaveDelay === null || this.props.mouseLeaveDelay === undefined\n                ? this.props.delay\n                : this.props.mouseLeaveDelay);\n        }\n    };\n    Popup.prototype.handleTriggerFocus = function (e) {\n        this.handleVisibleChange(true, 'fromTrigger', e);\n    };\n    Popup.prototype.handleTriggerBlur = function (e) {\n        if (!this._isForwardContent) {\n            this.handleVisibleChange(false, 'fromTrigger', e);\n        }\n        this._isForwardContent = false;\n    };\n    Popup.prototype.handleContentMouseDown = function () {\n        this._isForwardContent = true;\n    };\n    Popup.prototype.handleContentMouseEnter = function () {\n        clearTimeout(this._hideTimer);\n    };\n    Popup.prototype.handleContentMouseLeave = function (e) {\n        this.handleTriggerMouseLeave(e, 'fromContent');\n    };\n    Popup.prototype.handleMaskMouseEnter = function () {\n        if (!this._mouseNotFirstOnMask) {\n            clearTimeout(this._hideTimer);\n            this._hideTimer = null;\n            this._mouseNotFirstOnMask = false;\n        }\n    };\n    Popup.prototype.handleMaskMouseLeave = function () {\n        this._mouseNotFirstOnMask = true;\n    };\n    Popup.prototype.handleRequestClose = function (type, e) {\n        this.handleVisibleChange(false, type, e);\n    };\n    Popup.prototype.renderTrigger = function () {\n        var _this = this;\n        var _a = this.props, trigger = _a.trigger, disabled = _a.disabled;\n        var props = {\n            key: 'trigger',\n            'aria-haspopup': true,\n            'aria-expanded': this.state.visible,\n        };\n        if (!this.state.visible) {\n            props['aria-describedby'] = undefined;\n        }\n        if (!disabled) {\n            var triggerType = this.props.triggerType;\n            var triggerTypes = Array.isArray(triggerType) ? triggerType : [triggerType];\n            var _b = (trigger && trigger.props) || {}, onClick_1 = _b.onClick, onKeyDown_1 = _b.onKeyDown, onMouseEnter_1 = _b.onMouseEnter, onMouseLeave_1 = _b.onMouseLeave, onFocus_1 = _b.onFocus, onBlur_1 = _b.onBlur;\n            triggerTypes.forEach(function (triggerType) {\n                switch (triggerType) {\n                    case 'click':\n                        props.onClick = makeChain(_this.handleTriggerClick, onClick_1);\n                        props.onKeyDown = makeChain(_this.handleTriggerKeyDown, onKeyDown_1);\n                        break;\n                    case 'hover':\n                        props.onMouseEnter = makeChain(_this.handleTriggerMouseEnter, onMouseEnter_1);\n                        props.onMouseLeave = makeChain(_this.handleTriggerMouseLeave, onMouseLeave_1);\n                        break;\n                    case 'focus':\n                        props.onFocus = makeChain(_this.handleTriggerFocus, onFocus_1);\n                        props.onBlur = makeChain(_this.handleTriggerBlur, onBlur_1);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        }\n        return trigger && cloneElement(trigger, props);\n    };\n    Popup.prototype.renderContent = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, triggerType = _a.triggerType;\n        var triggerTypes = Array.isArray(triggerType) ? triggerType : [triggerType];\n        var content = Children.only(children);\n        var _b = content.props, onMouseDown = _b.onMouseDown, onMouseEnter = _b.onMouseEnter, onMouseLeave = _b.onMouseLeave;\n        var props = {\n            key: 'portal',\n        };\n        triggerTypes.forEach(function (triggerType) {\n            switch (triggerType) {\n                case 'focus':\n                    props.onMouseDown = makeChain(_this.handleContentMouseDown, onMouseDown);\n                    break;\n                case 'hover':\n                    props.onMouseEnter = makeChain(_this.handleContentMouseEnter, onMouseEnter);\n                    props.onMouseLeave = makeChain(_this.handleContentMouseLeave, onMouseLeave);\n                    break;\n                default:\n                    break;\n            }\n        });\n        return cloneElement(content, props);\n    };\n    Popup.prototype.renderPortal = function () {\n        var _this = this;\n        var _a = this.props, target = _a.target, safeNode = _a.safeNode, followTrigger = _a.followTrigger, triggerType = _a.triggerType, hasMask = _a.hasMask, wrapperStyle = _a.wrapperStyle, v2 = _a.v2, others = __rest(_a, [\"target\", \"safeNode\", \"followTrigger\", \"triggerType\", \"hasMask\", \"wrapperStyle\", \"v2\"]);\n        var container = this.props.container;\n        var findTriggerNode = function () { return findDOMNode(_this); };\n        var safeNodes = Array.isArray(safeNode) ? __spreadArray([], __read(safeNode), false) : [safeNode];\n        safeNodes.unshift(findTriggerNode);\n        var newWrapperStyle = wrapperStyle || {};\n        if (followTrigger) {\n            container = function (trigger) { return (trigger && trigger.parentNode) || trigger; };\n            newWrapperStyle.position = 'relative';\n        }\n        if (triggerType === 'hover' && hasMask) {\n            others.onMaskMouseEnter = this.handleMaskMouseEnter;\n            others.onMaskMouseLeave = this.handleMaskMouseLeave;\n        }\n        return (React.createElement(Overlay, __assign({}, others, { key: \"overlay\", ref: function (overlay) { return (_this.overlay = overlay); }, visible: this.state.visible, target: target || findTriggerNode, container: container, safeNode: safeNodes, wrapperStyle: newWrapperStyle, triggerType: triggerType, hasMask: hasMask, onRequestClose: this.handleRequestClose }), this.props.children && this.renderContent()));\n    };\n    Popup.prototype.render = function () {\n        return [this.renderTrigger(), this.renderPortal()];\n    };\n    Popup.propTypes = {\n        /**\n         * 弹层内容\n         */\n        children: PropTypes.node,\n        /**\n         * 触发弹层显示或隐藏的元素\n         */\n        trigger: PropTypes.element,\n        /**\n         * 触发弹层显示或隐藏的操作类型，可以是 'click'，'hover'，'focus'，或者它们组成的数组，如 ['hover', 'focus']\n         */\n        triggerType: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n        /**\n         * 当 triggerType 为 click 时才生效，可自定义触发弹层显示的键盘码\n         */\n        triggerClickKeycode: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n        /**\n         * 弹层当前是否显示\n         */\n        visible: PropTypes.bool,\n        /**\n         * 弹层默认是否显示\n         */\n        defaultVisible: PropTypes.bool,\n        /**\n         * 弹层显示或隐藏时触发的回调函数\n         */\n        onVisibleChange: PropTypes.func,\n        /**\n         * 设置此属性，弹层无法显示或隐藏\n         */\n        disabled: PropTypes.bool,\n        autoFit: PropTypes.bool,\n        /**\n         * 弹层显示或隐藏的延时时间（以毫秒为单位），在 triggerType 被设置为 hover 时生效\n         */\n        delay: PropTypes.number,\n        /**\n         * 鼠标放置后的延时显示, 单位毫秒 ms\n         */\n        mouseEnterDelay: PropTypes.number,\n        /**\n         * 鼠标离开后的延时显示, 单位毫秒 ms\n         */\n        mouseLeaveDelay: PropTypes.number,\n        /**\n         * trigger 是否可以关闭弹层\n         */\n        canCloseByTrigger: PropTypes.bool,\n        /**\n         * 弹层定位的参照元素\n         */\n        target: PropTypes.any,\n        safeNode: PropTypes.any,\n        /**\n         * 是否跟随trigger滚动\n         */\n        followTrigger: PropTypes.bool,\n        container: PropTypes.any,\n        hasMask: PropTypes.bool,\n        wrapperStyle: PropTypes.object,\n        rtl: PropTypes.bool,\n        /**\n         * 开启 v2 版本\n         */\n        v2: PropTypes.bool,\n        /**\n         * [v2] 快捷位置，包含 'tl' | 't' | 'tr' | 'rt' | 'r' | 'rb' | 'bl' | 'b' | 'br' | 'lt' | 'l' | 'lb'\n         */\n        placement: PropTypes.string,\n        /**\n         * [v2] 弹层偏离触发元素的像素值\n         */\n        placementOffset: PropTypes.number,\n        /**\n         * [v2] 浮窗被遮挡时是否自动调整位置\n         */\n        autoAdjust: PropTypes.bool,\n    };\n    Popup.defaultProps = {\n        triggerType: 'hover',\n        triggerClickKeycode: [KEYCODE.SPACE, KEYCODE.ENTER],\n        defaultVisible: false,\n        onVisibleChange: noop,\n        disabled: false,\n        autoFit: false,\n        delay: 200,\n        canCloseByTrigger: true,\n        followTrigger: false,\n        container: function () { return document.body; },\n        rtl: false,\n    };\n    Popup.displayName = 'Popup';\n    return Popup;\n}(Component));\nexport default polyfill(Popup);\n","import { __assign, __read, __rest, __spreadArray } from \"tslib\";\nimport React, { useState, useRef, useEffect, cloneElement } from 'react';\nimport classNames from 'classnames';\nimport Overlay from '@alifd/overlay';\nimport Animate from '../animate';\nimport { log } from '../util';\nvar Popup = function (props) {\n    var _a;\n    if (!useState || !useRef || !useEffect) {\n        log.warning('need react version > 16.8.0');\n        return null;\n    }\n    var _b = props.prefix, prefix = _b === void 0 ? 'next-' : _b, _c = props.animation, panimation = _c === void 0 ? { in: 'expandInDown', out: 'expandOutUp' } : _c, defaultVisible = props.defaultVisible, _d = props.onVisibleChange, onVisibleChange = _d === void 0 ? function () { } : _d, trigger = props.trigger, _e = props.triggerType, triggerType = _e === void 0 ? 'hover' : _e, overlay = props.overlay, onPosition = props.onPosition, children = props.children, className = props.className, style = props.style, wrapperClassName = props.wrapperClassName, triggerClickKeycode = props.triggerClickKeycode, align = props.align, beforeOpen = props.beforeOpen, onOpen = props.onOpen, afterOpen = props.afterOpen, beforeClose = props.beforeClose, onClose = props.onClose, afterClose = props.afterClose, others = __rest(props, [\"prefix\", \"animation\", \"defaultVisible\", \"onVisibleChange\", \"trigger\", \"triggerType\", \"overlay\", \"onPosition\", \"children\", \"className\", \"style\", \"wrapperClassName\", \"triggerClickKeycode\", \"align\", \"beforeOpen\", \"onOpen\", \"afterOpen\", \"beforeClose\", \"onClose\", \"afterClose\"]);\n    var _f = __read(useState(defaultVisible), 2), visible = _f[0], setVisible = _f[1];\n    var _g = __read(useState(panimation), 2), animation = _g[0], setAnimation = _g[1];\n    var _h = __read(useState(true), 2), isAnimationEnd = _h[0], markAnimationEnd = _h[1];\n    var overlayRef = useRef(null);\n    useEffect(function () {\n        if ('visible' in props) {\n            setVisible(props.visible);\n        }\n    }, [props.visible]);\n    useEffect(function () {\n        if ('animation' in props && animation !== panimation) {\n            setAnimation(panimation);\n        }\n    }, [panimation]);\n    var handleVisibleChange = function (visible) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!('visible' in props)) {\n            setVisible(visible);\n        }\n        onVisibleChange.apply(void 0, __spreadArray([visible], __read(args), false));\n    };\n    var triggerNode = overlay ? children : trigger;\n    var overlayNode = overlay ? overlay : children;\n    var handleEnter = function () {\n        markAnimationEnd(false);\n        typeof beforeOpen === 'function' && beforeOpen(overlayRef.current);\n    };\n    var handleEntering = function () {\n        typeof onOpen === 'function' && onOpen(overlayRef.current);\n    };\n    var handleEntered = function () {\n        typeof afterOpen === 'function' && afterOpen(overlayRef.current);\n    };\n    var handleExit = function () {\n        typeof beforeClose === 'function' && beforeClose(overlayRef.current);\n    };\n    var handleExiting = function () {\n        typeof onClose === 'function' && onClose(overlayRef.current);\n    };\n    var handleExited = function () {\n        markAnimationEnd(true);\n        typeof afterClose === 'function' && afterClose(overlayRef.current);\n    };\n    overlayNode = (React.createElement(Animate.OverlayAnimate, { visible: visible, animation: animation, timeout: 200, onEnter: handleEnter, onEntering: handleEntering, onEntered: handleEntered, onExit: handleExit, onExiting: handleExiting, onExited: handleExited, style: style }, overlayNode ? (cloneElement(overlayNode, {\n        className: classNames([\n            \"\".concat(prefix, \"overlay-inner\"),\n            className,\n            overlayNode && overlayNode.props && overlayNode.props.className,\n        ]),\n    })) : (React.createElement(\"span\", null))));\n    var handlePosition = function (result) {\n        // 兼容 1.x, 2.x 可去除这段逻辑\n        Object.assign(result, { align: result.config.points });\n        var placement = result.config.placement;\n        if (placement && typeof placement === 'string') {\n            if (animation.in === 'expandInDown' &&\n                animation.out === 'expandOutUp' &&\n                placement.match(/t/)) {\n                setAnimation({\n                    in: 'expandInUp',\n                    out: 'expandOutDown',\n                });\n            }\n            else if (animation.in === 'expandInUp' &&\n                animation.out === 'expandOutDown' &&\n                placement.match(/b/)) {\n                setAnimation({\n                    in: 'expandInDown',\n                    out: 'expandOutUp',\n                });\n            }\n        }\n        typeof onPosition === 'function' && onPosition(result);\n    };\n    var wraperCls = classNames((_a = {},\n        _a[\"\".concat(prefix, \"overlay-wrapper v2\")] = true,\n        _a[wrapperClassName] = wrapperClassName,\n        _a.opened = visible,\n        _a));\n    // 兼容\n    var v1Props = { points: ['tr', 'tl'] };\n    if (align) {\n        v1Props.points = align.split(' ');\n    }\n    var maskRender = function (node) { return (React.createElement(Animate.OverlayAnimate, { visible: visible, animation: animation ? { in: 'fadeIn', out: 'fadeOut' } : false, timeout: 200, unmountOnExit: true }, node)); };\n    return (React.createElement(Overlay.Popup, __assign({}, others, v1Props, { wrapperClassName: wraperCls, overlay: overlayNode, visible: visible, isAnimationEnd: isAnimationEnd, triggerType: triggerType, onVisibleChange: handleVisibleChange, onPosition: handlePosition, triggerClickKeyCode: triggerClickKeycode, maskRender: maskRender, ref: overlayRef }), triggerNode));\n};\nPopup.displayName = 'Popup';\nexport default Popup;\n","import { __assign, __extends, __rest } from \"tslib\";\n/* eslint-disable react/no-multi-comp */\nimport React, { Component } from 'react';\nimport ConfigProvider from '../config-provider';\nimport { assignSubComponent } from '../util/component';\nimport Overlay1 from './overlay';\nimport Overlay2 from './overlay-v2';\nimport Gateway from './gateway';\nimport Position from './position';\nimport Popup1 from './popup';\nimport Popup2 from './popup-v2';\nimport { log } from '../util';\nvar Overlay = /** @class */ (function (_super) {\n    __extends(Overlay, _super);\n    function Overlay(props) {\n        var _this = _super.call(this, props) || this;\n        _this.overlayRef = null;\n        _this.saveRef = _this.saveRef.bind(_this);\n        return _this;\n    }\n    Overlay.prototype.saveRef = function (ref) {\n        this.overlayRef = ref;\n    };\n    /**\n     * 兼容 1.x API, will be removed in 2.1.0\n     */\n    Overlay.prototype.getContent = function () {\n        if (this.overlayRef) {\n            return this.overlayRef.getContent();\n        }\n        return null;\n    };\n    /**\n     * 兼容 1.x API, will be removed in 2.1.0\n     */\n    Overlay.prototype.getContentNode = function () {\n        if (this.overlayRef) {\n            return this.overlayRef.getContentNode();\n        }\n        return null;\n    };\n    Overlay.prototype.render = function () {\n        var _a = this.props, v2 = _a.v2, align = _a.align, animation = _a.animation, others = __rest(_a, [\"v2\", \"align\", \"animation\"]);\n        if (v2) {\n            if ('needAdjust' in others) {\n                log.deprecated('needAdjust', 'autoAdjust', 'Overlay v2');\n                others.autoAdjust = others.needAdjust;\n                delete others.needAdjust;\n            }\n            return React.createElement(Overlay2, __assign({ animation: animation, align: align }, others));\n        }\n        else {\n            return React.createElement(Overlay1, __assign({ animation: animation, align: align }, others, { ref: this.saveRef }));\n        }\n    };\n    Overlay.displayName = 'Overlay';\n    return Overlay;\n}(Component));\nvar Popup = /** @class */ (function (_super) {\n    __extends(Popup, _super);\n    function Popup(props) {\n        var _this = _super.call(this, props) || this;\n        _this.overlay = null;\n        _this.saveRef = _this.saveRef.bind(_this);\n        return _this;\n    }\n    Popup.prototype.saveRef = function (ref) {\n        if (ref) {\n            this.overlay = ref.overlay;\n        }\n    };\n    Popup.prototype.render = function () {\n        var _a = this.props, v2 = _a.v2, others = __rest(_a, [\"v2\"]);\n        if (v2) {\n            if ('needAdjust' in others) {\n                log.deprecated('needAdjust', 'needAdjust', 'Popup v2');\n                others.autoAdjust = others.needAdjust;\n                delete others.needAdjust;\n            }\n            if ('shouldUpdatePosition' in others) {\n                delete others.shouldUpdatePosition;\n            }\n            return React.createElement(Popup2, __assign({}, others));\n        }\n        else {\n            return React.createElement(Popup1, __assign({}, others, { ref: this.saveRef }));\n        }\n    };\n    Popup.displayName = 'Popup';\n    return Popup;\n}(Component));\nvar WithSubOverlay = assignSubComponent(Overlay, {\n    Gateway: Gateway,\n    Position: Position,\n    Popup: ConfigProvider.config(Popup, {\n        exportNames: ['overlay'],\n    }),\n});\nexport default ConfigProvider.config(WithSubOverlay, {\n    exportNames: ['getContent', 'getContentNode'],\n});\n","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { Component } from 'react';\nimport { obj } from '../util';\nimport ConfigProvider from '../config-provider';\n/**\n * Icon\n */\nvar Icon = /** @class */ (function (_super) {\n    __extends(Icon, _super);\n    function Icon() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Icon.prototype.render = function () {\n        var _a;\n        var _b = this.props, prefix = _b.prefix, type = _b.type, size = _b.size, className = _b.className, rtl = _b.rtl, style = _b.style, children = _b.children;\n        var others = obj.pickOthers(Object.assign({}, Icon.propTypes), this.props);\n        var classes = cx((_a = {},\n            _a[\"\".concat(prefix, \"icon\")] = true,\n            _a[\"\".concat(prefix, \"icon-\").concat(type)] = !!type,\n            _a[\"\".concat(prefix).concat(size)] = !!size && typeof size === 'string',\n            _a[className] = !!className,\n            _a));\n        if (rtl &&\n            type &&\n            [\n                'arrow-left',\n                'arrow-right',\n                'arrow-double-left',\n                'arrow-double-right',\n                'switch',\n                'sorting',\n                'descending',\n                'ascending',\n            ].indexOf(type) !== -1) {\n            others.dir = 'rtl';\n        }\n        var sizeStyle = typeof size === 'number'\n            ? {\n                width: size,\n                height: size,\n                lineHeight: \"\".concat(size, \"px\"),\n                fontSize: size,\n            }\n            : {};\n        return (React.createElement(\"i\", __assign({}, others, { style: __assign(__assign({}, sizeStyle), style), className: classes }), children));\n    };\n    Icon.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { type: PropTypes.string, children: PropTypes.node, size: PropTypes.oneOfType([\n            PropTypes.oneOf([\n                'xxs',\n                'xs',\n                'small',\n                'medium',\n                'large',\n                'xl',\n                'xxl',\n                'xxxl',\n                'inherit',\n            ]),\n            PropTypes.number,\n        ]), className: PropTypes.string, style: PropTypes.object });\n    Icon.defaultProps = {\n        prefix: 'next-',\n        size: 'medium',\n    };\n    Icon.displayName = 'Icon';\n    Icon._typeMark = 'icon';\n    return Icon;\n}(Component));\nexport default Icon;\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport cx from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport Icon from './icon';\nvar customCache = new Set();\nvar ConfigIcon = ConfigProvider.config(Icon);\n/** Icon.createFromIconfontCN\n *  通过自定义 iconfont源来使用使用svg格式的图片\n */\nexport default function createFromIconfontCN(options) {\n    var scriptUrl = options.scriptUrl, _a = options.extraCommonProps, extraCommonProps = _a === void 0 ? {} : _a;\n    var hasExist = customCache.has(scriptUrl);\n    if (document.querySelector(\"script[data-namespace=\\\"\".concat(scriptUrl, \"\\\"]\"))) {\n        hasExist = true;\n    }\n    /**\n     * DOM API required.\n     * Make sure in browser environment.\n     * The Custom Icon will create a <script/>\n     * that loads SVG symbols and insert the SVG Element into the document body.\n     */\n    if (typeof document !== 'undefined' &&\n        typeof window !== 'undefined' &&\n        typeof document.createElement === 'function' &&\n        typeof scriptUrl === 'string' &&\n        scriptUrl.length &&\n        !hasExist) {\n        var script = document.createElement('script');\n        script.setAttribute('src', scriptUrl);\n        script.setAttribute('data-namespace', scriptUrl);\n        customCache.add(scriptUrl);\n        document.body.appendChild(script);\n    }\n    var Iconfont = function (props) {\n        var _a;\n        var type = props.type, size = props.size, children = props.children, className = props.className, _b = props.prefix, prefix = _b === void 0 ? 'next-' : _b, others = __rest(props, [\"type\", \"size\", \"children\", \"className\", \"prefix\"]);\n        // component > children > type\n        var content = null;\n        if (props.type) {\n            content = React.createElement(\"use\", { xlinkHref: \"#\".concat(type) });\n        }\n        if (children) {\n            content = children;\n        }\n        var classes = cx((_a = {},\n            _a[\"\".concat(prefix, \"icon-remote\")] = true,\n            _a), className);\n        return (\n        // FIXME: 这里理论上优先级是 props 中的 prefix 优先级更高，不过之前的行为一直是取上层 ConfigProvider 中的 prefix，\n        // 先兼容之前的表现，will be fixed in 2.x\n        // https://github.com/alibaba-fusion/next/issues/3906\n        React.createElement(ConfigIcon, { size: size },\n            React.createElement(\"svg\", __assign({ className: classes, focusable: false }, others, extraCommonProps), content)));\n    };\n    Iconfont.displayName = 'Iconfont';\n    return ConfigProvider.config(Iconfont);\n}\n","import ConfigProvider from '../config-provider';\nimport createFromIconfontCN from './icon-font';\nimport Icon from './icon';\nimport { assignSubComponent } from '../util/component';\nvar IconWithSub = assignSubComponent(Icon, {\n    createFromIconfontCN: createFromIconfontCN,\n});\nexport default ConfigProvider.config(IconWithSub);\n","/**\n * Created by xiachi on 17/1/17.\n */\nvar normalMap = {\n    t: {\n        align: 'bc tc',\n        rtlAlign: 'bc tc',\n        arrow: 'bottom',\n        trOrigin: 'bottom',\n        rtlTrOrigin: 'bottom',\n        offset: [0, -12],\n    },\n    r: {\n        align: 'cl cr',\n        rtlAlign: 'cr cl',\n        arrow: 'left',\n        trOrigin: 'left',\n        rtlTrOrigin: 'right',\n        offset: [12, 0],\n    },\n    b: {\n        align: 'tc bc',\n        rtlAlign: 'tc bc',\n        arrow: 'top',\n        trOrigin: 'top',\n        rtlTrOrigin: 'top',\n        offset: [0, 12],\n    },\n    l: {\n        align: 'cr cl',\n        rtlAlign: 'cl cr',\n        arrow: 'right',\n        trOrigin: 'right',\n        rtlTrOrigin: 'left',\n        offset: [-12, 0],\n    },\n    tl: {\n        align: 'br tc',\n        rtlAlign: 'bl tc',\n        arrow: 'bottom-right',\n        trOrigin: 'bottom right',\n        rtlTrOrigin: 'bottom left',\n        offset: [20, -12],\n    },\n    tr: {\n        align: 'bl tc',\n        rtlAlign: 'br tc',\n        arrow: 'bottom-left',\n        trOrigin: 'bottom left',\n        rtlTrOrigin: 'bottom right',\n        offset: [-20, -12],\n    },\n    rt: {\n        align: 'bl cr',\n        rtlAlign: 'br cl',\n        arrow: 'left-bottom',\n        trOrigin: 'bottom left',\n        rtlTrOrigin: 'bottom right',\n        offset: [12, 20],\n    },\n    rb: {\n        align: 'tl cr',\n        rtlAlign: 'tr cl',\n        arrow: 'left-top',\n        trOrigin: 'top left',\n        rtlTrOrigin: 'top right',\n        offset: [12, -20],\n    },\n    bl: {\n        align: 'tr bc',\n        rtlAlign: 'tl bc',\n        arrow: 'top-right',\n        trOrigin: 'top right',\n        rtlTrOrigin: 'top left',\n        offset: [20, 12],\n    },\n    br: {\n        align: 'tl bc',\n        rtlAlign: 'tr bc',\n        arrow: 'top-left',\n        trOrigin: 'top left',\n        rtlTrOrigin: 'top right',\n        offset: [-20, 12],\n    },\n    lt: {\n        align: 'br cl',\n        rtlAlign: 'bl cr',\n        arrow: 'right-bottom',\n        trOrigin: 'bottom right',\n        rtlTrOrigin: 'bottom left',\n        offset: [-12, 20],\n    },\n    lb: {\n        align: 'tr cl',\n        rtlAlign: 'tl cr',\n        arrow: 'right-top',\n        trOrigin: 'top right',\n        rtlTrOrigin: 'top left',\n        offset: [-12, -20],\n    },\n};\nvar edgeMap = {\n    t: {\n        align: 'bc tc',\n        rtlAlign: 'bc tc',\n        arrow: 'bottom',\n        trOrigin: 'bottom',\n        rtlTrOrigin: 'bottom',\n        offset: [0, -12],\n    },\n    r: {\n        align: 'cl cr',\n        rtlAlign: 'cr cl',\n        arrow: 'left',\n        trOrigin: 'left',\n        rtlTrOrigin: 'right',\n        offset: [12, 0],\n    },\n    b: {\n        align: 'tc bc',\n        rtlAlign: 'tc bc',\n        arrow: 'top',\n        trOrigin: 'top',\n        rtlTrOrigin: 'top',\n        offset: [0, 12],\n    },\n    l: {\n        align: 'cr cl',\n        rtlAlign: 'cl cr',\n        arrow: 'right',\n        trOrigin: 'right',\n        rtlTrOrigin: 'left',\n        offset: [-12, 0],\n    },\n    tl: {\n        align: 'bl tl',\n        rtlAlign: 'br tr',\n        arrow: 'bottom-left',\n        trOrigin: 'bottom left',\n        rtlTrOrigin: 'bottom right',\n        offset: [0, -12],\n    },\n    tr: {\n        align: 'br tr',\n        rtlAlign: 'bl tl',\n        arrow: 'bottom-right',\n        trOrigin: 'bottom right',\n        rtlTrOrigin: 'bottom left',\n        offset: [0, -12],\n    },\n    rt: {\n        align: 'tl tr',\n        rtlAlign: 'tr tl',\n        arrow: 'left-top',\n        trOrigin: 'top left',\n        rtlTrOrigin: 'top right',\n        offset: [12, 0],\n    },\n    rb: {\n        align: 'bl br',\n        rtlAlign: 'br bl',\n        arrow: 'left-bottom',\n        trOrigin: 'bottom left',\n        rtlTrOrigin: 'bottom right',\n        offset: [12, 0],\n    },\n    bl: {\n        align: 'tl bl',\n        rtlAlign: 'tr br',\n        arrow: 'top-left',\n        trOrigin: 'top left',\n        rtlTrOrigin: 'top right',\n        offset: [0, 12],\n    },\n    br: {\n        align: 'tr br',\n        rtlAlign: 'tl bl',\n        arrow: 'top-right',\n        trOrigin: 'top right',\n        rtlTrOrigin: 'top left',\n        offset: [0, 12],\n    },\n    lt: {\n        align: 'tr tl',\n        rtlAlign: 'tl tr',\n        arrow: 'right-top',\n        trOrigin: 'top right',\n        rtlTrOrigin: 'top left',\n        offset: [-12, 0],\n    },\n    lb: {\n        align: 'br bl',\n        rtlAlign: 'bl br',\n        arrow: 'right-bottom',\n        trOrigin: 'bottom right',\n        rtlTrOrigin: 'bottom left',\n        offset: [-12, 0],\n    },\n};\nexport { normalMap, edgeMap };\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { func, obj } from '../util';\nimport Icon from '../icon';\nimport zhCN from '../locale/zh-cn';\nimport { normalMap, edgeMap } from './alignMap';\n/**\n * Created by xiachi on 17/2/10.\n */\nvar noop = func.noop;\nvar BalloonInner = /** @class */ (function (_super) {\n    __extends(BalloonInner, _super);\n    function BalloonInner() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    BalloonInner.prototype.render = function () {\n        var _a, _b;\n        var _c = this.props, prefix = _c.prefix, closable = _c.closable, className = _c.className, style = _c.style, isTooltip = _c.isTooltip, align = _c.align, title = _c.title, type = _c.type, onClose = _c.onClose, alignEdge = _c.alignEdge, v2 = _c.v2, children = _c.children, rtl = _c.rtl, locale = _c.locale, others = __rest(_c, [\"prefix\", \"closable\", \"className\", \"style\", \"isTooltip\", \"align\", \"title\", \"type\", \"onClose\", \"alignEdge\", \"v2\", \"children\", \"rtl\", \"locale\"]);\n        var alignMap = alignEdge || v2 ? edgeMap : normalMap;\n        var _prefix = prefix;\n        if (isTooltip) {\n            _prefix = \"\".concat(_prefix, \"balloon-tooltip\");\n        }\n        else {\n            _prefix = \"\".concat(_prefix, \"balloon\");\n        }\n        var closableInTitle = closable && title !== undefined;\n        var closableInContent = closable && title === undefined;\n        var classes = classNames((_a = {},\n            _a[\"\".concat(_prefix)] = true,\n            _a[\"\".concat(_prefix, \"-\").concat(type)] = type,\n            _a[\"\".concat(_prefix, \"-medium\")] = true,\n            _a[\"\".concat(_prefix, \"-\").concat(alignMap[align].arrow)] = alignMap[align],\n            _a[\"\".concat(_prefix, \"-closable\")] = closableInContent,\n            _a[className] = className,\n            _a[\"\".concat(_prefix, \"-v2\")] = v2,\n            _a));\n        var titleCls = classNames((_b = {},\n            _b[\"\".concat(prefix, \"balloon-title\")] = true,\n            _b[\"\".concat(_prefix, \"-closable\")] = closableInTitle,\n            _b));\n        var closeIcon = (React.createElement(\"a\", { role: \"button\", \"aria-label\": locale.close, tabIndex: 0, className: \"\".concat(_prefix, \"-close\"), onClick: onClose },\n            React.createElement(Icon, { type: \"close\", size: \"small\" })));\n        return (React.createElement(\"div\", __assign({ role: \"tooltip\", \"aria-live\": \"polite\", dir: rtl ? 'rtl' : undefined, className: classes, style: style }, obj.pickOthers(Object.keys(BalloonInner.propTypes), others)),\n            React.createElement(\"div\", { className: \"\".concat(prefix, \"balloon-arrow\") },\n                React.createElement(\"div\", { className: \"\".concat(prefix, \"balloon-arrow-content\") })),\n            title && (React.createElement(\"div\", { className: titleCls },\n                title,\n                closableInTitle && closeIcon)),\n            React.createElement(\"div\", { className: \"\".concat(prefix, \"balloon-content\") }, children),\n            closableInContent && closeIcon));\n    };\n    BalloonInner.contextTypes = {\n        prefix: PropTypes.string,\n    };\n    BalloonInner.propTypes = {\n        prefix: PropTypes.string,\n        rtl: PropTypes.bool,\n        closable: PropTypes.bool,\n        children: PropTypes.any,\n        title: PropTypes.node,\n        className: PropTypes.string,\n        alignEdge: PropTypes.bool,\n        onClose: PropTypes.func,\n        style: PropTypes.any,\n        align: PropTypes.string,\n        type: PropTypes.string,\n        isTooltip: PropTypes.bool,\n        locale: PropTypes.object,\n        pure: PropTypes.bool,\n        v2: PropTypes.bool,\n    };\n    BalloonInner.defaultProps = {\n        prefix: 'next-',\n        closable: true,\n        onClose: noop,\n        locale: zhCN.Balloon,\n        align: 'b',\n        type: 'normal',\n        alignEdge: false,\n        pure: false,\n    };\n    return BalloonInner;\n}(React.Component));\nexport default BalloonInner;\n","import { __assign } from \"tslib\";\nimport React from 'react';\nexport function getDisabledCompatibleTrigger(element) {\n    if (element.type.displayName === 'Config(Button)' && element.props.disabled) {\n        var displayStyle = element.props.style && element.props.style.display\n            ? element.props.style.display\n            : 'inline-block';\n        var child = React.cloneElement(element, {\n            style: __assign(__assign({}, element.props.style), { pointerEvents: 'none' }),\n        });\n        return (\n        // eslint-disable-next-line\n        React.createElement(\"span\", { style: { display: displayStyle, cursor: 'not-allowed' } }, child));\n    }\n    return element;\n}\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { polyfill } from 'react-lifecycles-compat';\nimport Overlay from '../overlay';\nimport { func, obj, log } from '../util';\nimport BalloonInner from './inner';\nimport { normalMap, edgeMap } from './alignMap';\nimport { getDisabledCompatibleTrigger } from './util';\nvar noop = func.noop;\nvar Popup = Overlay.Popup;\nvar alignList = ['t', 'r', 'b', 'l', 'tl', 'tr', 'bl', 'br', 'lt', 'lb', 'rt', 'rb'];\nvar alignMap = normalMap;\nvar Balloon = /** @class */ (function (_super) {\n    __extends(Balloon, _super);\n    function Balloon(props) {\n        var _this = _super.call(this, props) || this;\n        _this.beforePosition = function (result, obj) {\n            var placement = result.config.placement;\n            if (placement !== _this.state.align) {\n                _this.setState({\n                    align: placement,\n                    innerAlign: true,\n                });\n            }\n            if (_this.props.arrowPointToCenter) {\n                var _a = obj.target, width = _a.width, height = _a.height;\n                if (placement.length === 2) {\n                    var offset = normalMap[placement].offset;\n                    switch (placement[0]) {\n                        case 'b':\n                        case 't':\n                            {\n                                var plus = offset[0] > 0 ? 1 : -1;\n                                result.style.left = result.style.left + (plus * width) / 2 - offset[0];\n                            }\n                            break;\n                        case 'l':\n                        case 'r':\n                            {\n                                var plus = offset[0] > 0 ? 1 : -1;\n                                result.style.top = result.style.top + (plus * height) / 2 - offset[1];\n                            }\n                            break;\n                    }\n                }\n            }\n            return result;\n        };\n        _this.state = {\n            align: alignList.includes(props.align) ? props.align : 'b',\n            visible: 'visible' in props ? props.visible : props.defaultVisible,\n        };\n        _this._onClose = _this._onClose.bind(_this);\n        _this._onPosition = _this._onPosition.bind(_this);\n        _this._onVisibleChange = _this._onVisibleChange.bind(_this);\n        return _this;\n    }\n    Balloon.getDerivedStateFromProps = function (nextProps, prevState) {\n        var nextState = {};\n        if ('visible' in nextProps) {\n            nextState.visible = nextProps.visible;\n        }\n        if (!prevState.innerAlign &&\n            'align' in nextProps &&\n            alignList.includes(nextProps.align) &&\n            nextProps.align !== prevState.align) {\n            nextState.align = nextProps.align;\n            nextState.innerAlign = false;\n        }\n        return nextState;\n    };\n    Balloon.prototype._onVisibleChange = function (visible, trigger) {\n        // Not Controlled\n        if (!('visible' in this.props)) {\n            this.setState({\n                visible: visible,\n            });\n        }\n        this.props.onVisibleChange(visible, trigger);\n        if (!visible) {\n            this.props.onClose();\n        }\n    };\n    Balloon.prototype._onClose = function (e) {\n        this._onVisibleChange(false, 'closeClick');\n        //必须加上 preventDefault，否则单测 IE 下报错，出现 full page reload 异常\n        e.preventDefault();\n    };\n    Balloon.prototype._onPosition = function (res) {\n        var rtl = this.props.rtl;\n        alignMap = this.props.alignEdge ? edgeMap : normalMap;\n        var newAlign = res.align.join(' ');\n        var resAlign;\n        var alignKey = 'align';\n        if (rtl) {\n            alignKey = 'rtlAlign';\n        }\n        for (var key in alignMap) {\n            if (alignMap[key][alignKey] === newAlign) {\n                resAlign = key;\n                break;\n            }\n        }\n        // @ts-expect-error 在赋值前使用了变量\n        resAlign = resAlign || this.state.align;\n        if (resAlign !== this.state.align) {\n            this.setState({\n                align: resAlign,\n                innerAlign: true,\n            });\n        }\n    };\n    Balloon.prototype.render = function () {\n        var _a = this.props, id = _a.id, type = _a.type, prefix = _a.prefix, className = _a.className, title = _a.title, alignEdge = _a.alignEdge, trigger = _a.trigger, triggerType = _a.triggerType, children = _a.children, closable = _a.closable, shouldUpdatePosition = _a.shouldUpdatePosition, delay = _a.delay, mouseEnterDelay = _a.mouseEnterDelay, mouseLeaveDelay = _a.mouseLeaveDelay, needAdjust = _a.needAdjust, autoAdjust = _a.autoAdjust, safeId = _a.safeId, autoFocus = _a.autoFocus, safeNode = _a.safeNode, onClick = _a.onClick, onHover = _a.onHover, animation = _a.animation, offset = _a.offset, style = _a.style, container = _a.container, popupContainer = _a.popupContainer, cache = _a.cache, popupStyle = _a.popupStyle, popupClassName = _a.popupClassName, popupProps = _a.popupProps, followTrigger = _a.followTrigger, rtl = _a.rtl, v2 = _a.v2, arrowPointToCenter = _a.arrowPointToCenter, _b = _a.placementOffset, placementOffset = _b === void 0 ? 0 : _b, others = __rest(_a, [\"id\", \"type\", \"prefix\", \"className\", \"title\", \"alignEdge\", \"trigger\", \"triggerType\", \"children\", \"closable\", \"shouldUpdatePosition\", \"delay\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"needAdjust\", \"autoAdjust\", \"safeId\", \"autoFocus\", \"safeNode\", \"onClick\", \"onHover\", \"animation\", \"offset\", \"style\", \"container\", \"popupContainer\", \"cache\", \"popupStyle\", \"popupClassName\", \"popupProps\", \"followTrigger\", \"rtl\", \"v2\", \"arrowPointToCenter\", \"placementOffset\"]);\n        if (container) {\n            log.deprecated('container', 'popupContainer', 'Balloon');\n        }\n        var align = this.state.align;\n        alignMap = alignEdge || v2 ? edgeMap : normalMap;\n        var _prefix = this.context.prefix || prefix;\n        var trOrigin = 'trOrigin';\n        if (rtl) {\n            trOrigin = 'rtlTrOrigin';\n        }\n        var _offset = [\n            alignMap[align].offset[0] + offset[0],\n            alignMap[align].offset[1] + offset[1],\n        ];\n        var transformOrigin = alignMap[align][trOrigin];\n        var _style = __assign({ transformOrigin: transformOrigin }, style);\n        var content = (React.createElement(BalloonInner, __assign({}, obj.pickOthers(Object.keys(Balloon.propTypes), others), { id: id, title: title, prefix: _prefix, closable: closable, onClose: this._onClose, className: className, style: _style, align: align, type: type, rtl: rtl, alignEdge: alignEdge, v2: v2 }), children));\n        var triggerProps = {};\n        triggerProps['aria-describedby'] = id;\n        triggerProps.tabIndex = '0';\n        var ariaTrigger = id\n            ? React.cloneElement(trigger, triggerProps)\n            : trigger;\n        var newTrigger = getDisabledCompatibleTrigger(React.isValidElement(ariaTrigger) ? ariaTrigger : React.createElement(\"span\", null, ariaTrigger));\n        var otherProps = {\n            delay: delay,\n            mouseEnterDelay: mouseEnterDelay,\n            mouseLeaveDelay: mouseLeaveDelay,\n            shouldUpdatePosition: shouldUpdatePosition,\n            needAdjust: needAdjust,\n            align: alignMap[align].align,\n            offset: _offset,\n            safeId: safeId,\n            onHover: onHover,\n            onPosition: this._onPosition,\n        };\n        if (v2) {\n            delete otherProps.align;\n            delete otherProps.shouldUpdatePosition;\n            delete otherProps.needAdjust;\n            delete otherProps.safeId;\n            delete otherProps.onHover;\n            delete otherProps.onPosition;\n            Object.assign(otherProps, {\n                placement: align,\n                placementOffset: placementOffset,\n                v2: true,\n                beforePosition: this.beforePosition,\n                autoAdjust: autoAdjust,\n            });\n        }\n        return (React.createElement(Popup, __assign({}, popupProps, { followTrigger: followTrigger, trigger: newTrigger, cache: cache, triggerType: triggerType, visible: this.state.visible, onClick: onClick, afterClose: this.props.afterClose, onVisibleChange: this._onVisibleChange, animation: animation, autoFocus: triggerType === 'focus' ? false : autoFocus, safeNode: safeNode, container: popupContainer || container, className: popupClassName, style: popupStyle, rtl: rtl }, otherProps), content));\n    };\n    Balloon.displayName = 'Balloon';\n    Balloon.contextTypes = {\n        prefix: PropTypes.string,\n    };\n    Balloon.propTypes = {\n        prefix: PropTypes.string,\n        pure: PropTypes.bool,\n        rtl: PropTypes.bool,\n        className: PropTypes.string,\n        style: PropTypes.object,\n        children: PropTypes.any,\n        size: PropTypes.string,\n        type: PropTypes.oneOf(['normal', 'primary']),\n        title: PropTypes.node,\n        visible: PropTypes.bool,\n        defaultVisible: PropTypes.bool,\n        onVisibleChange: PropTypes.func,\n        alignEdge: PropTypes.bool,\n        v2: PropTypes.bool,\n        arrowPointToCenter: PropTypes.bool,\n        placementOffset: PropTypes.number,\n        closable: PropTypes.bool,\n        align: PropTypes.oneOf(alignList),\n        offset: PropTypes.array,\n        trigger: PropTypes.any,\n        triggerType: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n        onClick: PropTypes.func,\n        onClose: PropTypes.func,\n        onHover: PropTypes.func,\n        autoAdjust: PropTypes.bool,\n        needAdjust: PropTypes.bool,\n        delay: PropTypes.number,\n        mouseEnterDelay: PropTypes.number,\n        mouseLeaveDelay: PropTypes.number,\n        afterClose: PropTypes.func,\n        shouldUpdatePosition: PropTypes.bool,\n        autoFocus: PropTypes.bool,\n        safeNode: PropTypes.string,\n        safeId: PropTypes.string,\n        animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n        cache: PropTypes.bool,\n        popupContainer: PropTypes.any,\n        container: PropTypes.any,\n        popupStyle: PropTypes.object,\n        popupClassName: PropTypes.string,\n        popupProps: PropTypes.object,\n        followTrigger: PropTypes.bool,\n        id: PropTypes.string,\n    };\n    Balloon.defaultProps = {\n        prefix: 'next-',\n        pure: false,\n        type: 'normal',\n        closable: true,\n        defaultVisible: false,\n        size: 'medium',\n        alignEdge: false,\n        arrowPointToCenter: false,\n        align: 'b',\n        offset: [0, 0],\n        trigger: React.createElement(\"span\", null),\n        onClose: noop,\n        afterClose: noop,\n        onVisibleChange: noop,\n        needAdjust: false,\n        triggerType: 'hover',\n        safeNode: undefined,\n        safeId: null,\n        autoFocus: true,\n        animation: {\n            in: 'zoomIn zoomInBig',\n            out: 'zoomOut zoomOutBig',\n        },\n        cache: false,\n        popupStyle: {},\n        popupClassName: '',\n        popupProps: {},\n    };\n    return Balloon;\n}(React.Component));\nexport default polyfill(Balloon);\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from '../overlay';\nimport BalloonInner from './inner';\nimport { normalMap, edgeMap } from './alignMap';\nimport { getDisabledCompatibleTrigger } from './util';\nvar Popup = Overlay.Popup;\nvar alignMap = normalMap;\n/** Balloon.Tooltip */\nvar Tooltip = /** @class */ (function (_super) {\n    __extends(Tooltip, _super);\n    function Tooltip(props) {\n        var _this = _super.call(this, props) || this;\n        _this.beforePosition = function (result, obj) {\n            var placement = result.config.placement;\n            if (placement !== _this.state.align) {\n                _this.setState({\n                    align: placement,\n                    innerAlign: true,\n                });\n            }\n            if (_this.props.arrowPointToCenter) {\n                var _a = obj.target, width = _a.width, height = _a.height;\n                if (placement.length === 2) {\n                    var offset = normalMap[placement].offset;\n                    switch (placement[0]) {\n                        case 'b':\n                        case 't':\n                            {\n                                var plus = offset[0] > 0 ? 1 : -1;\n                                result.style.left = result.style.left + (plus * width) / 2 - offset[0];\n                            }\n                            break;\n                        case 'l':\n                        case 'r':\n                            {\n                                var plus = offset[0] > 0 ? 1 : -1;\n                                result.style.top = result.style.top + (plus * height) / 2 - offset[1];\n                            }\n                            break;\n                    }\n                }\n            }\n            return result;\n        };\n        _this.state = {\n            align: props.placement || props.align,\n            innerAlign: false,\n        };\n        return _this;\n    }\n    Tooltip.getDerivedStateFromProps = function (nextProps, prevState) {\n        if (nextProps.v2 &&\n            !prevState.innerAlign &&\n            'align' in nextProps &&\n            nextProps.align !== prevState.align) {\n            return {\n                align: nextProps.align,\n                innerAlign: false,\n            };\n        }\n        return null;\n    };\n    Tooltip.prototype.render = function () {\n        var _a = this.props, id = _a.id, className = _a.className, palign = _a.align, style = _a.style, prefix = _a.prefix, trigger = _a.trigger, children = _a.children, popupContainer = _a.popupContainer, popupProps = _a.popupProps, popupClassName = _a.popupClassName, popupStyle = _a.popupStyle, followTrigger = _a.followTrigger, triggerType = _a.triggerType, autoFocus = _a.autoFocus, alignEdge = _a.alignEdge, autoAdjust = _a.autoAdjust, rtl = _a.rtl, delay = _a.delay, mouseEnterDelay = _a.mouseEnterDelay, mouseLeaveDelay = _a.mouseLeaveDelay, v2 = _a.v2, arrowPointToCenter = _a.arrowPointToCenter, others = __rest(_a, [\"id\", \"className\", \"align\", \"style\", \"prefix\", \"trigger\", \"children\", \"popupContainer\", \"popupProps\", \"popupClassName\", \"popupStyle\", \"followTrigger\", \"triggerType\", \"autoFocus\", \"alignEdge\", \"autoAdjust\", \"rtl\", \"delay\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"v2\", \"arrowPointToCenter\"]);\n        var trOrigin = 'trOrigin';\n        if (rtl) {\n            // @ts-expect-error others 上没有 rtl 属性\n            others.rtl = true;\n            trOrigin = 'rtlTrOrigin';\n        }\n        alignMap = alignEdge || v2 ? edgeMap : normalMap;\n        var align = v2 ? this.state.align : palign;\n        var transformOrigin = alignMap[align][trOrigin];\n        var _offset = alignMap[align].offset;\n        var _style = __assign({ transformOrigin: transformOrigin }, style);\n        var content = (React.createElement(BalloonInner, __assign({}, others, { id: id, prefix: prefix, closable: false, isTooltip: true, className: className, style: _style, align: align, rtl: rtl, alignEdge: alignEdge, v2: v2 }), children));\n        var triggerProps = {};\n        triggerProps['aria-describedby'] = id;\n        triggerProps.tabIndex = '0';\n        var newTriggerType = triggerType;\n        if (triggerType === 'hover' && id) {\n            newTriggerType = ['focus', 'hover'];\n        }\n        var ariaTrigger = id\n            ? React.cloneElement(trigger, triggerProps)\n            : trigger;\n        var newTrigger = getDisabledCompatibleTrigger(React.isValidElement(ariaTrigger) ? ariaTrigger : React.createElement(\"span\", null, ariaTrigger));\n        var otherProps = {\n            delay: delay,\n            mouseEnterDelay: mouseEnterDelay,\n            mouseLeaveDelay: mouseLeaveDelay,\n            shouldUpdatePosition: true,\n            needAdjust: false,\n            align: alignMap[align].align,\n            offset: _offset,\n        };\n        if (v2) {\n            delete otherProps.align;\n            delete otherProps.shouldUpdatePosition;\n            delete otherProps.needAdjust;\n            delete otherProps.offset;\n            Object.assign(otherProps, {\n                placement: align,\n                placementOffset: 12,\n                v2: true,\n                beforePosition: this.beforePosition,\n                autoAdjust: autoAdjust,\n            });\n        }\n        return (React.createElement(Popup, __assign({ role: \"tooltip\", animation: {\n                in: 'zoomIn',\n                out: 'zoomOut',\n            }, className: popupClassName, container: popupContainer, followTrigger: followTrigger, trigger: newTrigger, triggerType: newTriggerType, style: popupStyle, rtl: rtl, autoFocus: triggerType === 'focus' ? false : autoFocus }, otherProps, popupProps), content));\n    };\n    Tooltip.displayName = 'Tooltip';\n    Tooltip.propTypes = {\n        prefix: PropTypes.string,\n        className: PropTypes.string,\n        style: PropTypes.object,\n        children: PropTypes.any,\n        align: PropTypes.oneOf([\n            't',\n            'r',\n            'b',\n            'l',\n            'tl',\n            'tr',\n            'bl',\n            'br',\n            'lt',\n            'lb',\n            'rt',\n            'rb',\n        ]),\n        trigger: PropTypes.any,\n        triggerType: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n        popupStyle: PropTypes.object,\n        popupClassName: PropTypes.string,\n        popupProps: PropTypes.object,\n        pure: PropTypes.bool,\n        popupContainer: PropTypes.any,\n        followTrigger: PropTypes.bool,\n        id: PropTypes.string,\n        delay: PropTypes.number,\n        mouseEnterDelay: PropTypes.number,\n        mouseLeaveDelay: PropTypes.number,\n        v2: PropTypes.bool,\n        arrowPointToCenter: PropTypes.bool,\n    };\n    Tooltip.defaultProps = {\n        triggerType: 'hover',\n        prefix: 'next-',\n        align: 'b',\n        delay: 50,\n        trigger: React.createElement(\"span\", null),\n        arrowPointToCenter: false,\n    };\n    return Tooltip;\n}(Component));\nexport default Tooltip;\n","import { __assign, __rest } from \"tslib\";\nimport ConfigProvider from '../config-provider';\nimport Balloon from './balloon';\nimport Tooltip from './tooltip';\nimport Inner from './inner';\nimport { assignSubComponent } from '../util/component';\nvar BalloonWithSub = assignSubComponent(Balloon, {\n    Tooltip: ConfigProvider.config(Tooltip, {\n        transform: function (props, deprecated) {\n            if ('text' in props) {\n                deprecated('text', 'children', 'Tooltip');\n                var text = props.text, others = __rest(props, [\"text\"]);\n                props = __assign({ children: text }, others);\n            }\n            return props;\n        },\n    }),\n    Inner: Inner,\n});\nexport default ConfigProvider.config(BalloonWithSub, {\n    transform: function (props, deprecated) {\n        if (props.alignment) {\n            deprecated('alignment', 'alignEdge', 'Balloon');\n            var alignment = props.alignment, others = __rest(props, [\"alignment\"]);\n            props = __assign({ alignEdge: alignment === 'edge' }, others);\n        }\n        if (props.onCloseClick) {\n            deprecated('onCloseClick', 'onVisibleChange(visible, [type = \"closeClick\"])', 'Balloon');\n            var onCloseClick_1 = props.onCloseClick, onVisibleChange_1 = props.onVisibleChange, others = __rest(props, [\"onCloseClick\", \"onVisibleChange\"]);\n            var newOnVisibleChange = function (visible, type) {\n                if (type === 'closeClick') {\n                    onCloseClick_1();\n                }\n                if (onVisibleChange_1) {\n                    onVisibleChange_1(visible, type);\n                }\n            };\n            props = __assign({ onVisibleChange: newOnVisibleChange }, others);\n        }\n        return props;\n    },\n});\n","import { __assign, __extends } from \"tslib\";\nimport React, { Component } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { func, obj, KEYCODE } from '../../util';\nvar bindCtx = func.bindCtx;\nvar pickOthers = obj.pickOthers;\nvar Item = /** @class */ (function (_super) {\n    __extends(Item, _super);\n    function Item(props) {\n        var _this = _super.call(this, props) || this;\n        bindCtx(_this, ['handleClick', 'handleKeyDown']);\n        return _this;\n    }\n    Item.prototype.componentDidMount = function () {\n        this.itemNode = findDOMNode(this);\n        var _a = this.props, parentMode = _a.parentMode, root = _a.root, menu = _a.menu;\n        if (menu) {\n            this.menuNode = findDOMNode(menu);\n        }\n        else if (parentMode === 'popup') {\n            this.menuNode = this.itemNode.parentNode;\n        }\n        else {\n            this.menuNode = findDOMNode(root);\n            var _b = root.props, prefix = _b.prefix, header = _b.header, footer = _b.footer;\n            if (header || footer) {\n                this.menuNode = this.menuNode.querySelector(\".\".concat(prefix, \"menu-content\"));\n            }\n        }\n        this.setFocus();\n    };\n    Item.prototype.componentDidUpdate = function () {\n        var root = this.props.root;\n        if (root.props.focusable && root.state.focusedKey !== this.lastFocusedKey) {\n            this.setFocus();\n        }\n    };\n    Item.prototype.focusable = function () {\n        var _a = this.props, root = _a.root, type = _a.type, disabled = _a.disabled;\n        var focusable = root.props.focusable;\n        return focusable && (type === 'submenu' || !disabled);\n    };\n    Item.prototype.getFocused = function () {\n        var _a = this.props, _key = _a._key, root = _a.root;\n        var focusedKey = root.state.focusedKey;\n        return focusedKey === _key;\n    };\n    Item.prototype.setFocus = function () {\n        var focused = this.getFocused();\n        this.lastFocusedKey = this.props.root.state.focusedKey;\n        if (focused) {\n            if (this.focusable()) {\n                this.itemNode.focus({ preventScroll: true });\n            }\n            if (this.menuNode && this.menuNode.scrollHeight > this.menuNode.clientHeight) {\n                var scrollBottom = this.menuNode.clientHeight + this.menuNode.scrollTop;\n                var itemBottom = this.itemNode.offsetTop + this.itemNode.offsetHeight;\n                if (itemBottom > scrollBottom) {\n                    this.menuNode.scrollTop = itemBottom - this.menuNode.clientHeight;\n                }\n                else if (this.itemNode.offsetTop < this.menuNode.scrollTop) {\n                    this.menuNode.scrollTop = this.itemNode.offsetTop;\n                }\n            }\n        }\n    };\n    Item.prototype.handleClick = function (e) {\n        e.stopPropagation();\n        var _a = this.props, _key = _a._key, root = _a.root, disabled = _a.disabled;\n        if (!disabled) {\n            root.handleItemClick(_key, this, e);\n            this.props.onClick && this.props.onClick(e);\n        }\n        else {\n            e.preventDefault();\n        }\n    };\n    Item.prototype.handleKeyDown = function (e) {\n        var _a = this.props, _key = _a._key, root = _a.root, type = _a.type;\n        if (this.focusable()) {\n            root.handleItemKeyDown(_key, type, this, e);\n            switch (e.keyCode) {\n                case KEYCODE.ENTER: {\n                    if (!(type === 'submenu')) {\n                        this.handleClick(e);\n                    }\n                    break;\n                }\n            }\n        }\n        this.props.onKeyDown && this.props.onKeyDown(e);\n    };\n    Item.prototype.getTitle = function (children) {\n        if (typeof children === 'string') {\n            return children;\n        }\n        return;\n    };\n    Item.prototype.render = function () {\n        var _a, _b;\n        var _c = this.props, inlineLevel = _c.inlineLevel, root = _c.root, replaceClassName = _c.replaceClassName, groupIndent = _c.groupIndent, component = _c.component, disabled = _c.disabled, className = _c.className, children = _c.children, needIndent = _c.needIndent, parentMode = _c.parentMode, _key = _c._key;\n        var others = pickOthers(Item.propTypes, this.props);\n        var _d = root.props, prefix = _d.prefix, focusable = _d.focusable, inlineIndent = _d.inlineIndent, itemClassName = _d.itemClassName, rtl = _d.rtl;\n        var focused = this.getFocused();\n        var newClassName = replaceClassName\n            ? className\n            : cx((_a = {},\n                _a[\"\".concat(prefix, \"menu-item\")] = true,\n                _a[\"\".concat(prefix, \"disabled\")] = disabled,\n                _a[\"\".concat(prefix, \"focused\")] = !focusable && focused,\n                _a), itemClassName, className);\n        if (disabled) {\n            others['aria-disabled'] = true;\n            others['aria-hidden'] = true;\n        }\n        others.tabIndex = root.state.tabbableKey === _key ? 0 : -1;\n        if (parentMode === 'inline' && inlineLevel > 1 && inlineIndent > 0 && needIndent) {\n            var paddingProp = rtl ? 'paddingRight' : 'paddingLeft';\n            others.style = __assign(__assign({}, (others.style || {})), (_b = {}, _b[paddingProp] = \"\".concat(inlineLevel * inlineIndent - (groupIndent || 0) * 0.4 * inlineIndent, \"px\"), _b));\n        }\n        var TagName = component;\n        var role = 'menuitem';\n        if ('selectMode' in root.props) {\n            role = 'option';\n        }\n        return (React.createElement(TagName, __assign({ role: role, title: this.getTitle(children) }, others, { className: newClassName, onClick: this.handleClick, onKeyDown: this.handleKeyDown }),\n            React.createElement(\"div\", { className: \"\".concat(prefix, \"menu-item-inner\") }, children)));\n    };\n    Item.propTypes = {\n        _key: PropTypes.string,\n        level: PropTypes.number,\n        inlineLevel: PropTypes.number,\n        groupIndent: PropTypes.number,\n        root: PropTypes.object,\n        menu: PropTypes.any,\n        parent: PropTypes.object,\n        parentMode: PropTypes.oneOf(['inline', 'popup']),\n        type: PropTypes.oneOf(['submenu', 'item']),\n        component: PropTypes.string,\n        disabled: PropTypes.bool,\n        className: PropTypes.string,\n        onClick: PropTypes.func,\n        onKeyDown: PropTypes.func,\n        needIndent: PropTypes.bool,\n        replaceClassName: PropTypes.bool,\n    };\n    Item.defaultProps = {\n        component: 'li',\n        groupIndent: 0,\n        replaceClassName: false,\n        needIndent: true,\n    };\n    return Item;\n}(Component));\nexport default Item;\n","import { __assign, __extends } from \"tslib\";\nimport React, { Component, isValidElement, } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Icon from '../../icon';\nimport { func, obj, KEYCODE } from '../../util';\nimport Item from './item';\nvar bindCtx = func.bindCtx;\nvar pickOthers = obj.pickOthers;\nvar SelectableItem = /** @class */ (function (_super) {\n    __extends(SelectableItem, _super);\n    function SelectableItem(props) {\n        var _this = _super.call(this, props) || this;\n        bindCtx(_this, ['handleKeyDown', 'handleClick']);\n        return _this;\n    }\n    SelectableItem.prototype.getSelected = function () {\n        var _a = this.props, _key = _a._key, root = _a.root, selected = _a.selected;\n        var selectMode = root.props.selectMode;\n        var selectedKeys = root.state.selectedKeys;\n        return selected || (!!selectMode && selectedKeys.indexOf(_key) > -1);\n    };\n    SelectableItem.prototype.handleSelect = function (e) {\n        var _a = this.props, _key = _a._key, root = _a.root, onSelect = _a.onSelect;\n        if (onSelect) {\n            onSelect(!this.getSelected(), this, e);\n        }\n        else {\n            root.handleSelect(_key, !this.getSelected(), this);\n        }\n    };\n    SelectableItem.prototype.handleKeyDown = function (e) {\n        if (e.keyCode === KEYCODE.SPACE && !this.props.disabled) {\n            this.handleSelect(e);\n        }\n        this.props.onKeyDown && this.props.onKeyDown(e);\n    };\n    SelectableItem.prototype.handleClick = function (e) {\n        this.handleSelect(e);\n        this.props.onClick && this.props.onClick(e);\n    };\n    SelectableItem.prototype.renderSelectedIcon = function (selected) {\n        var _a;\n        var _b = this\n            .props, root = _b.root, inlineIndent = _b.inlineIndent, needIndent = _b.needIndent, hasSelectedIcon = _b.hasSelectedIcon, isSelectIconRight = _b.isSelectIconRight, type = _b.type;\n        var _c = root.props, prefix = _c.prefix, rootSelectedIcon = _c.hasSelectedIcon, rootSelectIconRight = _c.isSelectIconRight, icons = _c.icons;\n        var iconsSelect = icons.select;\n        if (!isValidElement(icons.select) && icons.select) {\n            iconsSelect = React.createElement(\"span\", null, icons.select);\n        }\n        var cls = cx((_a = {},\n            _a[\"\".concat(prefix, \"menu-icon-selected\")] = true,\n            _a[\"\".concat(prefix, \"menu-symbol-icon-selected\")] = !iconsSelect,\n            _a[\"\".concat(prefix, \"menu-icon-right\")] = ('isSelectIconRight' in this.props ? isSelectIconRight : rootSelectIconRight) &&\n                type !== 'submenu',\n            _a));\n        return ('hasSelectedIcon' in this.props ? hasSelectedIcon : rootSelectedIcon) && selected\n            ? React.cloneElement(iconsSelect || React.createElement(Icon, { type: \"select\" }), {\n                // @ts-expect-error FIXME: inlineIndent 可能为 undefined，此时表达式恒为 false，这里需要明确这个逻辑\n                style: needIndent && inlineIndent > 0 ? { left: \"\".concat(inlineIndent, \"px\") } : null,\n                className: cls,\n            })\n            : null;\n    };\n    SelectableItem.prototype.render = function () {\n        var _a;\n        var _b = this\n            .props, _key = _b._key, root = _b.root, className = _b.className, disabled = _b.disabled, helper = _b.helper, children = _b.children, needIndent = _b.needIndent;\n        var prefix = root.props.prefix;\n        var others = pickOthers(SelectableItem.propTypes, this.props);\n        var selected = this.getSelected();\n        var newProps = __assign({ _key: _key, root: root, disabled: disabled, type: 'item', className: cx((_a = {},\n                _a[\"\".concat(prefix, \"selected\")] = selected,\n                _a), className), onKeyDown: this.handleKeyDown, onClick: !disabled ? this.handleClick : this.props.onClick, needIndent: needIndent }, others);\n        if (!('title' in newProps) && typeof children === 'string') {\n            newProps.title = children;\n        }\n        var textProps = {};\n        if ('selectMode' in root.props) {\n            textProps['aria-selected'] = selected;\n        }\n        return (React.createElement(Item, __assign({}, newProps),\n            this.renderSelectedIcon(selected),\n            React.createElement(\"span\", __assign({ className: \"\".concat(prefix, \"menu-item-text\") }, textProps), children),\n            helper ? React.createElement(\"div\", { className: \"\".concat(prefix, \"menu-item-helper\") }, helper) : null));\n    };\n    SelectableItem.menuChildType = 'item';\n    SelectableItem.propTypes = {\n        _key: PropTypes.string,\n        root: PropTypes.object,\n        selected: PropTypes.bool,\n        onSelect: PropTypes.func,\n        inlineIndent: PropTypes.number,\n        disabled: PropTypes.bool,\n        helper: PropTypes.node,\n        children: PropTypes.node,\n        className: PropTypes.string,\n        onKeyDown: PropTypes.func,\n        onClick: PropTypes.func,\n        needIndent: PropTypes.bool,\n        hasSelectedIcon: PropTypes.bool,\n        isSelectIconRight: PropTypes.bool,\n        icons: PropTypes.object,\n    };\n    SelectableItem.defaultProps = {\n        disabled: false,\n        needIndent: true,\n        icons: {},\n    };\n    return SelectableItem;\n}(Component));\nexport default SelectableItem;\n","export var getWidth = function (elem) {\n    var width = elem &&\n        typeof elem.getBoundingClientRect === 'function' &&\n        elem.getBoundingClientRect().width;\n    if (width) {\n        width = +width.toFixed(6);\n    }\n    return width || 0;\n};\nexport var normalizeToArray = function (items) {\n    if (items) {\n        if (Array.isArray(items)) {\n            return items;\n        }\n        return [items];\n    }\n    return [];\n};\nexport var isSibling = function (currentPos, targetPos) {\n    var currentNums = currentPos.split('-').slice(0, -1);\n    var targetNums = targetPos.split('-').slice(0, -1);\n    return (currentNums.length === targetNums.length &&\n        currentNums.every(function (num, index) {\n            return num === targetNums[index];\n        }));\n};\nexport var isAncestor = function (currentPos, targetPos) {\n    var currentNums = currentPos.split('-');\n    var targetNums = targetPos.split('-');\n    return (currentNums.length > targetNums.length &&\n        targetNums.every(function (num, index) {\n            return num === currentNums[index];\n        }));\n};\nexport var isAvailablePos = function (refPos, targetPos, _p2n) {\n    var _a = _p2n[targetPos], type = _a.type, disabled = _a.disabled;\n    return isSibling(refPos, targetPos) && ((type === 'item' && !disabled) || type === 'submenu');\n};\nexport var getFirstAvaliablelChildKey = function (parentPos, _p2n) {\n    var pos = Object.keys(_p2n).find(function (p) { return isAvailablePos(\"\".concat(parentPos, \"-0\"), p, _p2n); });\n    return pos ? _p2n[pos].key : null;\n};\n/**\n * 如果 key 在 SelectedKeys 的选中链上（例如 SelectedKeys 是 ['0-1-2'],  key 是 0-1），那么返回 true\n *\n * selectMode?: string; 当前的选择模式，一般为 multiple single\n * selectedKeys?: string[]; 选中的 key 值\n * k2n?: object[] mapping;\n * _key?: string; 待测试的 key 值\n *\n * @returns bool 当前元素是否有孩子被选中\n */\nexport var getChildSelected = function (_a) {\n    var selectMode = _a.selectMode, selectedKeys = _a.selectedKeys, _k2n = _a._k2n, _key = _a._key;\n    if (!_k2n) {\n        return false;\n    }\n    var _keyPos = \"\".concat(_k2n[_key] && _k2n[_key].pos, \"-\");\n    return (!!selectMode && selectedKeys.some(function (key) { return _k2n[key] && _k2n[key].pos.indexOf(_keyPos) === 0; }));\n};\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component, } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Icon from '../../icon';\nimport Overlay from '../../overlay';\nimport { func, obj, dom } from '../../util';\nimport Item from './item';\nimport SelectableItem from './selectable-item';\nimport { getChildSelected } from './util';\nvar bindCtx = func.bindCtx;\nvar setStyle = dom.setStyle;\nvar Popup = Overlay.Popup;\nvar PopupItem = /** @class */ (function (_super) {\n    __extends(PopupItem, _super);\n    function PopupItem(props) {\n        var _this = _super.call(this, props) || this;\n        _this.handleOpen = function (open, triggerType, e) {\n            var _a = _this.props, _key = _a._key, root = _a.root;\n            // @ts-expect-error FIXME: PopupProps 里 triggerType 不正确，待其修复后可删除该行\n            root.handleOpen(_key, open, triggerType, e);\n            var popupProps = _this.popupProps;\n            popupProps.onVisibleChange && popupProps.onVisibleChange(open, triggerType, e);\n        };\n        bindCtx(_this, ['handleOpen', 'handlePopupOpen', 'handlePopupClose', 'getPopup']);\n        return _this;\n    }\n    PopupItem.prototype.getPopup = function (ref) {\n        this.popup = ref;\n    };\n    PopupItem.prototype.getOpen = function () {\n        var _a = this.props, _key = _a._key, root = _a.root;\n        var openKeys = root.state.openKeys;\n        return openKeys.indexOf(_key) > -1;\n    };\n    PopupItem.prototype.getPopupProps = function () {\n        var popupProps = this.props.root.props.popupProps;\n        if (typeof popupProps === 'function') {\n            popupProps = popupProps(this.props);\n        }\n        return popupProps;\n    };\n    PopupItem.prototype.handlePopupOpen = function () {\n        var _a = this.props, root = _a.root, level = _a.level, align = _a.align, autoWidth = _a.autoWidth;\n        var _b = root.props, rootPopupAutoWidth = _b.popupAutoWidth, rootPopupAlign = _b.popupAlign, direction = _b.direction;\n        var popupAlign = align || rootPopupAlign;\n        var popupAutoWidth = 'autoWidth' in this.props ? autoWidth : rootPopupAutoWidth;\n        try {\n            // avoid errors while dom removed and js executing\n            var itemNode = findDOMNode(this);\n            var menuNode = itemNode.parentNode;\n            // @ts-expect-error FIXME: popup 类型改造完成后可删除该行\n            this.popupNode = this.popup.getInstance().overlay.getInstance().getContentNode();\n            root.popupNodes.push(this.popupNode);\n            if (popupAutoWidth) {\n                var targetNode = direction === 'hoz' && level === 1 ? itemNode : menuNode;\n                if (targetNode.offsetWidth > this.popupNode.offsetWidth) {\n                    setStyle(this.popupNode, 'width', \"\".concat(targetNode.offsetWidth, \"px\"));\n                }\n            }\n            if (popupAlign === 'outside' && !(direction === 'hoz' && level === 1)) {\n                setStyle(this.popupNode, 'height', \"\".concat(menuNode.offsetHeight, \"px\"));\n                this.popupNode.firstElementChild &&\n                    setStyle(this.popupNode.firstElementChild, 'overflow-y', 'auto');\n            }\n            // removeClass(this.popupNode, `${prefix}hide`);\n            var popupProps = this.popupProps;\n            popupProps.onOpen && popupProps.onOpen();\n        }\n        catch (error) {\n            return null;\n        }\n    };\n    PopupItem.prototype.handlePopupClose = function () {\n        var root = this.props.root;\n        var popupNodes = root.popupNodes;\n        var index = popupNodes.indexOf(this.popupNode);\n        index > -1 && popupNodes.splice(index, 1);\n        var popupProps = this.popupProps;\n        popupProps.onClose && popupProps.onClose();\n    };\n    PopupItem.prototype.renderItem = function (selectable, children, others) {\n        var _a;\n        var _b = this\n            .props, _key = _b._key, root = _b.root, level = _b.level, inlineLevel = _b.inlineLevel, label = _b.label, className = _b.className;\n        var _c = root.props, prefix = _c.prefix, selectMode = _c.selectMode;\n        var NewItem = (selectable ? SelectableItem : Item);\n        var open = this.getOpen();\n        var _d = root.state, selectedKeys = _d.selectedKeys, _k2n = _d._k2n;\n        var isChildSelected = getChildSelected({\n            _key: _key,\n            _k2n: _k2n,\n            selectMode: selectMode,\n            selectedKeys: selectedKeys,\n        });\n        var itemProps = {\n            'aria-haspopup': true,\n            'aria-expanded': open,\n            _key: _key,\n            root: root,\n            level: level,\n            inlineLevel: inlineLevel,\n            type: 'submenu',\n        };\n        itemProps.className = cx((_a = {},\n            _a[\"\".concat(prefix, \"opened\")] = open,\n            _a[\"\".concat(prefix, \"child-selected\")] = isChildSelected,\n            _a), className);\n        return (React.createElement(NewItem, __assign({}, itemProps, others),\n            React.createElement(\"span\", { className: \"\".concat(prefix, \"menu-item-text\") }, label),\n            children));\n    };\n    PopupItem.prototype.renderPopup = function (trigger, triggerType, positionProps, children) {\n        var _this = this;\n        var _a = this.props, root = _a.root, level = _a.level, selectable = _a.selectable, propCls = _a.className;\n        var direction = root.props.direction;\n        this.popupProps = this.getPopupProps();\n        var open = this.getOpen();\n        if (direction === 'hoz' && level === 1 && selectable) {\n            positionProps.target = function () { return findDOMNode(_this); };\n        }\n        var posCls = positionProps.className, otherPostion = __rest(positionProps, [\"className\"]);\n        var className = cx(propCls, posCls);\n        return (React.createElement(Popup, __assign({ ref: this.getPopup }, otherPostion, this.popupProps, { canCloseByEsc: false, trigger: trigger, triggerType: triggerType, visible: open, pinFollowBaseElementWhenFixed: true, onVisibleChange: this.handleOpen, onOpen: this.handlePopupOpen, onClose: this.handlePopupClose }),\n            React.createElement(\"div\", { className: className }, children)));\n    };\n    PopupItem.prototype.render = function () {\n        var _a;\n        var _this = this;\n        var _b = this.props, root = _b.root, level = _b.level, hasSubMenu = _b.hasSubMenu, selectableFromProps = _b.selectable, children = _b.children, triggerType = _b.triggerType, align = _b.align, noIcon = _b.noIcon;\n        var others = obj.pickOthers(PopupItem.propTypes, this.props);\n        var _c = root.props, prefix = _c.prefix, selectMode = _c.selectMode, direction = _c.direction, rootPopupAlign = _c.popupAlign, rootTriggerType = _c.triggerType;\n        var popupAlign = align || rootPopupAlign;\n        var newTriggerType = triggerType || (hasSubMenu ? rootTriggerType : 'hover');\n        var newChildren = Array.isArray(children) ? children[0] : children;\n        // let newChildren = Array.isArray(children) ? children[0] : children;\n        // newChildren = cloneElement(newChildren, {\n        //     className: cx({\n        //         [`${prefix}menu-popup-content`]: true,\n        //         [newChildren.props.className]: !!newChildren.props.className,\n        //         [`${prefix}hide`]: popupAutoWidth || popupAlign === 'outside'\n        //     })\n        // });\n        var selectable = selectMode && selectableFromProps;\n        var triggerIsIcon = selectable && newTriggerType === 'click';\n        var open = this.getOpen();\n        var positionProps = {};\n        var arrowProps;\n        if (direction === 'hoz' && level === 1) {\n            positionProps.align = 'tl bl';\n            positionProps.className = \"\".concat(prefix, \"menu-spacing-tb\");\n            arrowProps = {\n                type: 'arrow-down',\n                className: cx((_a = {},\n                    _a[\"\".concat(prefix, \"menu-hoz-icon-arrow\")] = true,\n                    _a[\"\".concat(prefix, \"open\")] = open,\n                    _a)),\n            };\n        }\n        else {\n            if (popupAlign === 'outside') {\n                positionProps.target = function () {\n                    return findDOMNode(root);\n                };\n                positionProps.align = 'tl tr';\n                positionProps.className = \"\".concat(prefix, \"menu-spacing-lr \").concat(prefix, \"menu-outside\");\n            }\n            else {\n                if (triggerIsIcon) {\n                    positionProps.target = function () {\n                        return findDOMNode(_this);\n                    };\n                }\n                positionProps.align = 'tl tr';\n                positionProps.className = \"\".concat(prefix, \"menu-spacing-lr\");\n            }\n            arrowProps = {\n                type: 'arrow-right',\n                className: \"\".concat(prefix, \"menu-icon-arrow \").concat(prefix, \"menu-symbol-popupfold\"),\n            };\n        }\n        var arrow = React.createElement(Icon, __assign({}, arrowProps));\n        var trigger = triggerIsIcon\n            ? arrow\n            : this.renderItem(selectable, noIcon ? null : arrow, others);\n        var popup = this.renderPopup(trigger, newTriggerType, positionProps, newChildren);\n        return triggerIsIcon ? this.renderItem(selectable, popup, others) : popup;\n    };\n    PopupItem.menuChildType = 'submenu';\n    PopupItem.propTypes = {\n        _key: PropTypes.string,\n        root: PropTypes.object,\n        level: PropTypes.number,\n        hasSubMenu: PropTypes.bool,\n        noIcon: PropTypes.bool,\n        rtl: PropTypes.bool,\n        selectable: PropTypes.bool,\n        /**\n         * 标签内容\n         */\n        label: PropTypes.node,\n        /**\n         * 自定义弹层内容\n         */\n        children: PropTypes.node,\n        className: PropTypes.string,\n        /**\n         * 子菜单打开的触发行为\n         */\n        triggerType: PropTypes.oneOf(['click', 'hover']),\n        align: PropTypes.oneOf(['outside', 'follow']),\n        autoWidth: PropTypes.bool,\n    };\n    PopupItem.defaultProps = {\n        selectable: false,\n        noIcon: false,\n    };\n    return PopupItem;\n}(Component));\nexport default PopupItem;\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component, Children, cloneElement, } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Animate from '../../animate';\nimport Icon from '../../icon';\nimport { func, obj } from '../../util';\nimport Item from './item';\nimport SelectabelItem from './selectable-item';\nimport PopupItem from './popup-item';\nimport { getChildSelected } from './util';\nvar Expand = Animate.Expand;\nvar bindCtx = func.bindCtx;\nvar SubMenu = /** @class */ (function (_super) {\n    __extends(SubMenu, _super);\n    function SubMenu(props) {\n        var _this = _super.call(this, props) || this;\n        bindCtx(_this, [\n            'handleMouseEnter',\n            'handleMouseLeave',\n            'handleClick',\n            'handleOpen',\n            'afterLeave',\n        ]);\n        return _this;\n    }\n    SubMenu.prototype.componentDidMount = function () {\n        this.itemNode = findDOMNode(this);\n    };\n    SubMenu.prototype.afterLeave = function () {\n        var _a = this.props, focused = _a.focused, root = _a.root;\n        var focusable = root.props.focusable;\n        if (focusable && focused) {\n            this.itemNode.focus();\n        }\n    };\n    SubMenu.prototype.getOpen = function () {\n        var _a = this.props, _key = _a._key, root = _a.root;\n        var openKeys = root.state.openKeys;\n        return openKeys.indexOf(_key) > -1;\n    };\n    SubMenu.prototype.handleMouseEnter = function (e) {\n        this.handleOpen(true);\n        this.props.onMouseEnter && this.props.onMouseEnter(e);\n    };\n    SubMenu.prototype.handleMouseLeave = function (e) {\n        this.handleOpen(false);\n        this.props.onMouseLeave && this.props.onMouseLeave(e);\n    };\n    SubMenu.prototype.handleClick = function (e) {\n        var _a = this.props, root = _a.root, selectable = _a.selectable;\n        var selectMode = root.props.selectMode;\n        if (selectMode && selectable) {\n            e.stopPropagation();\n        }\n        var open = this.getOpen();\n        this.handleOpen(!open);\n    };\n    SubMenu.prototype.handleOpen = function (open, triggerType, e) {\n        var _a = this.props, _key = _a._key, root = _a.root;\n        root.handleOpen(_key, open, triggerType, e);\n    };\n    SubMenu.prototype.passParentToChildren = function (children) {\n        var _this = this;\n        var _a = this.props, mode = _a.mode, root = _a.root;\n        return Children.map(children, function (child) {\n            // to fix https://github.com/alibaba-fusion/next/issues/952\n            if (typeof child !== 'function' && typeof child !== 'object') {\n                return child;\n            }\n            // @ts-expect-error FIXME: 上面的类型判断不正确，应该使用 React.isValidElement，这里先注释暴露问题\n            return cloneElement(child, {\n                parent: _this,\n                parentMode: mode || root.props.mode,\n            });\n        });\n    };\n    SubMenu.prototype.renderInline = function () {\n        var _a, _b, _c, _d;\n        var _e = this.props, _key = _e._key, level = _e.level, inlineLevel = _e.inlineLevel, root = _e.root, className = _e.className, selectableFromProps = _e.selectable, label = _e.label, children = _e.children, noIcon = _e.noIcon, subMenuContentClassName = _e.subMenuContentClassName, propsTriggerType = _e.triggerType, parentMode = _e.parentMode;\n        var _f = root.props, prefix = _f.prefix, selectMode = _f.selectMode, rootTriggerType = _f.triggerType, inlineArrowDirection = _f.inlineArrowDirection, expandAnimation = _f.expandAnimation, rtl = _f.rtl;\n        var triggerType = propsTriggerType || rootTriggerType;\n        var open = this.getOpen();\n        var _g = root.state, selectedKeys = _g.selectedKeys, _k2n = _g._k2n;\n        var isChildSelected = getChildSelected({\n            _key: _key,\n            _k2n: _k2n,\n            selectMode: selectMode,\n            selectedKeys: selectedKeys,\n        });\n        var others = obj.pickOthers(SubMenu.propTypes, this.props);\n        var liProps = {\n            className: cx((_a = {},\n                _a[\"\".concat(prefix, \"menu-sub-menu-wrapper\")] = true,\n                _a), className),\n        };\n        var itemProps = {\n            'aria-expanded': open,\n            _key: _key,\n            level: level,\n            role: 'listitem',\n            inlineLevel: inlineLevel,\n            root: root,\n            type: 'submenu',\n            component: 'div',\n            parentMode: parentMode,\n            className: cx((_b = {},\n                _b[\"\".concat(prefix, \"opened\")] = open,\n                _b[\"\".concat(prefix, \"child-selected\")] = isChildSelected,\n                _b)),\n        };\n        if (typeof label === 'string') {\n            itemProps.title = label;\n        }\n        var arrorProps = {\n            type: inlineArrowDirection === 'right' ? 'arrow-right' : 'arrow-down',\n            className: cx((_c = {},\n                _c[\"\".concat(prefix, \"menu-icon-arrow\")] = true,\n                _c[\"\".concat(prefix, \"menu-icon-arrow-down\")] = inlineArrowDirection === 'down',\n                _c[\"\".concat(prefix, \"menu-icon-arrow-right\")] = inlineArrowDirection === 'right',\n                _c[\"\".concat(prefix, \"open\")] = open,\n                _c)),\n        };\n        var selectable = !!selectMode && selectableFromProps;\n        var NewItem = (selectable ? SelectabelItem : Item);\n        if (triggerType === 'hover') {\n            liProps.onMouseEnter = this.handleMouseEnter;\n            liProps.onMouseLeave = this.handleMouseLeave;\n        }\n        else if (selectable) {\n            arrorProps.onClick = this.handleClick;\n        }\n        else {\n            itemProps.onClick = this.handleClick;\n        }\n        var newSubMenuContentClassName = cx((_d = {},\n            _d[\"\".concat(prefix, \"menu-sub-menu\")] = true,\n            _d), subMenuContentClassName);\n        var roleMenu = 'menu', roleItem = 'menuitem';\n        if ('selectMode' in root.props) {\n            roleMenu = 'listbox';\n            roleItem = 'option';\n        }\n        var subMenu = open ? (React.createElement(\"ul\", { role: roleMenu, dir: rtl ? 'rtl' : undefined, className: newSubMenuContentClassName }, this.passParentToChildren(children))) : null;\n        return (\n        // @ts-expect-error others.onSelect 签名不匹配\n        React.createElement(\"li\", __assign({ role: roleItem }, others, liProps),\n            React.createElement(NewItem, __assign({}, itemProps),\n                React.createElement(\"span\", { className: \"\".concat(prefix, \"menu-item-text\") }, label),\n                noIcon ? null : React.createElement(Icon, __assign({}, arrorProps))),\n            expandAnimation ? (React.createElement(Expand, { animationAppear: false, afterLeave: this.afterLeave }, subMenu)) : (subMenu)));\n    };\n    SubMenu.prototype.renderPopup = function () {\n        var _a;\n        var _b = this\n            .props, children = _b.children, subMenuContentClassName = _b.subMenuContentClassName, noIcon = _b.noIcon, others = __rest(_b, [\"children\", \"subMenuContentClassName\", \"noIcon\"]);\n        var root = this.props.root;\n        var _c = root.props, prefix = _c.prefix, popupClassName = _c.popupClassName, popupStyle = _c.popupStyle, rtl = _c.rtl;\n        var newClassName = cx((_a = {},\n            _a[\"\".concat(prefix, \"menu\")] = true,\n            _a[\"\".concat(prefix, \"ver\")] = true,\n            _a), popupClassName, subMenuContentClassName);\n        // @ts-expect-error FIXME: PopupItem 并没有使用 rtl 参数，这里可以移除\n        others.rtl = rtl;\n        return (React.createElement(PopupItem, __assign({}, others, { noIcon: noIcon, hasSubMenu: true }),\n            React.createElement(\"ul\", { role: \"menu\", dir: rtl ? 'rtl' : undefined, className: newClassName, style: popupStyle }, this.passParentToChildren(children))));\n    };\n    SubMenu.prototype.render = function () {\n        var _a = this.props, mode = _a.mode, root = _a.root;\n        var newMode = mode || root.props.mode;\n        return newMode === 'popup' ? this.renderPopup() : this.renderInline();\n    };\n    SubMenu.menuChildType = 'submenu';\n    SubMenu.propTypes = {\n        _key: PropTypes.string,\n        root: PropTypes.object,\n        level: PropTypes.number,\n        inlineLevel: PropTypes.number,\n        groupIndent: PropTypes.number,\n        label: PropTypes.node,\n        selectable: PropTypes.bool,\n        mode: PropTypes.oneOf(['inline', 'popup']),\n        noIcon: PropTypes.bool,\n        children: PropTypes.node,\n        onMouseEnter: PropTypes.func,\n        onMouseLeave: PropTypes.func,\n        subMenuContentClassName: PropTypes.string,\n        triggerType: PropTypes.oneOf(['click', 'hover']),\n        align: PropTypes.oneOf(['outside', 'follow']),\n        parentMode: PropTypes.oneOf(['inline', 'popup']),\n        parent: PropTypes.any,\n    };\n    SubMenu.defaultProps = {\n        groupIndent: 0,\n        noIcon: false,\n        selectable: false,\n    };\n    return SubMenu;\n}(Component));\nexport default SubMenu;\n","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport React, { Component, Children, cloneElement, } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport SubMenu from './sub-menu';\nimport ConfigProvider from '../../config-provider';\nimport { func, obj, dom, events, KEYCODE } from '../../util';\nimport { getWidth, normalizeToArray, isSibling, isAncestor, isAvailablePos, getFirstAvaliablelChildKey, } from './util';\nvar bindCtx = func.bindCtx;\nvar pickOthers = obj.pickOthers, isNil = obj.isNil;\nvar noop = function () { };\nvar MENUITEM_OVERFLOWED_CLASSNAME = 'menuitem-overflowed';\nvar getIndicatorsItem = function (items, isPlaceholder, prefix, renderMore) {\n    var _a;\n    if (prefix === void 0) { prefix = ''; }\n    var moreCls = cx((_a = {},\n        _a[\"\".concat(prefix, \"menu-more\")] = true,\n        _a));\n    var style = {};\n    // keep placehold to get width\n    if (isPlaceholder) {\n        style.visibility = 'hidden';\n        style.display = 'inline-block';\n        // indicators which not in use, just display: none\n    }\n    else if (items && items.length === 0) {\n        style.display = 'none';\n        style.visibility = 'unset';\n    }\n    if (renderMore && typeof renderMore === 'function') {\n        var moreNode = renderMore(items);\n        var renderMoreCls = cx(moreCls, moreNode.props && moreNode.props.className);\n        return React.isValidElement(moreNode)\n            ? React.cloneElement(moreNode, {\n                style: style,\n                className: renderMoreCls,\n            })\n            : moreNode;\n    }\n    return (React.createElement(SubMenu, { label: \"\\u00B7\\u00B7\\u00B7\", noIcon: true, className: moreCls, style: style }, items));\n};\nvar addIndicators = function (_a) {\n    var children = _a.children, lastVisibleIndex = _a.lastVisibleIndex, prefix = _a.prefix, renderMore = _a.renderMore;\n    var arr = [];\n    React.Children.forEach(children, function (child, index) {\n        if (!child) {\n            return;\n        }\n        var overflowedItems = [];\n        // lastVisibleIndex 为 undefined 时，下面两个 if 条件始终为 false, 所以这里直接先行判断一下，避免类型错误\n        if (typeof lastVisibleIndex !== 'undefined') {\n            if (index > lastVisibleIndex) {\n                // @ts-expect-error FIXME: child 可能不是 ReactElement, cloneElement 会报错\n                child = React.cloneElement(child, {\n                    // 别折叠不显示的 item，不占用真实的用户传入的 key\n                    key: \"more-\".concat(index),\n                    style: { display: 'none' },\n                    className: \"\".concat(\n                    // @ts-expect-error FIXME: should be `child.props.className`\n                    (child && child.className) || '', \" \").concat(MENUITEM_OVERFLOWED_CLASSNAME),\n                });\n            }\n            if (index === lastVisibleIndex + 1) {\n                overflowedItems = children\n                    .slice(lastVisibleIndex + 1)\n                    .map(function (c, i) {\n                    return React.cloneElement(c, {\n                        key: c.key || \"more-\".concat(index, \"-\").concat(i),\n                    });\n                });\n                arr.push(getIndicatorsItem(overflowedItems, false, prefix, renderMore));\n            }\n        }\n        arr.push(child);\n    });\n    arr.push(getIndicatorsItem([], true, prefix, renderMore));\n    return arr;\n};\nvar getNewChildren = function (_a) {\n    var children = _a.children, root = _a.root, mode = _a.mode, lastVisibleIndex = _a.lastVisibleIndex, hozInLine = _a.hozInLine, prefix = _a.prefix, renderMore = _a.renderMore;\n    var k2n = {};\n    var p2n = {};\n    var arr = hozInLine\n        ? addIndicators({\n            children: children,\n            lastVisibleIndex: lastVisibleIndex,\n            prefix: prefix,\n            renderMore: renderMore,\n        })\n        : children;\n    var loop = function (children, posPrefix, indexWrapper, inlineLevel) {\n        if (indexWrapper === void 0) { indexWrapper = { index: 0 }; }\n        if (inlineLevel === void 0) { inlineLevel = 1; }\n        var keyArray = [];\n        return Children.map(children, function (child) {\n            if (child &&\n                (typeof child.type === 'function' ||\n                    // `React.forwardRef(render)` returns a forwarding\n                    // object that includes `render` method, and the specific\n                    // `child.type` will be an object instead of a class or\n                    // function.\n                    typeof child.type === 'object') &&\n                'menuChildType' in child.type) {\n                var newChild = void 0;\n                var pos = void 0;\n                var props = { root: root };\n                if (['item', 'submenu', 'group'].indexOf(child.type.menuChildType) > -1) {\n                    pos = \"\".concat(posPrefix, \"-\").concat(indexWrapper.index++);\n                    var key = typeof child.key === 'string' ? child.key : pos;\n                    // filter out duplicate keys\n                    if (keyArray.indexOf(key) > -1) {\n                        return;\n                    }\n                    keyArray.push(key);\n                    var level = pos.split('-').length - 1;\n                    k2n[key] = p2n[pos] = {\n                        key: key,\n                        pos: pos,\n                        mode: child.props.mode,\n                        type: child.type.menuChildType,\n                        disabled: child.props.disabled,\n                        label: child.props.label || child.props.children,\n                    };\n                    props.level = level;\n                    props.inlineLevel = inlineLevel;\n                    props._key = key;\n                    props.groupIndent = child.type.menuChildType === 'group' ? 1 : 0;\n                }\n                // paddingLeft(or paddingRight in rtl) only make sense in inline mode\n                // parent know children's inlineLevel\n                // if parent's mode is popup, then children's inlineLevel must be 1;\n                // else inlineLevel should add 1\n                var childLevel = (child.props.mode || mode) === 'popup' ? 1 : inlineLevel + 1;\n                switch (child.type.menuChildType) {\n                    case 'submenu':\n                        newChild = cloneElement(child, props, loop(child.props.children, pos, undefined, childLevel));\n                        break;\n                    case 'group':\n                        newChild = cloneElement(child, props, loop(child.props.children, posPrefix, indexWrapper, props.level));\n                        break;\n                    case 'item':\n                    case 'divider':\n                        newChild = cloneElement(child, props);\n                        break;\n                    default:\n                        newChild = child;\n                        break;\n                }\n                return newChild;\n            }\n            return child;\n        });\n    };\n    var newChildren = loop(arr, '0');\n    return {\n        newChildren: newChildren,\n        _k2n: k2n,\n        _p2n: p2n,\n    };\n};\nvar Menu = /** @class */ (function (_super) {\n    __extends(Menu, _super);\n    function Menu(props) {\n        var _this = _super.call(this, props) || this;\n        _this.getUpdateChildren = function () {\n            var _a = _this.state, root = _a.root, lastVisibleIndex = _a.lastVisibleIndex;\n            return getNewChildren(__assign({ root: root, lastVisibleIndex: lastVisibleIndex }, _this.props));\n        };\n        _this.menuContentRef = function (ref) {\n            _this.menuContent = ref;\n        };\n        _this.menuHeaderRef = function (ref) {\n            _this.menuHeader = ref;\n        };\n        _this.menuFooterRef = function (ref) {\n            _this.menuFooter = ref;\n        };\n        var _a = _this.props, selectedKeys = _a.selectedKeys, defaultSelectedKeys = _a.defaultSelectedKeys, focusedKey = _a.focusedKey, focusable = _a.focusable, autoFocus = _a.autoFocus;\n        var _b = getNewChildren(__assign({ root: _this }, _this.props)), newChildren = _b.newChildren, _k2n = _b._k2n, _p2n = _b._p2n;\n        var tabbableKey = focusable ? getFirstAvaliablelChildKey('0', _p2n) : undefined;\n        _this.state = {\n            root: _this,\n            lastVisibleIndex: undefined,\n            newChildren: newChildren,\n            _k2n: _k2n,\n            _p2n: _p2n,\n            tabbableKey: tabbableKey,\n            openKeys: _this.getInitOpenKeys(props, _k2n),\n            selectedKeys: normalizeToArray(selectedKeys || defaultSelectedKeys),\n            focusedKey: !isNil(_this.props.focusedKey)\n                ? focusedKey\n                : focusable && autoFocus\n                    ? tabbableKey\n                    : null,\n        };\n        bindCtx(_this, [\n            'handleOpen',\n            'handleSelect',\n            'handleItemClick',\n            'handleItemKeyDown',\n            'onBlur',\n            'adjustChildrenWidth',\n        ]);\n        _this.popupNodes = [];\n        return _this;\n    }\n    Menu.getDerivedStateFromProps = function (nextProps, prevState) {\n        var state = {};\n        if ('openKeys' in nextProps) {\n            state.openKeys = normalizeToArray(nextProps.openKeys);\n            // 从展开状态变为收起状态，才需要清空openKeys\n        }\n        else if ('mode' in nextProps &&\n            nextProps.mode === 'popup' &&\n            prevState.lastMode === 'inline') {\n            state.openKeys = [];\n        }\n        if ('selectedKeys' in nextProps) {\n            state.selectedKeys = normalizeToArray(nextProps.selectedKeys);\n        }\n        if ('focusedKey' in nextProps) {\n            state.focusedKey = nextProps.focusedKey;\n        }\n        state.lastMode = nextProps.mode;\n        var _a = getNewChildren(__assign({ root: prevState.root, lastVisibleIndex: prevState.lastVisibleIndex }, nextProps)), newChildren = _a.newChildren, _k2n = _a._k2n, _p2n = _a._p2n;\n        state.newChildren = newChildren;\n        state._k2n = _k2n;\n        state._p2n = _p2n;\n        if (nextProps.focusable) {\n            // @ts-expect-error undefined in object throw types error but ok at runtime\n            if (prevState.tabbableKey in _k2n) {\n                if (prevState.focusedKey) {\n                    state.tabbableKey = prevState.focusedKey;\n                }\n            }\n            else {\n                state.tabbableKey = getFirstAvaliablelChildKey('0', _p2n);\n            }\n        }\n        return state;\n    };\n    Menu.prototype.componentDidMount = function () {\n        this.menuNode = findDOMNode(this);\n        this.adjustChildrenWidth();\n        if (this.props.hozInLine) {\n            events.on(window, 'resize', this.adjustChildrenWidth);\n        }\n    };\n    Menu.prototype.componentDidUpdate = function (prevProps, prevState) {\n        if (prevState.lastVisibleIndex !== this.state.lastVisibleIndex ||\n            React.Children.toArray(this.props.children).length !==\n                React.Children.toArray(prevProps.children).length) {\n            this.adjustChildrenWidth();\n        }\n    };\n    Menu.prototype.componentWillUnmount = function () {\n        events.off(window, 'resize', this.adjustChildrenWidth);\n    };\n    Menu.prototype.adjustChildrenWidth = function () {\n        var _a = this.props, direction = _a.direction, prefix = _a.prefix, header = _a.header, footer = _a.footer, hozInLine = _a.hozInLine;\n        if (direction !== 'hoz' || !hozInLine) {\n            return;\n        }\n        if (!this.menuNode && !this.menuContent) {\n            return;\n        }\n        var children = [], spaceWidth;\n        if (header || footer) {\n            children = this.menuContent.children;\n            spaceWidth =\n                getWidth(this.menuNode) - getWidth(this.menuHeader) - getWidth(this.menuFooter);\n        }\n        else {\n            children = this.menuNode.children;\n            spaceWidth = getWidth(this.menuNode);\n        }\n        if (children.length < 2) {\n            return;\n        }\n        var currentSumWidth = 0, lastVisibleIndex = -1;\n        var moreNode;\n        var menuItemNodes = [].slice.call(children).filter(function (node) {\n            if (node.className.split(' ').indexOf(\"\".concat(prefix, \"menu-more\")) < 0) {\n                return true;\n            }\n            else {\n                moreNode = node;\n            }\n            return false;\n        });\n        var overflowedItems = menuItemNodes.filter(function (c) { return c.className.split(' ').indexOf(MENUITEM_OVERFLOWED_CLASSNAME) >= 0; });\n        overflowedItems.forEach(function (c) {\n            dom.setStyle(c, 'display', 'inline-block');\n        });\n        dom.setStyle(moreNode, 'display', 'inline-block');\n        var moreWidth = getWidth(moreNode);\n        this.menuItemSizes = menuItemNodes.map(function (c) { return getWidth(c); });\n        var totalLen = this.menuItemSizes.length;\n        overflowedItems.forEach(function (c) {\n            dom.setStyle(c, 'display', 'none');\n        });\n        this.menuItemSizes.forEach(function (liWidth, i) {\n            currentSumWidth += liWidth;\n            if ((i >= totalLen - 1 && currentSumWidth <= spaceWidth) ||\n                currentSumWidth + moreWidth <= spaceWidth) {\n                lastVisibleIndex++;\n            }\n        });\n        if (lastVisibleIndex >= totalLen - 1) {\n            dom.setStyle(moreNode, 'display', 'none');\n        }\n        this.setState(__assign({ lastVisibleIndex: lastVisibleIndex }, this.getUpdateChildren()));\n    };\n    Menu.prototype.onBlur = function (e) {\n        this.setState({\n            focusedKey: undefined,\n        });\n        this.props.onBlur && this.props.onBlur(e);\n    };\n    Menu.prototype.getInitOpenKeys = function (props, _k2n) {\n        var initOpenKeys;\n        var openKeys = props.openKeys, defaultOpenKeys = props.defaultOpenKeys, defaultOpenAll = props.defaultOpenAll, mode = props.mode, openMode = props.openMode;\n        if (openKeys) {\n            initOpenKeys = openKeys;\n        }\n        else if (defaultOpenAll && mode === 'inline' && openMode === 'multiple') {\n            initOpenKeys = Object.keys(_k2n).filter(function (key) {\n                return _k2n[key].type === 'submenu';\n            });\n        }\n        else {\n            initOpenKeys = defaultOpenKeys;\n        }\n        return normalizeToArray(initOpenKeys);\n    };\n    Menu.prototype.handleOpen = function (key, open, triggerType, e) {\n        var newOpenKeys;\n        var _a = this.props, mode = _a.mode, openMode = _a.openMode;\n        var _b = this.state, openKeys = _b.openKeys, _k2n = _b._k2n;\n        var index = openKeys.indexOf(key);\n        if (open && index === -1) {\n            if (mode === 'inline') {\n                if (openMode === 'single') {\n                    newOpenKeys = openKeys.filter(function (k) { return _k2n[k] && !isSibling(_k2n[key].pos, _k2n[k].pos); });\n                    newOpenKeys.push(key);\n                }\n                else {\n                    newOpenKeys = openKeys.concat(key);\n                }\n            }\n            else {\n                newOpenKeys = openKeys.filter(function (k) {\n                    return _k2n[k] && isAncestor(_k2n[key].pos, _k2n[k].pos);\n                });\n                newOpenKeys.push(key);\n            }\n        }\n        else if (!open && index > -1) {\n            if (mode === 'inline') {\n                newOpenKeys = __spreadArray(__spreadArray([], __read(openKeys.slice(0, index)), false), __read(openKeys.slice(index + 1)), false);\n            }\n            else if (triggerType === 'docClick') {\n                if (!this.popupNodes\n                    .concat(this.menuNode)\n                    .some(function (node) { return node.contains(e.target); })) {\n                    newOpenKeys = [];\n                }\n            }\n            else {\n                newOpenKeys = openKeys.filter(function (k) {\n                    return k !== key && _k2n[k] && !isAncestor(_k2n[k].pos, _k2n[key].pos);\n                });\n            }\n        }\n        if (newOpenKeys) {\n            if (isNil(this.props.openKeys)) {\n                this.setState(__assign({ openKeys: newOpenKeys }, this.getUpdateChildren()));\n            }\n            this.props.onOpen(newOpenKeys, {\n                key: key,\n                open: open,\n            });\n        }\n    };\n    Menu.prototype.getPath = function (key, _k2n, _p2n) {\n        var keyPath = [];\n        var labelPath = [];\n        var pos = _k2n[key].pos;\n        var nums = pos.split('-');\n        for (var i = 1; i < nums.length - 1; i++) {\n            var parentNums = nums.slice(0, i + 1);\n            var parentPos = parentNums.join('-');\n            var parent_1 = _p2n[parentPos];\n            keyPath.push(parent_1.key);\n            labelPath.push(parent_1.label);\n        }\n        return {\n            keyPath: keyPath,\n            labelPath: labelPath,\n        };\n    };\n    Menu.prototype.handleSelect = function (key, select, menuItem) {\n        var _a = this.state, _k2n = _a._k2n, _p2n = _a._p2n;\n        var pos = _k2n[key].pos;\n        var level = pos.split('-').length - 1;\n        if (this.props.shallowSelect && level > 1) {\n            return;\n        }\n        var newSelectedKeys;\n        var selectMode = this.props.selectMode;\n        var selectedKeys = this.state.selectedKeys;\n        var index = selectedKeys.indexOf(key);\n        if (select && index === -1) {\n            if (selectMode === 'single') {\n                newSelectedKeys = [key];\n            }\n            else if (selectMode === 'multiple') {\n                newSelectedKeys = selectedKeys.concat(key);\n            }\n        }\n        else if (!select && index > -1 && selectMode === 'multiple') {\n            newSelectedKeys = __spreadArray(__spreadArray([], __read(selectedKeys.slice(0, index)), false), __read(selectedKeys.slice(index + 1)), false);\n        }\n        if (newSelectedKeys) {\n            if (isNil(this.props.selectedKeys)) {\n                this.setState({\n                    selectedKeys: newSelectedKeys,\n                });\n            }\n            this.props.onSelect(newSelectedKeys, menuItem, __assign({ key: key, select: select, label: _k2n[key].label }, this.getPath(key, _k2n, _p2n)));\n        }\n    };\n    Menu.prototype.handleItemClick = function (key, item, e) {\n        var _k2n = this.state._k2n;\n        if (this.props.focusable) {\n            if (isNil(this.props.focusedKey)) {\n                this.setState({\n                    focusedKey: key,\n                });\n            }\n            this.props.onItemFocus(key, item, e);\n        }\n        if (item.props.type === 'item') {\n            if (item.props.parentMode === 'popup' && this.state.openKeys.length) {\n                if (isNil(this.props.openKeys)) {\n                    this.setState({\n                        openKeys: [],\n                    });\n                }\n                this.props.onOpen([], {\n                    key: this.state.openKeys.sort(function (prevKey, nextKey) {\n                        return _k2n[nextKey].pos.split('-').length -\n                            _k2n[prevKey].pos.split('-').length;\n                    })[0],\n                    open: false,\n                });\n            }\n            this.props.onItemClick(key, item, e);\n        }\n    };\n    Menu.prototype.getAvailableKey = function (pos, prev) {\n        var _p2n = this.state._p2n;\n        var ps = Object.keys(_p2n).filter(function (p) { return isAvailablePos(pos, p, _p2n); });\n        if (ps.length > 1) {\n            var index = ps.indexOf(pos);\n            var targetIndex = void 0;\n            if (prev) {\n                targetIndex = index === 0 ? ps.length - 1 : index - 1;\n            }\n            else {\n                targetIndex = index === ps.length - 1 ? 0 : index + 1;\n            }\n            return _p2n[ps[targetIndex]].key;\n        }\n        return null;\n    };\n    Menu.prototype.getParentKey = function (pos) {\n        return this.state._p2n[pos.slice(0, pos.length - 2)].key;\n    };\n    Menu.prototype.handleItemKeyDown = function (key, type, item, e) {\n        if ([\n            KEYCODE.UP,\n            KEYCODE.DOWN,\n            KEYCODE.RIGHT,\n            KEYCODE.LEFT,\n            KEYCODE.ENTER,\n            KEYCODE.ESC,\n            KEYCODE.SPACE,\n        ].indexOf(e.keyCode) > -1) {\n            e.preventDefault();\n            e.stopPropagation();\n        }\n        var focusedKey = this.state.focusedKey;\n        var _a = this.state, _p2n = _a._p2n, _k2n = _a._k2n;\n        var direction = this.props.direction;\n        var pos = _k2n[key].pos;\n        var level = pos.split('-').length - 1;\n        switch (e.keyCode) {\n            case KEYCODE.UP: {\n                var avaliableKey = this.getAvailableKey(pos, true);\n                if (avaliableKey) {\n                    focusedKey = avaliableKey;\n                }\n                break;\n            }\n            case KEYCODE.DOWN: {\n                var avaliableKey = void 0;\n                if (direction === 'hoz' && level === 1 && type === 'submenu') {\n                    this.handleOpen(key, true);\n                    avaliableKey = getFirstAvaliablelChildKey(pos, _p2n);\n                }\n                else {\n                    avaliableKey = this.getAvailableKey(pos, false);\n                }\n                if (avaliableKey) {\n                    focusedKey = avaliableKey;\n                }\n                break;\n            }\n            case KEYCODE.RIGHT: {\n                var avaliableKey = void 0;\n                if (direction === 'hoz' && level === 1) {\n                    avaliableKey = this.getAvailableKey(pos, false);\n                }\n                else if (type === 'submenu') {\n                    this.handleOpen(key, true);\n                    avaliableKey = getFirstAvaliablelChildKey(pos, _p2n);\n                }\n                if (avaliableKey) {\n                    focusedKey = avaliableKey;\n                }\n                break;\n            }\n            case KEYCODE.ENTER: {\n                if (type === 'submenu') {\n                    this.handleOpen(key, true);\n                    var avaliableKey = getFirstAvaliablelChildKey(pos, _p2n);\n                    if (avaliableKey) {\n                        focusedKey = avaliableKey;\n                    }\n                }\n                break;\n            }\n            case KEYCODE.LEFT: {\n                if (direction === 'hoz' && level === 1) {\n                    var avaliableKey = this.getAvailableKey(pos, true);\n                    if (avaliableKey) {\n                        focusedKey = avaliableKey;\n                    }\n                }\n                else if (level > 1) {\n                    var parentKey = this.getParentKey(pos);\n                    this.handleOpen(parentKey, false);\n                    focusedKey = parentKey;\n                }\n                break;\n            }\n            case KEYCODE.ESC:\n                if (level > 1) {\n                    var parentKey = this.getParentKey(pos);\n                    this.handleOpen(parentKey, false);\n                    focusedKey = parentKey;\n                }\n                break;\n            case KEYCODE.TAB:\n                focusedKey = null;\n                break;\n            default:\n                break;\n        }\n        if (focusedKey !== this.state.focusedKey) {\n            if (isNil(this.props.focusedKey)) {\n                this.setState({\n                    focusedKey: focusedKey,\n                });\n            }\n            this.props.onItemKeyDown(focusedKey, item, e);\n            // @ts-expect-error FIXME: onItemFocus 在组件里有两种不同的调用方式，这里先标记，后面修复\n            this.props.onItemFocus(focusedKey, e);\n        }\n    };\n    Menu.prototype.render = function () {\n        var _a;\n        var _b = this.props, prefix = _b.prefix, className = _b.className, direction = _b.direction, hozAlign = _b.hozAlign, header = _b.header, footer = _b.footer, footerWrapperClassName = _b.footerWrapperClassName, embeddable = _b.embeddable, selectMode = _b.selectMode, hozInLine = _b.hozInLine, rtl = _b.rtl, flatenContent = _b.flatenContent;\n        var newChildren = this.state.newChildren;\n        var others = pickOthers(Menu.propTypes, this.props);\n        var newClassName = cx((_a = {},\n            _a[\"\".concat(prefix, \"menu\")] = true,\n            _a[\"\".concat(prefix, \"ver\")] = direction === 'ver',\n            _a[\"\".concat(prefix, \"hoz\")] = direction === 'hoz',\n            _a[\"\".concat(prefix, \"menu-embeddable\")] = embeddable,\n            _a[\"\".concat(prefix, \"menu-nowrap\")] = hozInLine,\n            _a[\"\".concat(prefix, \"menu-selectable-\").concat(selectMode)] = selectMode,\n            _a), className);\n        var role = direction === 'hoz' ? 'menubar' : 'menu';\n        var ariaMultiselectable;\n        if ('selectMode' in this.props) {\n            role = 'listbox';\n            ariaMultiselectable = !!(selectMode === 'multiple');\n        }\n        var headerElement = header ? (React.createElement(\"li\", { className: \"\".concat(prefix, \"menu-header\"), ref: this.menuHeaderRef }, header)) : null;\n        var itemsElement = !flatenContent && (header || footer) ? (React.createElement(\"ul\", { className: \"\".concat(prefix, \"menu-content\"), ref: this.menuContentRef }, newChildren)) : (newChildren);\n        var footerElement = footer ? (React.createElement(\"li\", { className: cx(\"\".concat(prefix, \"menu-footer\"), footerWrapperClassName), ref: this.menuFooterRef }, footer)) : null;\n        var shouldWrapItemsAndFooter = hozAlign === 'right' && !!header;\n        if (rtl) {\n            others.dir = 'rtl';\n        }\n        return (React.createElement(\"ul\", __assign({ role: role, onBlur: this.onBlur, className: newClassName, \n            // @ts-expect-error FIXME: handleEnter 未定义，可移除\n            onKeyDown: this.handleEnter, \"aria-multiselectable\": ariaMultiselectable }, others),\n            headerElement,\n            shouldWrapItemsAndFooter ? (React.createElement(\"div\", { className: \"\".concat(prefix, \"menu-hoz-right\") },\n                itemsElement,\n                footerElement)) : null,\n            !shouldWrapItemsAndFooter ? itemsElement : null,\n            !shouldWrapItemsAndFooter ? footerElement : null));\n    };\n    Menu.isNextMenu = true;\n    Menu.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { prefix: PropTypes.string, pure: PropTypes.bool, rtl: PropTypes.bool, className: PropTypes.string, children: PropTypes.node, onItemClick: PropTypes.func, openKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), defaultOpenKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), defaultOpenAll: PropTypes.bool, onOpen: PropTypes.func, mode: PropTypes.oneOf(['inline', 'popup']), triggerType: PropTypes.oneOf(['click', 'hover']), openMode: PropTypes.oneOf(['single', 'multiple']), inlineIndent: PropTypes.number, inlineArrowDirection: PropTypes.oneOf(['down', 'right']), popupAutoWidth: PropTypes.bool, popupAlign: PropTypes.oneOf(['follow', 'outside']), popupProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]), popupClassName: PropTypes.string, popupStyle: PropTypes.object, selectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), defaultSelectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), onSelect: PropTypes.func, selectMode: PropTypes.oneOf(['single', 'multiple']), shallowSelect: PropTypes.bool, hasSelectedIcon: PropTypes.bool, labelToggleChecked: PropTypes.bool, isSelectIconRight: PropTypes.bool, direction: PropTypes.oneOf(['ver', 'hoz']), hozAlign: PropTypes.oneOf(['left', 'right']), hozInLine: PropTypes.bool, renderMore: PropTypes.func, header: PropTypes.node, footer: PropTypes.node, footerWrapperClassName: PropTypes.string, autoFocus: PropTypes.bool, focusedKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]), focusable: PropTypes.bool, onItemFocus: PropTypes.func, onBlur: PropTypes.func, embeddable: PropTypes.bool, onItemKeyDown: PropTypes.func, expandAnimation: PropTypes.bool, itemClassName: PropTypes.string, icons: PropTypes.object, flatenContent: PropTypes.bool });\n    Menu.defaultProps = {\n        prefix: 'next-',\n        pure: false,\n        defaultOpenKeys: [],\n        defaultOpenAll: false,\n        onOpen: noop,\n        mode: 'inline',\n        triggerType: 'click',\n        openMode: 'multiple',\n        inlineIndent: 20,\n        inlineArrowDirection: 'down',\n        popupAutoWidth: false,\n        popupAlign: 'follow',\n        popupProps: {},\n        defaultSelectedKeys: [],\n        onSelect: noop,\n        shallowSelect: false,\n        hasSelectedIcon: true,\n        isSelectIconRight: false,\n        labelToggleChecked: true,\n        direction: 'ver',\n        hozAlign: 'left',\n        hozInLine: false,\n        autoFocus: false,\n        focusable: true,\n        embeddable: false,\n        onItemFocus: noop,\n        onItemKeyDown: noop,\n        onItemClick: noop,\n        expandAnimation: true,\n        icons: {},\n    };\n    Menu.displayName = 'Menu';\n    return Menu;\n}(Component));\nexport { Menu };\nexport default polyfill(Menu);\n","import { __extends } from \"tslib\";\nimport React, { Component, } from 'react';\nimport classnames from 'classnames';\nimport { func } from '../util';\nvar makeChain = func.makeChain;\n/**\n * UIState 为一些特殊元素的状态响应提供了标准的方式，\n * 尤其适合 CSS 无法完全定制的控件，比如 checkbox，radio 等。\n * 若组件 disable 则自行判断是否需要绑定状态管理。\n * 注意：disable 不会触发事件，请使用 resetUIState 还原状态\n */\nvar UIState = /** @class */ (function (_super) {\n    __extends(UIState, _super);\n    function UIState(props) {\n        var _this = _super.call(this, props) || this;\n        _this.state = {};\n        ['_onUIFocus', '_onUIBlur'].forEach(function (item) {\n            _this[item] = _this[item].bind(_this);\n        });\n        return _this;\n    }\n    // base 事件绑定的元素\n    UIState.prototype.getStateElement = function (base) {\n        var _a = this.props, onFocus = _a.onFocus, onBlur = _a.onBlur;\n        return React.cloneElement(base, {\n            onFocus: makeChain(this._onUIFocus, onFocus),\n            onBlur: makeChain(this._onUIBlur, onBlur),\n        });\n    };\n    // 获取状态 classname\n    UIState.prototype.getStateClassName = function () {\n        var focused = this.state.focused;\n        return classnames({\n            focused: focused,\n        });\n    };\n    // 复原状态\n    UIState.prototype.resetUIState = function () {\n        this.setState({\n            focused: false,\n        });\n    };\n    UIState.prototype._onUIFocus = function () {\n        this.setState({\n            focused: true,\n        });\n    };\n    UIState.prototype._onUIBlur = function () {\n        this.setState({\n            focused: false,\n        });\n    };\n    return UIState;\n}(Component));\nexport default UIState;\n","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nexport default function withCheckboxContext(Checkbox) {\n    var _a;\n    return _a = /** @class */ (function (_super) {\n            __extends(WrappedComp, _super);\n            function WrappedComp() {\n                return _super !== null && _super.apply(this, arguments) || this;\n            }\n            WrappedComp.prototype.render = function () {\n                return React.createElement(Checkbox, __assign({}, this.props, { context: this.context }));\n            };\n            return WrappedComp;\n        }(React.Component)),\n        _a.displayName = 'Checkbox',\n        _a.contextTypes = {\n            onChange: PropTypes.func,\n            __group__: PropTypes.bool,\n            selectedValue: PropTypes.array,\n            disabled: PropTypes.bool,\n            prefix: PropTypes.string,\n        },\n        _a;\n}\n","import { __assign, __extends, __rest } from \"tslib\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport UIState from '../mixin-ui-state';\nimport ConfigProvider from '../config-provider';\nimport Icon from '../icon';\nimport withCheckboxContext from './with-context';\nimport { obj, func } from '../util';\nvar noop = func.noop;\nfunction isChecked(selectedValue, value) {\n    return selectedValue.indexOf(value) > -1;\n}\n/**\n * Checkbox\n * @order 1\n */\nvar Checkbox = /** @class */ (function (_super) {\n    __extends(Checkbox, _super);\n    function Checkbox(props) {\n        var _this = _super.call(this, props) || this;\n        var context = props.context;\n        var checked, indeterminate;\n        if ('checked' in props) {\n            checked = props.checked;\n        }\n        else {\n            checked = props.defaultChecked;\n        }\n        if ('indeterminate' in props) {\n            indeterminate = props.indeterminate;\n        }\n        else {\n            indeterminate = props.defaultIndeterminate;\n        }\n        if (context.__group__) {\n            checked = isChecked(context.selectedValue, props.value);\n        }\n        _this.state = {\n            checked: checked,\n            indeterminate: indeterminate,\n        };\n        _this.onChange = _this.onChange.bind(_this);\n        return _this;\n    }\n    Checkbox.getDerivedStateFromProps = function (nextProps) {\n        var nextContext = nextProps.context;\n        var state = {};\n        if (nextContext.__group__) {\n            if ('selectedValue' in nextContext) {\n                state.checked = isChecked(nextContext.selectedValue, nextProps.value);\n            }\n        }\n        else if ('checked' in nextProps) {\n            state.checked = nextProps.checked;\n        }\n        if ('indeterminate' in nextProps) {\n            state.indeterminate = nextProps.indeterminate;\n        }\n        return state;\n    };\n    Object.defineProperty(Checkbox.prototype, \"disabled\", {\n        get: function () {\n            var props = this.props;\n            var context = props.context;\n            return props.disabled || ('disabled' in context && context.disabled);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Checkbox.prototype.shouldComponentUpdate = function (nextProps, nextState, nextContext) {\n        var shallowEqual = obj.shallowEqual;\n        return (!shallowEqual(this.props, nextProps) ||\n            !shallowEqual(this.state, nextState) ||\n            !shallowEqual(this.context, nextContext));\n    };\n    Checkbox.prototype.onChange = function (event) {\n        var _a, _b;\n        var _c = this.props, context = _c.context, value = _c.value;\n        var checked = event.target.checked;\n        if (this.disabled) {\n            return;\n        }\n        if (context.__group__) {\n            context.onChange(value, event);\n        }\n        else {\n            if (!('checked' in this.props)) {\n                this.setState({\n                    checked: checked,\n                });\n            }\n            if (!('indeterminate' in this.props)) {\n                this.setState({\n                    indeterminate: false,\n                });\n            }\n            (_b = (_a = this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, checked, event);\n        }\n    };\n    Checkbox.prototype.render = function () {\n        var _a, _b;\n        /* eslint-disable no-unused-vars */\n        var _c = this.props, id = _c.id, className = _c.className, children = _c.children, style = _c.style, label = _c.label, onMouseEnter = _c.onMouseEnter, onMouseLeave = _c.onMouseLeave, rtl = _c.rtl, isPreview = _c.isPreview, renderPreview = _c.renderPreview, context = _c.context, value = _c.value, name = _c.name, otherProps = __rest(_c, [\"id\", \"className\", \"children\", \"style\", \"label\", \"onMouseEnter\", \"onMouseLeave\", \"rtl\", \"isPreview\", \"renderPreview\", \"context\", \"value\", \"name\"]);\n        var checked = !!this.state.checked;\n        var disabled = this.disabled;\n        var indeterminate = !!this.state.indeterminate;\n        var prefix = context.prefix || this.props.prefix;\n        var others = obj.pickOthers(Checkbox.propTypes, otherProps);\n        var othersData = obj.pickAttrsWith(others, 'data-');\n        if (otherProps.title) {\n            othersData.title = otherProps.title;\n        }\n        var childInput = (React.createElement(\"input\", __assign({}, obj.pickOthers(Checkbox.propTypes, otherProps), { id: id, value: value, name: name, disabled: disabled, checked: checked, type: \"checkbox\", onChange: this.onChange, \"aria-checked\": indeterminate ? 'mixed' : checked, className: \"\".concat(prefix, \"checkbox-input\") })));\n        // disable 无状态操作\n        if (!disabled) {\n            childInput = this.getStateElement(childInput);\n        }\n        var cls = classnames(className, (_a = {},\n            _a[\"\".concat(prefix, \"checkbox-wrapper\")] = true,\n            _a.checked = checked,\n            _a.disabled = disabled,\n            _a.indeterminate = indeterminate,\n            _a[this.getStateClassName()] = true,\n            _a));\n        var labelCls = \"\".concat(prefix, \"checkbox-label\");\n        var type = indeterminate ? 'semi-select' : 'select';\n        if (isPreview) {\n            var previewCls = classnames(className, \"\".concat(prefix, \"form-preview\"));\n            if ('renderPreview' in this.props) {\n                return (React.createElement(\"div\", __assign({ id: id, dir: rtl ? 'rtl' : undefined }, othersData, { className: previewCls }), renderPreview === null || renderPreview === void 0 ? void 0 : renderPreview(checked, this.props)));\n            }\n            return (React.createElement(\"p\", __assign({ id: id, dir: rtl ? 'rtl' : undefined }, othersData, { className: previewCls }), checked && (children || label || this.state.value)));\n        }\n        var iconCls = classnames((_b = {\n                zoomIn: indeterminate\n            },\n            _b[\"\".concat(prefix, \"checkbox-semi-select-icon\")] = indeterminate,\n            _b[\"\".concat(prefix, \"checkbox-select-icon\")] = !indeterminate,\n            _b));\n        return (React.createElement(\"label\", __assign({}, othersData, { className: cls, style: style, dir: rtl ? 'rtl' : undefined, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave }),\n            React.createElement(\"span\", { className: \"\".concat(prefix, \"checkbox\") },\n                React.createElement(\"span\", { className: \"\".concat(prefix, \"checkbox-inner\") },\n                    React.createElement(Icon, { type: type, size: \"xs\", className: iconCls })),\n                childInput),\n            [label, children].map(function (item, i) {\n                return item !== undefined && item !== null ? (React.createElement(\"span\", { key: i, className: labelCls }, item)) : null;\n            })));\n    };\n    Checkbox.displayName = 'Checkbox';\n    Checkbox.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { prefix: PropTypes.string, rtl: PropTypes.bool, className: PropTypes.string, id: PropTypes.string, style: PropTypes.object, checked: PropTypes.bool, defaultChecked: PropTypes.bool, disabled: PropTypes.bool, label: PropTypes.node, indeterminate: PropTypes.bool, defaultIndeterminate: PropTypes.bool, onChange: PropTypes.func, onMouseEnter: PropTypes.func, onMouseLeave: PropTypes.func, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]), name: PropTypes.string, isPreview: PropTypes.bool, renderPreview: PropTypes.func });\n    Checkbox.defaultProps = {\n        defaultChecked: false,\n        defaultIndeterminate: false,\n        onChange: noop,\n        onMouseEnter: noop,\n        onMouseLeave: noop,\n        prefix: 'next-',\n        isPreview: false,\n    };\n    return Checkbox;\n}(UIState));\nexport default ConfigProvider.config(withCheckboxContext(polyfill(Checkbox)));\n","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { obj } from '../util';\nimport Checkbox from './checkbox';\nvar pickOthers = obj.pickOthers;\n/** Checkbox.Group */\nvar CheckboxGroup = /** @class */ (function (_super) {\n    __extends(CheckboxGroup, _super);\n    function CheckboxGroup(props) {\n        var _this = _super.call(this, props) || this;\n        var value = [];\n        if ('value' in props) {\n            value = props.value;\n        }\n        else if ('defaultValue' in props) {\n            value = props.defaultValue;\n        }\n        if (!Array.isArray(value)) {\n            if (value === null || value === undefined) {\n                value = [];\n            }\n            else {\n                value = [value];\n            }\n        }\n        _this.state = {\n            value: __spreadArray([], __read(value), false),\n        };\n        _this.onChange = _this.onChange.bind(_this);\n        return _this;\n    }\n    CheckboxGroup.prototype.getChildContext = function () {\n        return {\n            __group__: true,\n            onChange: this.onChange,\n            selectedValue: this.state.value,\n            disabled: this.props.disabled,\n        };\n    };\n    CheckboxGroup.getDerivedStateFromProps = function (nextProps) {\n        if ('value' in nextProps) {\n            var value = nextProps.value;\n            if (!Array.isArray(value)) {\n                if (value === null || value === undefined) {\n                    value = [];\n                }\n                else {\n                    value = [value];\n                }\n            }\n            return { value: value };\n        }\n        return null;\n    };\n    CheckboxGroup.prototype.onChange = function (currentValue, event) {\n        var _a, _b;\n        var value = this.state.value;\n        var index = value.indexOf(currentValue);\n        var valTemp = __spreadArray([], __read(value), false);\n        if (index === -1) {\n            valTemp.push(currentValue);\n        }\n        else {\n            valTemp.splice(index, 1);\n        }\n        if (!('value' in this.props)) {\n            this.setState({ value: valTemp });\n        }\n        (_b = (_a = this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, valTemp, event);\n    };\n    CheckboxGroup.prototype.render = function () {\n        var _a;\n        var _this = this;\n        var _b;\n        var _c = this.props, className = _c.className, style = _c.style, prefix = _c.prefix, disabled = _c.disabled, direction = _c.direction, rtl = _c.rtl, isPreview = _c.isPreview, renderPreview = _c.renderPreview;\n        var others = pickOthers(CheckboxGroup.propTypes, this.props);\n        // 如果内嵌标签跟 dataSource 同时存在，以内嵌标签为主\n        var children;\n        var previewed = [];\n        if (this.props.children) {\n            children = React.Children.map(this.props.children, function (child) {\n                var _a, _b, _c, _d;\n                if (!React.isValidElement(child)) {\n                    return child;\n                }\n                var checked = _this.state.value && _this.state.value.indexOf((_a = child.props) === null || _a === void 0 ? void 0 : _a.value) > -1;\n                if (checked) {\n                    previewed.push({\n                        label: (_b = child.props) === null || _b === void 0 ? void 0 : _b.children,\n                        value: (_c = child.props) === null || _c === void 0 ? void 0 : _c.value,\n                    });\n                }\n                return React.cloneElement(child, ((_d = child.props) === null || _d === void 0 ? void 0 : _d.rtl) === undefined ? { rtl: rtl } : {});\n            });\n        }\n        else {\n            children = (_b = this.props.dataSource) === null || _b === void 0 ? void 0 : _b.map(function (item, index) {\n                var option;\n                if (typeof item !== 'object') {\n                    option = {\n                        label: item,\n                        value: item,\n                        disabled: disabled,\n                    };\n                }\n                else {\n                    option = item;\n                }\n                var checked = _this.state.value && _this.state.value.indexOf(option.value) > -1;\n                if (checked) {\n                    previewed.push({\n                        label: option.label,\n                        value: option.value,\n                    });\n                }\n                return (React.createElement(Checkbox, { key: index, value: option.value, checked: checked, rtl: rtl, disabled: disabled || option.disabled, label: option.label }));\n            });\n        }\n        if (isPreview) {\n            var previewCls = classnames(className, \"\".concat(prefix, \"form-preview\"));\n            if ('renderPreview' in this.props) {\n                return (React.createElement(\"div\", __assign({}, others, { dir: rtl ? 'rtl' : undefined, className: previewCls }), renderPreview === null || renderPreview === void 0 ? void 0 : renderPreview(previewed, this.props)));\n            }\n            return (React.createElement(\"p\", __assign({}, others, { dir: rtl ? 'rtl' : undefined, className: previewCls }), previewed.map(function (item) { return item.label; }).join(', ')));\n        }\n        var cls = classnames(className, (_a = {},\n            _a[\"\".concat(prefix, \"checkbox-group\")] = true,\n            _a[\"\".concat(prefix, \"checkbox-group-\").concat(direction)] = true,\n            _a.disabled = disabled,\n            _a));\n        return (React.createElement(\"span\", __assign({ dir: rtl ? 'rtl' : undefined }, others, { className: cls, style: style }), children));\n    };\n    CheckboxGroup.displayName = 'CheckboxGroup';\n    CheckboxGroup.propTypes = {\n        prefix: PropTypes.string,\n        rtl: PropTypes.bool,\n        className: PropTypes.string,\n        style: PropTypes.object,\n        disabled: PropTypes.bool,\n        dataSource: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.string),\n            PropTypes.arrayOf(PropTypes.object),\n        ]),\n        value: PropTypes.oneOfType([\n            PropTypes.array,\n            PropTypes.string,\n            PropTypes.number,\n            PropTypes.bool,\n        ]),\n        defaultValue: PropTypes.oneOfType([\n            PropTypes.array,\n            PropTypes.string,\n            PropTypes.number,\n            PropTypes.bool,\n        ]),\n        children: PropTypes.arrayOf(PropTypes.element),\n        onChange: PropTypes.func,\n        direction: PropTypes.oneOf(['hoz', 'ver']),\n        isPreview: PropTypes.bool,\n        renderPreview: PropTypes.func,\n    };\n    CheckboxGroup.defaultProps = {\n        dataSource: [],\n        onChange: function () { },\n        prefix: 'next-',\n        direction: 'hoz',\n        isPreview: false,\n    };\n    CheckboxGroup.childContextTypes = {\n        onChange: PropTypes.func,\n        __group__: PropTypes.bool,\n        selectedValue: PropTypes.array,\n        disabled: PropTypes.bool,\n    };\n    return CheckboxGroup;\n}(React.Component));\nexport default polyfill(CheckboxGroup);\n","import { __assign, __rest } from \"tslib\";\nimport Checkbox from './checkbox';\nimport Group from './checkbox-group';\nimport ConfigProvider from '../config-provider';\nimport { assignSubComponent } from '../util/component';\nvar CheckboxWithGroup = assignSubComponent(Checkbox, {\n    Group: ConfigProvider.config(Group, {\n        transform: /* istanbul ignore next */ function (props, deprecated) {\n            if ('itemDirection' in props) {\n                deprecated('itemDirection', 'direction', 'Checkbox');\n                var itemDirection = props.itemDirection, others = __rest(props, [\"itemDirection\"]);\n                props = __assign({ direction: itemDirection }, others);\n            }\n            return props;\n        },\n    }),\n});\nexport default CheckboxWithGroup;\n","import { __assign, __extends } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nexport default function withContext(Radio) {\n    var WrappedComp = /** @class */ (function (_super) {\n        __extends(WrappedComp, _super);\n        function WrappedComp(props) {\n            var _this = _super.call(this, props) || this;\n            _this.radioRef = null;\n            return _this;\n        }\n        WrappedComp.prototype.focus = function () {\n            if (this.radioRef) {\n                this.radioRef.focus();\n            }\n        };\n        WrappedComp.prototype.render = function () {\n            var _this = this;\n            return (React.createElement(Radio, __assign({ ref: function (el) {\n                    _this.radioRef = el;\n                } }, this.props, { context: this.context })));\n        };\n        WrappedComp.displayName = 'Radio';\n        WrappedComp.contextTypes = {\n            onChange: PropTypes.func,\n            __group__: PropTypes.bool,\n            isButton: PropTypes.bool,\n            selectedValue: PropTypes.oneOfType([\n                PropTypes.string,\n                PropTypes.number,\n                PropTypes.bool,\n            ]),\n            disabled: PropTypes.bool,\n        };\n        return WrappedComp;\n    }(React.Component));\n    return WrappedComp;\n}\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport UIState from '../mixin-ui-state';\nimport ConfigProvider from '../config-provider';\nimport withContext from './with-context';\nimport { obj, func } from '../util';\nvar makeChain = func.makeChain, noop = func.noop;\nvar Radio = /** @class */ (function (_super) {\n    __extends(Radio, _super);\n    function Radio(props) {\n        var _this = _super.call(this, props) || this;\n        var context = props.context;\n        var checked;\n        if (context.__group__) {\n            checked = context.selectedValue === props.value;\n        }\n        else if ('checked' in props) {\n            checked = props.checked;\n        }\n        else {\n            checked = props.defaultChecked;\n        }\n        _this.state = { checked: checked };\n        _this.radioRef = null;\n        _this.onChange = _this.onChange.bind(_this);\n        return _this;\n    }\n    Radio.getDerivedStateFromProps = function (nextProps) {\n        var nextContext = nextProps.context;\n        if (nextContext.__group__ && 'selectedValue' in nextContext) {\n            return {\n                checked: nextContext.selectedValue === nextProps.value,\n            };\n        }\n        else if ('checked' in nextProps) {\n            return {\n                checked: nextProps.checked,\n            };\n        }\n        return null;\n    };\n    Object.defineProperty(Radio.prototype, \"disabled\", {\n        get: function () {\n            var props = this.props;\n            var context = props.context;\n            var disabled = props.disabled || (context.__group__ && 'disabled' in context && context.disabled);\n            return disabled;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Radio.prototype.shouldComponentUpdate = function (nextProps, nextState, nextContext) {\n        var shallowEqual = obj.shallowEqual;\n        return (!shallowEqual(this.props, nextProps) ||\n            !shallowEqual(this.state, nextState) ||\n            !shallowEqual(this.context, nextContext));\n    };\n    Radio.prototype.componentDidUpdate = function () {\n        // when disabled, reset UIState\n        if (this.disabled) {\n            // only class has an impact, no effect on visual\n            this.resetUIState();\n        }\n    };\n    Radio.prototype.onChange = function (e) {\n        var checked = e.target.checked;\n        var _a = this.props, context = _a.context, value = _a.value;\n        if (context.__group__) {\n            context.onChange(value, e);\n        }\n        else if (this.state.checked !== checked) {\n            if (!('checked' in this.props)) {\n                this.setState({\n                    checked: checked,\n                });\n            }\n            this.props.onChange(checked, e);\n        }\n    };\n    Radio.prototype.focus = function () {\n        if (this.radioRef) {\n            this.radioRef.focus();\n            this._onUIFocus();\n        }\n    };\n    Radio.prototype.render = function () {\n        var _a, _b, _c;\n        var _this = this;\n        var _d = this.props, id = _d.id, className = _d.className, children = _d.children, style = _d.style, label = _d.label, onMouseEnter = _d.onMouseEnter, onMouseLeave = _d.onMouseLeave, tabIndex = _d.tabIndex, rtl = _d.rtl, name = _d.name, isPreview = _d.isPreview, renderPreview = _d.renderPreview, value = _d.value, context = _d.context, otherProps = __rest(_d, [\"id\", \"className\", \"children\", \"style\", \"label\", \"onMouseEnter\", \"onMouseLeave\", \"tabIndex\", \"rtl\", \"name\", \"isPreview\", \"renderPreview\", \"value\", \"context\"]);\n        var checked = !!this.state.checked;\n        var disabled = this.disabled;\n        var isButton = context.isButton;\n        var prefix = this.props.prefix;\n        var others = obj.pickOthers(Radio.propTypes, otherProps);\n        var othersData = obj.pickAttrsWith(others, 'data-');\n        if (isPreview) {\n            var previewCls = classnames(className, \"\".concat(prefix, \"form-preview\"));\n            if ('renderPreview' in this.props) {\n                return (React.createElement(\"div\", __assign({ id: id, dir: rtl ? 'rtl' : 'ltr' }, others, { className: previewCls }), renderPreview(checked, this.props)));\n            }\n            return (React.createElement(\"p\", __assign({ id: id, dir: rtl ? 'rtl' : 'ltr' }, others, { className: previewCls }), checked && (children || label || value)));\n        }\n        var input = (React.createElement(\"input\", __assign({}, obj.pickOthers(othersData, others), { name: name, id: id, tabIndex: tabIndex, disabled: disabled, checked: checked, type: \"radio\", onChange: this.onChange, \"aria-checked\": checked, className: \"\".concat(prefix, \"radio-input\"), ref: function (e) {\n                _this.radioRef = e;\n            } })));\n        // disabled do not hove focus state\n        if (!disabled) {\n            input = this.getStateElement(input);\n        }\n        var cls = classnames((_a = {},\n            _a[\"\".concat(prefix, \"radio\")] = true,\n            _a.checked = checked,\n            _a.disabled = disabled,\n            _a[this.getStateClassName()] = true,\n            _a));\n        var clsInner = classnames((_b = {},\n            _b[\"\".concat(prefix, \"radio-inner\")] = true,\n            _b.press = checked,\n            _b.unpress = !checked,\n            _b));\n        var clsWrapper = classnames(className, (_c = {},\n            _c[\"\".concat(prefix, \"radio-wrapper\")] = true,\n            _c.checked = checked,\n            _c.disabled = disabled,\n            _c[this.getStateClassName()] = true,\n            _c));\n        var childrenCls = \"\".concat(prefix, \"radio-label\");\n        var radioComp = !isButton ? (React.createElement(\"span\", { className: cls },\n            React.createElement(\"span\", { className: clsInner }),\n            input)) : (React.createElement(\"span\", { className: \"\".concat(prefix, \"radio-single-input\") }, input));\n        return (React.createElement(\"label\", __assign({}, othersData, { dir: rtl ? 'rtl' : 'ltr', style: style, \"aria-checked\": checked, \"aria-disabled\": disabled, className: clsWrapper, onMouseEnter: \n            // @ts-expect-error _onUIMouseEnter is not defined\n            disabled ? onMouseEnter : makeChain(this._onUIMouseEnter, onMouseEnter), onMouseLeave: \n            // @ts-expect-error _onUIMouseLeave is not defined\n            disabled ? onMouseLeave : makeChain(this._onUIMouseLeave, onMouseLeave) }),\n            radioComp,\n            [children, label].map(function (d, i) {\n                return d !== undefined ? (React.createElement(\"span\", { key: i, className: childrenCls }, d)) : null;\n            })));\n    };\n    Radio.displayName = 'Radio';\n    Radio.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { className: PropTypes.string, id: PropTypes.string, style: PropTypes.object, checked: PropTypes.bool, defaultChecked: PropTypes.bool, label: PropTypes.node, onChange: PropTypes.func, onMouseEnter: PropTypes.func, onMouseLeave: PropTypes.func, disabled: PropTypes.bool, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]), name: PropTypes.string, isPreview: PropTypes.bool, renderPreview: PropTypes.func });\n    Radio.defaultProps = {\n        onChange: noop,\n        onMouseLeave: noop,\n        onMouseEnter: noop,\n        tabIndex: 0,\n        prefix: 'next-',\n        isPreview: false,\n    };\n    Radio.contextTypes = {\n        onChange: PropTypes.func,\n        __group__: PropTypes.bool,\n        isButton: PropTypes.bool,\n        selectedValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\n        disabled: PropTypes.bool,\n    };\n    return Radio;\n}(UIState));\nexport default ConfigProvider.config(withContext(polyfill(Radio)));\n","import { __assign, __extends } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport ConfigProvider from '../config-provider';\nimport { obj, func, focus } from '../util';\nimport Radio from './radio';\nvar makeChain = func.makeChain;\nvar focusRef = focus.focusRef;\nvar pickOthers = obj.pickOthers;\nvar RadioGroup = /** @class */ (function (_super) {\n    __extends(RadioGroup, _super);\n    function RadioGroup(props) {\n        var _this = _super.call(this, props) || this;\n        _this.saveRadioRef = function (el, index) {\n            if (el && typeof el.getInstance === 'function') {\n                var radio = el.getInstance();\n                _this.radioRefs[index] = radio;\n            }\n        };\n        var value = '';\n        if ('value' in props) {\n            value = props.value;\n        }\n        else if ('defaultValue' in props) {\n            value = props.defaultValue;\n        }\n        // The reference for the first Radio and for the selected Radio.\n        _this.radioRefs = [];\n        _this.hasFocus = false;\n        _this.state = { value: value };\n        _this.onChange = _this.onChange.bind(_this);\n        return _this;\n    }\n    RadioGroup.getDerivedStateFromProps = function (props, state) {\n        if ('value' in props && props.value !== state.value) {\n            return {\n                value: props.value,\n            };\n        }\n        return null;\n    };\n    RadioGroup.prototype.getChildContext = function () {\n        var disabled = this.props.disabled;\n        return {\n            __group__: true,\n            isButton: this.props.shape === 'button',\n            onChange: this.onChange,\n            selectedValue: this.state.value,\n            disabled: disabled,\n        };\n    };\n    RadioGroup.prototype.onChange = function (currentValue, e) {\n        if (!('value' in this.props)) {\n            this.setState({ value: currentValue });\n        }\n        if (currentValue !== this.state.value) {\n            this.props.onChange(currentValue, e);\n        }\n    };\n    RadioGroup.prototype.focus = function () {\n        if (!this.hasFocus) {\n            var availableRef = this.radioRefs.filter(function (ref) {\n                if (ref) {\n                    return !ref.props.disabled;\n                }\n                return false;\n            });\n            var radioRef = availableRef.find(function (ref) {\n                if (ref) {\n                    return ref.props.checked;\n                }\n                return false;\n            });\n            if (radioRef) {\n                focusRef(radioRef);\n            }\n            else if (availableRef.length > 0) {\n                focusRef(availableRef[0]);\n            }\n        }\n    };\n    RadioGroup.prototype.render = function () {\n        var _a;\n        var _this = this;\n        var _b = this.props, rtl = _b.rtl, className = _b.className, disabled = _b.disabled, shape = _b.shape, size = _b.size, style = _b.style, prefix = _b.prefix, direction = _b.direction, component = _b.component, isPreview = _b.isPreview, renderPreview = _b.renderPreview;\n        var others = pickOthers(RadioGroup.propTypes, this.props);\n        if (rtl) {\n            others.dir = 'rtl';\n        }\n        var children;\n        var previewed = {};\n        this.radioRefs = [];\n        if (this.props.children) {\n            children = React.Children.map(this.props.children, function (child, index) {\n                if (!React.isValidElement(child)) {\n                    return child;\n                }\n                var checked = _this.state.value === child.props.value;\n                if (checked) {\n                    previewed.label = child.props.children;\n                    previewed.value = child.props.value;\n                }\n                var tabIndex = (index === 0 && !_this.state.value) || checked ? 0 : -1;\n                var childrtl = child.props.rtl === undefined ? rtl : child.props.rtl;\n                if (child.type && child.type.displayName === 'Config(Radio)') {\n                    return React.cloneElement(child, {\n                        checked: checked,\n                        tabIndex: tabIndex,\n                        rtl: childrtl,\n                        ref: function (e) {\n                            _this.saveRadioRef(e, index);\n                        },\n                    });\n                }\n                return React.cloneElement(child, {\n                    checked: checked,\n                    rtl: childrtl,\n                    ref: function (e) {\n                        _this.saveRadioRef(e, index);\n                    },\n                });\n            });\n        }\n        else {\n            children = this.props.dataSource.map(function (item, index) {\n                var option;\n                if (typeof item !== 'object') {\n                    option = {\n                        label: item,\n                        value: item,\n                        disabled: disabled,\n                    };\n                }\n                else {\n                    option = item;\n                }\n                var checked = _this.state.value === option.value;\n                if (checked) {\n                    previewed.label = option.label;\n                    previewed.value = option.value;\n                }\n                return (React.createElement(Radio, { key: index, tabIndex: (index === 0 && !_this.state.value) || checked ? 0 : -1, value: option.value, checked: checked, label: option.label, disabled: disabled || option.disabled, ref: function (e) {\n                        _this.saveRadioRef(e, index);\n                    } }));\n            });\n        }\n        if (isPreview) {\n            var previewCls = classnames(className, \"\".concat(prefix, \"form-preview\"));\n            if ('renderPreview' in this.props) {\n                return (React.createElement(\"div\", __assign({}, others, { className: previewCls }), renderPreview(previewed, this.props)));\n            }\n            return (React.createElement(\"p\", __assign({}, others, { className: previewCls }), previewed.label));\n        }\n        var isButtonShape = shape === 'button';\n        var cls = classnames(className, (_a = {},\n            _a[\"\".concat(prefix, \"radio-group\")] = true,\n            _a[\"\".concat(prefix, \"radio-group-\").concat(direction)] = !isButtonShape,\n            _a[\"\".concat(prefix, \"radio-button\")] = isButtonShape,\n            _a[\"\".concat(prefix, \"radio-button-\").concat(size)] = isButtonShape,\n            _a.disabled = disabled,\n            _a));\n        var TagName = component;\n        return (React.createElement(TagName, __assign({}, others, { \"aria-disabled\": disabled, role: \"radiogroup\", className: cls, style: style, onFocus: makeChain(function () {\n                this.hasFocus = true;\n            }.bind(this), this.props.onFocus), onBlur: makeChain(function () {\n                this.hasFocus = false;\n            }.bind(this), this.props.onBlur) }), children));\n    };\n    RadioGroup.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { prefix: PropTypes.string, className: PropTypes.string, style: PropTypes.object, name: PropTypes.string, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]), defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]), component: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), onChange: PropTypes.func, disabled: PropTypes.bool, shape: PropTypes.oneOf(['normal', 'button']), size: PropTypes.oneOf(['large', 'medium', 'small']), dataSource: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.string),\n            PropTypes.arrayOf(PropTypes.object),\n        ]), children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]), direction: PropTypes.oneOf(['hoz', 'ver']), isPreview: PropTypes.bool, renderPreview: PropTypes.func });\n    RadioGroup.defaultProps = {\n        dataSource: [],\n        size: 'medium',\n        onChange: function () { },\n        prefix: 'next-',\n        component: 'div',\n        direction: 'hoz',\n        isPreview: false,\n    };\n    RadioGroup.childContextTypes = {\n        onChange: PropTypes.func,\n        __group__: PropTypes.bool,\n        isButton: PropTypes.bool,\n        selectedValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\n        disabled: PropTypes.bool,\n    };\n    RadioGroup.displayName = 'RadioGroup';\n    return RadioGroup;\n}(Component));\nexport default polyfill(RadioGroup);\n","import { __assign, __rest } from \"tslib\";\nimport Radio from './radio';\nimport RadioGroup from './radio-group';\nimport ConfigProvider from '../config-provider';\nimport { assignSubComponent } from '../util/component';\nvar RadioWithSub = assignSubComponent(Radio, {\n    Group: ConfigProvider.config(RadioGroup, {\n        transform: function (props, deprecated) {\n            if ('itemDirection' in props) {\n                deprecated('itemDirection', 'direction', 'Radio');\n                var itemDirection = props.itemDirection, others = __rest(props, [\"itemDirection\"]);\n                props = __assign({ direction: itemDirection }, others);\n            }\n            return props;\n        },\n    }),\n});\nexport default RadioWithSub;\n","import { __assign, __extends } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../../checkbox';\nimport Radio from '../../radio';\nimport { func, obj, KEYCODE, htmlId } from '../../util';\nimport Item from './item';\nvar noop = {};\nvar bindCtx = func.bindCtx;\nvar pickOthers = obj.pickOthers;\nvar CheckableItem = /** @class */ (function (_super) {\n    __extends(CheckableItem, _super);\n    function CheckableItem(props) {\n        var _this = _super.call(this, props) || this;\n        bindCtx(_this, ['stopPropagation', 'handleKeyDown', 'handleClick']);\n        _this.id = htmlId.escapeForId(\"checkable-item-\".concat(props.id || props._key));\n        return _this;\n    }\n    CheckableItem.prototype.stopPropagation = function (e) {\n        e.stopPropagation();\n    };\n    CheckableItem.prototype.handleCheck = function (e) {\n        var _a = this.props, checkType = _a.checkType, checked = _a.checked, onChange = _a.onChange;\n        if (!(checkType === 'radio' && checked)) {\n            onChange(!checked, e);\n        }\n    };\n    CheckableItem.prototype.handleKeyDown = function (e) {\n        if (e.keyCode === KEYCODE.SPACE && !this.props.checkDisabled) {\n            this.handleCheck(e);\n        }\n        this.props.onKeyDown && this.props.onKeyDown(e);\n    };\n    CheckableItem.prototype.handleClick = function (e) {\n        this.handleCheck(e);\n        this.props.onClick && this.props.onClick(e);\n    };\n    CheckableItem.prototype.renderCheck = function () {\n        var _a = this\n            .props, root = _a.root, checked = _a.checked, indeterminate = _a.indeterminate, disabled = _a.disabled, checkType = _a.checkType, checkDisabled = _a.checkDisabled, onChange = _a.onChange;\n        var labelToggleChecked = root.props.labelToggleChecked;\n        var Check = checkType === 'radio' ? Radio : Checkbox;\n        var checkProps = {\n            tabIndex: -1,\n            checked: checked,\n            disabled: disabled || checkDisabled,\n        };\n        if (checkType === 'checkbox') {\n            checkProps.indeterminate = indeterminate;\n        }\n        if (!labelToggleChecked) {\n            checkProps.onChange = onChange;\n            checkProps.onClick = this.stopPropagation;\n        }\n        return React.createElement(Check, __assign({ \"aria-labelledby\": this.id }, checkProps));\n    };\n    CheckableItem.prototype.render = function () {\n        var _a = this\n            .props, _key = _a._key, root = _a.root, checked = _a.checked, disabled = _a.disabled, onClick = _a.onClick, helper = _a.helper, children = _a.children;\n        var _b = root.props, prefix = _b.prefix, labelToggleChecked = _b.labelToggleChecked;\n        var others = pickOthers(CheckableItem.propTypes, this.props);\n        var newProps = __assign({ _key: _key, root: root, disabled: disabled, type: 'item', onClick: onClick, onKeyDown: this.handleKeyDown }, others);\n        if (labelToggleChecked && !disabled) {\n            newProps.onClick = this.handleClick;\n        }\n        var title;\n        if (typeof children === 'string') {\n            title = children;\n        }\n        return (React.createElement(Item, __assign({ \"aria-checked\": checked, title: title }, newProps),\n            this.renderCheck(),\n            React.createElement(\"span\", { className: \"\".concat(prefix, \"menu-item-text\"), id: this.id }, children),\n            helper ? React.createElement(\"div\", { className: \"\".concat(prefix, \"menu-item-helper\") }, helper) : null));\n    };\n    CheckableItem.propTypes = {\n        _key: PropTypes.string,\n        root: PropTypes.object,\n        disabled: PropTypes.bool,\n        inlineIndent: PropTypes.number,\n        checked: PropTypes.bool,\n        indeterminate: PropTypes.bool,\n        onChange: PropTypes.func,\n        checkType: PropTypes.oneOf(['checkbox', 'radio']),\n        checkDisabled: PropTypes.bool,\n        helper: PropTypes.node,\n        children: PropTypes.node,\n        onKeyDown: PropTypes.func,\n        onClick: PropTypes.func,\n        id: PropTypes.string,\n    };\n    CheckableItem.defaultProps = {\n        disabled: false,\n        checked: false,\n        indeterminate: false,\n        checkType: 'checkbox',\n        checkDisabled: false,\n        onChange: noop,\n    };\n    return CheckableItem;\n}(Component));\nexport default CheckableItem;\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport CheckableItem from './checkable-item';\nvar CheckboxItem = /** @class */ (function (_super) {\n    __extends(CheckboxItem, _super);\n    function CheckboxItem() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    CheckboxItem.prototype.render = function () {\n        var _a = this.props, checkboxDisabled = _a.checkboxDisabled, others = __rest(_a, [\"checkboxDisabled\"]);\n        return (React.createElement(CheckableItem, __assign({ role: \"menuitemcheckbox\", checkType: \"checkbox\", checkDisabled: checkboxDisabled }, others)));\n    };\n    CheckboxItem.menuChildType = 'item';\n    CheckboxItem.propTypes = {\n        checked: PropTypes.bool,\n        indeterminate: PropTypes.bool,\n        disabled: PropTypes.bool,\n        onChange: PropTypes.func,\n        helper: PropTypes.node,\n        children: PropTypes.node,\n        checkboxDisabled: PropTypes.bool,\n    };\n    CheckboxItem.defaultProps = {\n        checked: false,\n        indeterminate: false,\n        disabled: false,\n        onChange: function () { },\n        checkboxDisabled: false,\n    };\n    return CheckboxItem;\n}(Component));\nexport default CheckboxItem;\n","import { __assign, __extends } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport CheckableItem from './checkable-item';\nvar RadioItem = /** @class */ (function (_super) {\n    __extends(RadioItem, _super);\n    function RadioItem() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    RadioItem.prototype.render = function () {\n        return React.createElement(CheckableItem, __assign({ role: \"menuitemradio\", checkType: \"radio\" }, this.props));\n    };\n    RadioItem.menuChildType = 'item';\n    RadioItem.propTypes = {\n        checked: PropTypes.bool,\n        disabled: PropTypes.bool,\n        onChange: PropTypes.func,\n        helper: PropTypes.node,\n        children: PropTypes.node,\n    };\n    RadioItem.defaultProps = {\n        checked: false,\n        disabled: false,\n        onChange: function () { },\n    };\n    return RadioItem;\n}(Component));\nexport default RadioItem;\n","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport React, { Component, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Item from './item';\nvar Group = /** @class */ (function (_super) {\n    __extends(Group, _super);\n    function Group() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Group.prototype.render = function () {\n        var _a;\n        var _b = this\n            .props, root = _b.root, className = _b.className, label = _b.label, children = _b.children, parentMode = _b.parentMode, others = __rest(_b, [\"root\", \"className\", \"label\", \"children\", \"parentMode\"]);\n        var prefix = root.props.prefix;\n        var newClassName = cx((_a = {},\n            _a[\"\".concat(prefix, \"menu-group-label\")] = true,\n            _a), className);\n        var newChildren = children.map(function (child) {\n            var _a;\n            // to fix https://github.com/alibaba-fusion/next/issues/952\n            if (typeof child !== 'function' && typeof child !== 'object') {\n                return child;\n            }\n            var className = child.props.className;\n            var newChildClassName = cx((_a = {},\n                _a[\"\".concat(prefix, \"menu-group-item\")] = true,\n                _a[className] = !!className,\n                _a));\n            return cloneElement(child, {\n                parentMode: parentMode,\n                className: newChildClassName,\n            });\n        });\n        return __spreadArray([\n            React.createElement(Item, __assign({ key: \"menu-group-label\", className: newClassName, replaceClassName: true, root: root, parentMode: parentMode }, others), label)\n        ], __read(newChildren), false);\n    };\n    Group.menuChildType = 'group';\n    Group.propTypes = {\n        root: PropTypes.object,\n        className: PropTypes.string,\n        label: PropTypes.node,\n        children: PropTypes.node,\n        parentMode: PropTypes.oneOf(['inline', 'popup']),\n    };\n    return Group;\n}(Component));\nexport default Group;\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nvar Divider = /** @class */ (function (_super) {\n    __extends(Divider, _super);\n    function Divider() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Divider.prototype.render = function () {\n        var _a = this\n            .props, root = _a.root, className = _a.className, parentMode = _a.parentMode, parent = _a.parent, others = __rest(_a, [\"root\", \"className\", \"parentMode\", \"parent\"]);\n        var prefix = root.props.prefix;\n        var newClassName = cx(\"\".concat(prefix, \"menu-divider\"), className);\n        return React.createElement(\"li\", __assign({ role: \"separator\", className: newClassName }, others));\n    };\n    Divider.menuChildType = 'divider';\n    Divider.propTypes = {\n        root: PropTypes.object,\n        className: PropTypes.string,\n    };\n    return Divider;\n}(Component));\nexport default Divider;\n","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport React, { Component } from 'react';\n// eslint-disable-next-line react/no-deprecated\nimport { render, unmountComponentAtNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Overlay from '../../overlay';\nimport { func } from '../../util';\nimport ConfigProvider from '../../config-provider';\nimport menu from './menu';\nvar bindCtx = func.bindCtx;\nvar getContextProps = ConfigProvider.getContextProps;\nvar Menu = ConfigProvider.config(menu);\nvar menuInstance;\nvar ContextMenu = /** @class */ (function (_super) {\n    __extends(ContextMenu, _super);\n    function ContextMenu(props) {\n        var _this = _super.call(this, props) || this;\n        _this.handleOverlayClose = function (triggerType, e) {\n            var others = [];\n            for (var _i = 2; _i < arguments.length; _i++) {\n                others[_i - 2] = arguments[_i];\n            }\n            var clickedPopupMenu = triggerType === 'docClick' &&\n                _this.popupNodes.some(function (node) { return node.contains(e.target); });\n            if (!clickedPopupMenu) {\n                _this.close();\n                var overlayProps = _this.props.overlayProps;\n                if (overlayProps && overlayProps.onRequestClose) {\n                    overlayProps.onRequestClose.apply(overlayProps, __spreadArray([triggerType, e], __read(others), false));\n                }\n            }\n        };\n        _this.handleItemClick = function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            _this.close();\n            _this.props.onItemClick && (_a = _this.props).onItemClick.apply(_a, __spreadArray([], __read(args), false));\n        };\n        _this.state = {\n            visible: true,\n        };\n        bindCtx(_this, ['handleOverlayClose', 'handleOverlayOpen', 'handleItemClick', 'getOverlay']);\n        return _this;\n    }\n    ContextMenu.prototype.getOverlay = function (ref) {\n        this.overlay = ref;\n    };\n    ContextMenu.prototype.close = function () {\n        this.setState({\n            visible: false,\n        });\n        menuInstance = null;\n    };\n    ContextMenu.prototype.handleOverlayOpen = function () {\n        // @ts-expect-error 此处 overlay 类型不对，Overlay 完成改造后可去除该注释\n        this.popupNodes = this.overlay.getInstance().getContent().getInstance().popupNodes;\n        var overlayProps = this.props.overlayProps;\n        if (overlayProps && overlayProps.onOpen) {\n            overlayProps.onOpen();\n        }\n    };\n    ContextMenu.prototype.render = function () {\n        var _a = this.props, className = _a.className, popupClassName = _a.popupClassName, target = _a.target, align = _a.align, offset = _a.offset, afterClose = _a.afterClose, _b = _a.overlayProps, overlayProps = _b === void 0 ? {} : _b, others = __rest(_a, [\"className\", \"popupClassName\", \"target\", \"align\", \"offset\", \"afterClose\", \"overlayProps\"]);\n        var contextProps = getContextProps(this.props);\n        var prefix = contextProps.prefix;\n        var visible = this.state.visible;\n        var newOverlayProps = __assign(__assign(__assign({}, contextProps), overlayProps), { target: target, align: align, offset: offset, afterClose: afterClose, visible: visible, onRequestClose: this.handleOverlayClose, onOpen: this.handleOverlayOpen, ref: this.getOverlay });\n        var menuProps = __assign(__assign(__assign(__assign({}, contextProps), { triggerType: 'hover' }), others), { className: cx(\"\".concat(prefix, \"context\"), className), popupClassName: cx(\"\".concat(prefix, \"context\"), popupClassName), onItemClick: this.handleItemClick });\n        newOverlayProps.rtl = false;\n        return (React.createElement(Overlay, __assign({}, newOverlayProps),\n            React.createElement(Menu, __assign({}, menuProps))));\n    };\n    ContextMenu.propTypes = {\n        className: PropTypes.string,\n        popupClassName: PropTypes.string,\n        target: PropTypes.any,\n        align: PropTypes.string,\n        offset: PropTypes.array,\n        overlayProps: PropTypes.object,\n        afterClose: PropTypes.func,\n        mode: PropTypes.oneOf(['inline', 'popup']),\n        onOpen: PropTypes.func,\n        onItemClick: PropTypes.func,\n    };\n    ContextMenu.defaultProps = {\n        prefix: 'next-',\n        align: 'tl tl',\n        mode: 'popup',\n    };\n    return ContextMenu;\n}(Component));\n/**\n * 创建上下文菜单\n */\nexport default function create(props) {\n    if (menuInstance) {\n        menuInstance.destroy();\n    }\n    /* eslint-disable no-unused-vars */\n    var afterClose = props.afterClose, others = __rest(props, [\"afterClose\"]);\n    /* eslint-enable no-unused-vars */\n    var div = document.createElement('div');\n    document.body.appendChild(div);\n    var closeChain = function () {\n        unmountComponentAtNode(div);\n        document.body.removeChild(div);\n        afterClose && afterClose();\n    };\n    var newContext = ConfigProvider.getContext();\n    var menu;\n    render(React.createElement(ConfigProvider, __assign({}, newContext),\n        React.createElement(ContextMenu, __assign({ ref: function (ref) {\n                menu = ref;\n            }, afterClose: closeChain }, others))), div);\n    menuInstance = {\n        destroy: function () {\n            if (menu) {\n                menu.close();\n            }\n        },\n    };\n    return menuInstance;\n}\n","import { __assign, __rest } from \"tslib\";\nimport ConfigProvider from '../config-provider';\nimport Menu from './view/menu';\nimport SubMenu from './view/sub-menu';\nimport SelectableItem from './view/selectable-item';\nimport CheckboxItem from './view/checkbox-item';\nimport RadioItem from './view/radio-item';\nimport PopupItem from './view/popup-item';\nimport Group from './view/group';\nimport Divider from './view/divider';\nimport create from './view/create';\nimport { assignSubComponent } from '../util/component';\nvar MenuWithSub = assignSubComponent(Menu, {\n    SubMenu: SubMenu,\n    Item: SelectableItem,\n    CheckboxItem: CheckboxItem,\n    RadioItem: RadioItem,\n    PopupItem: PopupItem,\n    Group: Group,\n    Divider: Divider,\n    create: create,\n});\nexport default ConfigProvider.config(MenuWithSub, {\n    transform: function (props, deprecated) {\n        if ('indentSize' in props) {\n            deprecated('indentSize', 'inlineIndent', 'Menu');\n            var indentSize = props.indentSize, others = __rest(props, [\"indentSize\"]);\n            props = __assign({ inlineIndent: indentSize }, others);\n        }\n        if ('onDeselect' in props) {\n            deprecated('onDeselect', 'onSelect', 'Menu');\n            if (props.onDeselect) {\n                var onDeselect_1 = props.onDeselect, onSelect_1 = props.onSelect, others = __rest(props, [\"onDeselect\", \"onSelect\"]);\n                var newOnSelect = function (selectedKeys, item, extra) {\n                    if (!extra.select) {\n                        onDeselect_1(extra.key);\n                    }\n                    if (onSelect_1) {\n                        onSelect_1(selectedKeys, item, extra);\n                    }\n                };\n                props = __assign({ onSelect: newOnSelect }, others);\n            }\n        }\n        return props;\n    },\n});\n","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport React, { Component, Children, isValidElement } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../../config-provider';\nimport { obj, log } from '../../util';\nfunction mapIconSize(size) {\n    return {\n        large: 'small',\n        medium: 'xs',\n        small: 'xs',\n    }[size];\n}\nvar Button = /** @class */ (function (_super) {\n    __extends(Button, _super);\n    function Button() {\n        var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n        _this.onMouseUp = function (e) {\n            // @ts-expect-error fixme: may have no blur\n            _this.button.blur();\n            if (_this.props.onMouseUp) {\n                _this.props.onMouseUp(e);\n            }\n        };\n        _this.buttonRefHandler = function (button) {\n            _this.button = button;\n        };\n        return _this;\n    }\n    Button.prototype.render = function () {\n        var _a, _b;\n        var _c = this.props, prefix = _c.prefix, className = _c.className, type = _c.type, size = _c.size, htmlType = _c.htmlType, loading = _c.loading, text = _c.text, warning = _c.warning, ghost = _c.ghost, component = _c.component, iconSize = _c.iconSize, icons = _c.icons, disabled = _c.disabled, onClick = _c.onClick, children = _c.children, rtl = _c.rtl, others = __rest(_c, [\"prefix\", \"className\", \"type\", \"size\", \"htmlType\", \"loading\", \"text\", \"warning\", \"ghost\", \"component\", \"iconSize\", \"icons\", \"disabled\", \"onClick\", \"children\", \"rtl\"]);\n        var ghostType = ['light', 'dark'].indexOf(ghost) >= 0 ? ghost : 'dark';\n        var btnClsObj = (_a = {},\n            _a[\"\".concat(prefix, \"btn\")] = true,\n            _a[\"\".concat(prefix).concat(size)] = size,\n            _a[\"\".concat(prefix, \"btn-\").concat(type)] = type && !ghost,\n            _a[\"\".concat(prefix, \"btn-text\")] = text,\n            _a[\"\".concat(prefix, \"btn-warning\")] = warning,\n            _a[\"\".concat(prefix, \"btn-loading\")] = loading,\n            _a[\"\".concat(prefix, \"btn-ghost\")] = ghost,\n            _a[\"\".concat(prefix, \"btn-\").concat(ghostType)] = ghost,\n            _a[className] = className,\n            _a);\n        var loadingIcon = null;\n        // 如果传入了 loading 的 icons，使用该节点来渲染\n        if (icons && icons.loading && isValidElement(icons.loading)) {\n            if (loading) {\n                delete btnClsObj[\"\".concat(prefix, \"btn-loading\")];\n                btnClsObj[\"\".concat(prefix, \"btn-custom-loading\")] = true;\n            }\n            var loadingSize = iconSize || mapIconSize(size);\n            loadingIcon = React.cloneElement(icons.loading, {\n                className: classNames((_b = {},\n                    _b[\"\".concat(prefix, \"btn-custom-loading-icon\")] = true,\n                    _b.show = loading,\n                    _b)),\n                size: loadingSize,\n            });\n        }\n        var count = Children.count(children);\n        // fixme: react children is a complex types, map children to modify is unrecommended\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        var clonedChildren = Children.map(children, function (child, index) {\n            var _a;\n            if (child &&\n                ['function', 'object'].indexOf(typeof child.type) > -1 &&\n                child.type._typeMark === 'icon') {\n                var iconCls = classNames((_a = {},\n                    _a[\"\".concat(prefix, \"btn-icon\")] = !iconSize,\n                    _a[\"\".concat(prefix, \"btn-icon-size\")] = iconSize,\n                    _a[\"\".concat(prefix, \"icon-first\")] = count > 1 && index === 0,\n                    _a[\"\".concat(prefix, \"icon-last\")] = count > 1 && index === count - 1,\n                    _a[\"\".concat(prefix, \"icon-alone\")] = count === 1,\n                    _a[child.props.className] = !!child.props.className,\n                    _a));\n                if ('size' in child.props) {\n                    log.warning(\"The size of Icon will not take effect, when Icon is the [direct child element] of Button(<Button><Icon size=\\\"\".concat(child.props.size, \"\\\" /></Button>), use <Button iconSize=\\\"\").concat(child.props.size, \"\\\"> or <Button><div><Icon size=\\\"\").concat(child.props.size, \"\\\" /></div></Button> instead of.\"));\n                }\n                return React.cloneElement(child, {\n                    className: iconCls,\n                    size: iconSize || mapIconSize(size),\n                });\n            }\n            if (!isValidElement(child)) {\n                return React.createElement(\"span\", { className: \"\".concat(prefix, \"btn-helper\") }, child);\n            }\n            return child;\n        });\n        var TagName = component;\n        var tagAttrs = __assign(__assign({}, obj.pickOthers(Object.keys(Button.propTypes), others)), { type: htmlType, disabled: disabled, onClick: onClick, className: classNames(btnClsObj) });\n        if (TagName !== 'button') {\n            delete tagAttrs.type;\n            if (tagAttrs.disabled) {\n                delete tagAttrs.onClick; // a 标签的 onClick 浏览器默认不会禁用\n                if ('href' in tagAttrs && tagAttrs.href) {\n                    delete tagAttrs.href; // a 标签在禁用状态下无跳转\n                }\n            }\n        }\n        return (React.createElement(TagName, __assign({}, tagAttrs, { dir: rtl ? 'rtl' : undefined, onMouseUp: this.onMouseUp, ref: this.buttonRefHandler }),\n            loadingIcon,\n            clonedChildren));\n    };\n    Button.displayName = 'Button';\n    Button.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { prefix: PropTypes.string, rtl: PropTypes.bool, type: PropTypes.oneOf(['primary', 'secondary', 'normal']), size: PropTypes.oneOf(['small', 'medium', 'large']), icons: PropTypes.shape({ loading: PropTypes.node }), iconSize: PropTypes.oneOfType([\n            PropTypes.oneOf([\n                'xxs',\n                'xs',\n                'small',\n                'medium',\n                'large',\n                'xl',\n                'xxl',\n                'xxxl',\n                'inherit',\n            ]),\n            PropTypes.number,\n        ]), htmlType: PropTypes.oneOf(['submit', 'reset', 'button']), component: PropTypes.oneOf(['button', 'a', 'div', 'span']), loading: PropTypes.bool, ghost: PropTypes.oneOf([true, false, 'light', 'dark']), text: PropTypes.bool, warning: PropTypes.bool, disabled: PropTypes.bool, onClick: PropTypes.func, className: PropTypes.string, onMouseUp: PropTypes.func, children: PropTypes.node });\n    Button.defaultProps = {\n        prefix: 'next-',\n        type: 'normal',\n        size: 'medium',\n        icons: {},\n        htmlType: 'button',\n        component: 'button',\n        loading: false,\n        ghost: false,\n        text: false,\n        warning: false,\n        disabled: false,\n        onClick: function () { },\n    };\n    return Button;\n}(Component));\nexport default Button;\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../../config-provider';\n/**\n * Button.Group\n */\nvar ButtonGroup = /** @class */ (function (_super) {\n    __extends(ButtonGroup, _super);\n    function ButtonGroup() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ButtonGroup.prototype.render = function () {\n        var _a;\n        var _b = this.props, prefix = _b.prefix, className = _b.className, size = _b.size, children = _b.children, rtl = _b.rtl, others = __rest(_b, [\"prefix\", \"className\", \"size\", \"children\", \"rtl\"]);\n        var groupCls = classNames((_a = {},\n            _a[\"\".concat(prefix, \"btn-group\")] = true,\n            _a[className] = className,\n            _a));\n        var cloneChildren = Children.map(children, function (child) {\n            if (child) {\n                // fixme: child may not be cloned\n                return React.cloneElement(child, {\n                    size: size,\n                });\n            }\n        });\n        if (rtl) {\n            others.dir = 'rtl';\n        }\n        return (React.createElement(\"div\", __assign({}, others, { className: groupCls }), cloneChildren));\n    };\n    ButtonGroup.displayName = 'ButtonGroup';\n    ButtonGroup.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { rtl: PropTypes.bool, prefix: PropTypes.string, size: PropTypes.string, className: PropTypes.string, children: PropTypes.node });\n    ButtonGroup.defaultProps = {\n        prefix: 'next-',\n        size: 'medium',\n    };\n    return ButtonGroup;\n}(Component));\nexport default ConfigProvider.config(ButtonGroup);\n","import { __assign, __rest } from \"tslib\";\nimport ConfigProvider from '../config-provider';\nimport { assignSubComponent } from '../util/component';\nimport Button from './view/button';\nimport Group from './view/group';\nvar WithSubButton = assignSubComponent(Button, { Group: Group });\nexport default ConfigProvider.config(WithSubButton, {\n    transform: /* istanbul ignore next */ function (props, deprecated) {\n        if ('shape' in props) {\n            deprecated('shape', 'text | warning | ghost', 'Button');\n            var shape = props.shape, type = props.type, others = __rest(props, [\"shape\", \"type\"]);\n            var newType = type;\n            if (type === 'light' ||\n                type === 'dark' ||\n                (type === 'secondary' && shape === 'warning')) {\n                newType = 'normal';\n            }\n            var ghost = void 0;\n            if (shape === 'ghost') {\n                ghost = {\n                    primary: 'dark',\n                    secondary: 'dark',\n                    normal: 'light',\n                    dark: 'dark',\n                    light: 'light',\n                }[type || Button.defaultProps.type];\n            }\n            var text = shape === 'text';\n            var warning = shape === 'warning';\n            return __assign({ type: newType, ghost: ghost, text: text, warning: warning }, others);\n        }\n        return props;\n    },\n});\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Animate from '../animate';\nimport Icon from '../icon';\nimport { func, KEYCODE, obj, support } from '../util';\nimport zhCN from '../locale/zh-cn';\nimport ConfigProvider from '../config-provider';\nvar noop = func.noop, bindCtx = func.bindCtx;\nvar PRESET_COLOR_REG = /blue|green|orange|red|turquoise|yellow/;\nvar Tag = /** @class */ (function (_super) {\n    __extends(Tag, _super);\n    function Tag(props) {\n        var _this = _super.call(this, props) || this;\n        _this.tagNode = null;\n        _this.onKeyDown = function (e) {\n            // 针对无障碍化要求 添加键盘 SPACE 事件\n            var _a = _this.props, closable = _a.closable, closeArea = _a.closeArea, onClick = _a.onClick, disabled = _a.disabled;\n            if (e.keyCode !== KEYCODE.SPACE || disabled) {\n                return;\n            }\n            e.preventDefault();\n            e.stopPropagation();\n            if (closable) {\n                _this.handleClose(closeArea);\n            }\n            else {\n                return onClick(e);\n            }\n        };\n        _this.state = {\n            visible: true,\n        };\n        bindCtx(_this, [\n            'handleBodyClick',\n            'handleTailClick',\n            'handleAnimationInit',\n            'handleAnimationEnd',\n            'renderTailNode',\n        ]);\n        return _this;\n    }\n    Tag.prototype.componentWillUnmount = function () {\n        this.__destroyed = true;\n    };\n    Tag.prototype.handleClose = function (from) {\n        var _this = this;\n        var _a = this.props, animation = _a.animation, onClose = _a.onClose;\n        var hasAnimation = support.animation && animation;\n        // 先执行回调\n        var result = onClose(from, this.tagNode);\n        // 如果回调函数返回 false，则阻止关闭行为\n        if (result !== false && !this.__destroyed) {\n            this.setState({\n                visible: false,\n            }, function () {\n                // 如果没有动画，则直接执行 afterClose\n                !hasAnimation && _this.props.afterClose(_this.tagNode);\n            });\n        }\n    };\n    // 标签体点击\n    Tag.prototype.handleBodyClick = function (e) {\n        var _a = this.props, closable = _a.closable, closeArea = _a.closeArea, onClick = _a.onClick;\n        var node = e.currentTarget;\n        if (node && (node === e.target || node.contains(e.target))) {\n            if (closable && closeArea === 'tag') {\n                this.handleClose('tag');\n            }\n            if (typeof onClick === 'function') {\n                return onClick(e);\n            }\n        }\n    };\n    Tag.prototype.handleTailClick = function (e) {\n        e && e.preventDefault();\n        e && e.stopPropagation();\n        this.handleClose('tail');\n    };\n    Tag.prototype.handleAnimationInit = function (node) {\n        this.props.afterAppear(node);\n    };\n    Tag.prototype.handleAnimationEnd = function (node) {\n        this.props.afterClose(node);\n    };\n    Tag.prototype.renderAnimatedTag = function (children, animationName) {\n        return (React.createElement(Animate, { animation: animationName, afterAppear: this.handleAnimationInit, afterLeave: this.handleAnimationEnd }, children));\n    };\n    Tag.prototype.renderTailNode = function () {\n        var _a = this.props, prefix = _a.prefix, closable = _a.closable, locale = _a.locale;\n        if (!closable) {\n            return null;\n        }\n        return (React.createElement(\"span\", { className: \"\".concat(prefix, \"tag-close-btn\"), onClick: this.handleTailClick, role: \"button\", \"aria-label\": locale.delete },\n            React.createElement(Icon, { type: \"close\" })));\n    };\n    Tag.prototype.isPresetColor = function () {\n        var color = this.props.color;\n        if (!color) {\n            return false;\n        }\n        return PRESET_COLOR_REG.test(color);\n    };\n    Tag.prototype.getTagStyle = function () {\n        var _a = this.props, _b = _a.color, color = _b === void 0 ? '' : _b, style = _a.style;\n        var isPresetColor = this.isPresetColor();\n        var customColorStyle = {\n            backgroundColor: color,\n            borderColor: color,\n            color: '#fff',\n        };\n        return __assign(__assign({}, (color && !isPresetColor ? customColorStyle : null)), style);\n    };\n    Tag.prototype.render = function () {\n        var _a;\n        var _this = this;\n        var _b = this.props, prefix = _b.prefix, type = _b.type, size = _b.size, color = _b.color, _shape = _b._shape, closable = _b.closable, closeArea = _b.closeArea, className = _b.className, children = _b.children, animation = _b.animation, disabled = _b.disabled, rtl = _b.rtl;\n        var visible = this.state.visible;\n        var isPresetColor = this.isPresetColor();\n        var others = obj.pickOthers(Tag.propTypes, this.props);\n        var style = others.style, otherTagProps = __rest(others, [\"style\"]);\n        var shape = closable ? 'closable' : _shape;\n        var bodyClazz = classNames([\"\".concat(prefix, \"tag\"), \"\".concat(prefix, \"tag-\").concat(shape), \"\".concat(prefix, \"tag-\").concat(size)], (_a = {},\n            _a[\"\".concat(prefix, \"tag-level-\").concat(type)] = !color,\n            _a[\"\".concat(prefix, \"tag-closable\")] = closable,\n            _a[\"\".concat(prefix, \"tag-body-pointer\")] = closable && closeArea === 'tag',\n            _a[\"\".concat(prefix, \"tag-\").concat(color)] = color && isPresetColor && type === 'primary',\n            _a[\"\".concat(prefix, \"tag-\").concat(color, \"-inverse\")] = color && isPresetColor && type === 'normal',\n            _a), className);\n        // close btn\n        var tailNode = this.renderTailNode();\n        // tag node\n        var tagNode = !visible ? null : (React.createElement(\"div\", __assign({ className: bodyClazz, onClick: this.handleBodyClick, onKeyDown: this.onKeyDown, \n            // @ts-expect-error tagIndex required number\n            tabIndex: disabled ? '' : '0', role: \"button\", \"aria-disabled\": disabled, disabled: disabled, dir: rtl ? 'rtl' : undefined, ref: function (n) { return (_this.tagNode = n); }, style: this.getTagStyle() }, otherTagProps),\n            React.createElement(\"span\", { className: \"\".concat(prefix, \"tag-body\") }, children),\n            tailNode));\n        if (animation && support.animation) {\n            return this.renderAnimatedTag(tagNode, \"\".concat(prefix, \"tag-zoom\"));\n        }\n        // 未开启或不支持动画\n        return tagNode;\n    };\n    Tag.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { type: PropTypes.oneOf(['normal', 'primary']), size: PropTypes.oneOf(['small', 'medium', 'large']), color: PropTypes.string, animation: PropTypes.bool, closeArea: PropTypes.oneOf(['tag', 'tail']), closable: PropTypes.bool, onClose: PropTypes.func, afterClose: PropTypes.func, afterAppear: PropTypes.func, className: PropTypes.any, children: PropTypes.node, onClick: PropTypes.func, _shape: PropTypes.oneOf(['default', 'closable', 'checkable']), disabled: PropTypes.bool, rtl: PropTypes.bool, locale: PropTypes.object });\n    Tag.defaultProps = {\n        prefix: 'next-',\n        type: 'normal',\n        size: 'medium',\n        closeArea: 'tail',\n        animation: false,\n        onClose: noop,\n        afterClose: noop,\n        afterAppear: noop,\n        onClick: noop,\n        _shape: 'default',\n        disabled: false,\n        rtl: false,\n        locale: zhCN.Tag,\n    };\n    Tag.displayName = 'Tag';\n    return Tag;\n}(Component));\nexport default ConfigProvider.config(Tag);\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nvar Group = /** @class */ (function (_super) {\n    __extends(Group, _super);\n    function Group() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Group.prototype.render = function () {\n        var _a = this.props, className = _a.className, prefix = _a.prefix, children = _a.children, rtl = _a.rtl, others = __rest(_a, [\"className\", \"prefix\", \"children\", \"rtl\"]);\n        var clazz = classNames(\"\".concat(prefix || 'next-', \"tag-group\"), className);\n        return (React.createElement(\"div\", __assign({ className: clazz, dir: rtl ? 'rtl' : undefined }, others), children));\n    };\n    Group.defaultProps = {\n        prefix: 'next-',\n        rtl: false,\n    };\n    return Group;\n}(Component));\nexport default Group;\n","import { __assign, __extends } from \"tslib\";\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { obj, func } from '../util';\nimport Tag from './tag';\nvar noop = func.noop, bindCtx = func.bindCtx;\nvar Selectable = /** @class */ (function (_super) {\n    __extends(Selectable, _super);\n    function Selectable(props) {\n        var _this = _super.call(this, props) || this;\n        _this.state = {\n            checked: 'checked' in props ? props.checked : props.defaultChecked || false,\n        };\n        bindCtx(_this, ['handleClick']);\n        return _this;\n    }\n    Selectable.getDerivedStateFromProps = function (props, state) {\n        if (props.checked !== undefined && props.checked !== state.checked) {\n            return {\n                checked: props.checked,\n            };\n        }\n        return null;\n    };\n    Selectable.prototype.handleClick = function (e) {\n        e && e.preventDefault();\n        // IE9 不支持 pointer-events，还是可能会触发 click 事件\n        if (this.props.disabled) {\n            return false;\n        }\n        var checked = this.state.checked;\n        this.setState({\n            checked: !checked,\n        });\n        this.props.onChange(!checked, e);\n    };\n    Selectable.prototype.render = function () {\n        var attrFilterTarget = [\n            'checked',\n            'defaultChecked',\n            'onChange',\n            'className',\n            // 防止这些额外的参数影响 tag 的类型\n            '_shape',\n            'closable',\n        ];\n        var others = obj.pickOthers(attrFilterTarget, this.props);\n        var isChecked = 'checked' in this.props ? this.props.checked : this.state.checked;\n        var clazz = classNames(this.props.className, {\n            checked: isChecked,\n        });\n        return (React.createElement(Tag, __assign({}, others, { role: \"checkbox\", _shape: \"checkable\", \"aria-checked\": isChecked, className: clazz, onClick: this.handleClick })));\n    };\n    Selectable.defaultProps = {\n        onChange: noop,\n    };\n    return Selectable;\n}(Component));\nexport default polyfill(Selectable);\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React, { Component } from 'react';\nimport Tag from './tag';\nvar Closeable = /** @class */ (function (_super) {\n    __extends(Closeable, _super);\n    function Closeable() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Closeable.prototype.render = function () {\n        var _a = this.props, disabled = _a.disabled, className = _a.className, closeArea = _a.closeArea, onClose = _a.onClose, afterClose = _a.afterClose, onClick = _a.onClick, type = _a.type, size = _a.size, children = _a.children, rtl = _a.rtl, others = __rest(_a, [\"disabled\", \"className\", \"closeArea\", \"onClose\", \"afterClose\", \"onClick\", \"type\", \"size\", \"children\", \"rtl\"]);\n        return (React.createElement(Tag, __assign({}, others, { rtl: rtl, disabled: disabled, className: className, closeArea: closeArea, onClose: onClose, afterClose: afterClose, onClick: onClick, type: type, size: size, closable: true }), children));\n    };\n    Closeable.defaultProps = {\n        disabled: false,\n        type: 'normal',\n    };\n    return Closeable;\n}(Component));\nexport default Closeable;\n","import ConfigProvider from '../config-provider';\nimport { log } from '../util';\nimport Tag from './tag';\nimport Group from './tag-group';\nimport Selectable from './selectable';\nimport Closable from './closeable';\nimport { assignSubComponent } from '../util/component';\nvar ConfigTag = ConfigProvider.config(Tag, {\n    transform: function (props, deprecated) {\n        var _a = props, shape = _a.shape, type = _a.type;\n        if (shape === 'selectable') {\n            deprecated('shape=selectable', 'Tag.Selectable', 'Tag');\n        }\n        if (shape === 'deletable') {\n            deprecated('shape=deletable', 'Tag.Closeable', 'Tag');\n        }\n        if (shape === 'link') {\n            deprecated('shape=link', '<Tag><a href=\"x\">x</a></Tag>', 'Tag');\n        }\n        if (shape === 'readonly' || shape === 'interactive') {\n            log.warning(\"Warning: [ shape=\".concat(shape, \" ] is deprecated at [ Tag ]\"));\n        }\n        if (type === 'secondary') {\n            log.warning('Warning: [ type=secondary ] is deprecated at [ Tag ]');\n        }\n        ['count', 'marked', 'value', 'onChange'].forEach(function (key) {\n            if (key in props) {\n                log.warning(\"Warning: [ \".concat(key, \" ] is deprecated at [ Tag ]\"));\n            }\n        });\n        if ('selected' in props || 'defaultSelected' in props) {\n            log.warning('Warning: [ selected|defaultSelected  ] is deprecated at [ Tag ], use [ checked|defaultChecked ] at [ Tag.Selectable ] instead of it');\n        }\n        if ('closed' in props) {\n            log.warning('Warning: [ closed  ] is deprecated at [ Tag ], use [ onClose ] at [ Tag.Closeable ] instead of it');\n        }\n        if ('onSelect' in props) {\n            deprecated('onSelect', '<Tag.Selectable onChange/>', 'Tag');\n        }\n        if ('afterClose' in props) {\n            log.warning('Warning: [ afterClose  ] is deprecated at [ Tag ], use [ afterClose ] at [ Tag.Closeable ] instead of it');\n        }\n        return props;\n    },\n});\nvar ConfigClosable = ConfigProvider.config(Closable);\nvar TagWithSub = assignSubComponent(ConfigTag, {\n    Group: ConfigProvider.config(Group),\n    Selectable: ConfigProvider.config(Selectable),\n    // 有的地方叫做 Closeable 有的地方用 Closeable, 为了保持兼容 文档类出现 Closeable, Closeable 可以继续用\n    Closable: ConfigClosable,\n    Closeable: ConfigClosable,\n});\nexport default TagWithSub;\n","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport ConfigProvider from '../config-provider';\nimport { func } from '../util';\nimport zhCN from '../locale/zh-cn';\nvar Base = /** @class */ (function (_super) {\n    __extends(Base, _super);\n    function Base() {\n        var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n        _this.handleCompositionStart = function (e) {\n            _this.setState({\n                composition: true,\n            });\n            _this.props.onCompositionStart(e);\n        };\n        _this.handleCompositionEnd = function (e) {\n            _this.setState({\n                composition: false,\n            });\n            _this.props.onCompositionEnd(e);\n            var value = e.target.value;\n            _this.props.onChange(value, e);\n        };\n        _this.handleKeyDownFromClear = function (e) {\n            if (e.keyCode === 13) {\n                _this.onClear(e);\n            }\n        };\n        _this.saveRef = function (input) {\n            _this.inputRef = input;\n        };\n        return _this;\n    }\n    Base.getDerivedStateFromProps = function (nextProps, prevState) {\n        if ('value' in nextProps && nextProps.value !== prevState.value && !prevState.composition) {\n            var value = nextProps.value;\n            return {\n                value: value === undefined || value === null ? '' : value,\n            };\n        }\n        return null;\n    };\n    Base.prototype.ieHack = function (value) {\n        return value;\n    };\n    Base.prototype.onChange = function (e) {\n        if ('stopPropagation' in e) {\n            e.stopPropagation();\n        }\n        else if ('cancelBubble' in e) {\n            // @ts-expect-error 兼容 IE\n            e.cancelBubble();\n        }\n        var value = e.target.value;\n        if (this.props.trim) {\n            value = value.trim();\n        }\n        value = this.ieHack(value);\n        // not controlled\n        if (!('value' in this.props) || this.state.composition) {\n            this.setState({\n                value: value,\n            });\n        }\n        if (this.state.composition) {\n            return;\n        }\n        // Number('') = 0\n        if (value && this.props.htmlType === 'number') {\n            value = Number(value);\n        }\n        this.props.onChange(value, e);\n    };\n    /**\n     * abstract\n     */\n    Base.prototype.getValueLength = function (value) {\n        return 0;\n    };\n    Base.prototype.onKeyDown = function (e) {\n        var value = e.target.value;\n        var maxLength = this.props.maxLength;\n        var len = maxLength > 0 && value ? this.getValueLength(value) : 0;\n        var opts = {};\n        // has enable trim and has input whitespace\n        if (this.props.trim && e.keyCode === 32) {\n            opts.beTrimed = true;\n        }\n        // has defined maxLength and has over max length and has not input backspace and delete\n        if (maxLength > 0 &&\n            (len > maxLength + 1 ||\n                ((len === maxLength || len === maxLength + 1) &&\n                    e.keyCode !== 8 &&\n                    e.keyCode !== 46))) {\n            opts.overMaxLength = true;\n        }\n        this.props.onKeyDown(e, opts);\n    };\n    Base.prototype.onFocus = function (e) {\n        this.setState({\n            focus: true,\n        });\n        this.props.onFocus(e);\n    };\n    Base.prototype.onBlur = function (e) {\n        this.setState({\n            focus: false,\n        });\n        this.props.onBlur(e);\n    };\n    Base.prototype.onClear = function (e) {\n        if (this.props.disabled) {\n            return;\n        }\n        // 非受控模式清空内部数据\n        if (!('value' in this.props)) {\n            this.setState({\n                value: '',\n            });\n        }\n        this.props.onChange('', e, 'clear');\n        this.focus();\n    };\n    Base.prototype.renderLength = function () {\n        var _a;\n        var _b = this.props, maxLength = _b.maxLength, showLimitHint = _b.showLimitHint, prefix = _b.prefix, rtl = _b.rtl;\n        var len = maxLength > 0 && this.state.value ? this.getValueLength(this.state.value) : 0;\n        var classesLenWrap = classNames((_a = {},\n            _a[\"\".concat(prefix, \"input-len\")] = true,\n            _a[\"\".concat(prefix, \"error\")] = len > maxLength,\n            _a));\n        var content = rtl ? \"\".concat(maxLength, \"/\").concat(len) : \"\".concat(len, \"/\").concat(maxLength);\n        return maxLength && showLimitHint ? (React.createElement(\"span\", { className: classesLenWrap }, content)) : null;\n    };\n    Base.prototype.getClass = function () {\n        var _a;\n        var _b = this.props, disabled = _b.disabled, state = _b.state, prefix = _b.prefix;\n        return classNames((_a = {},\n            _a[\"\".concat(prefix, \"input\")] = true,\n            _a[\"\".concat(prefix, \"disabled\")] = !!disabled,\n            _a[\"\".concat(prefix, \"error\")] = state === 'error',\n            _a[\"\".concat(prefix, \"warning\")] = state === 'warning',\n            _a[\"\".concat(prefix, \"focus\")] = this.state.focus,\n            _a));\n    };\n    Base.prototype.getProps = function () {\n        var _a = this.props, placeholder = _a.placeholder, inputStyle = _a.inputStyle, disabled = _a.disabled, readOnly = _a.readOnly, cutString = _a.cutString, maxLength = _a.maxLength, name = _a.name, onCompositionStart = _a.onCompositionStart, onCompositionEnd = _a.onCompositionEnd;\n        var props = {\n            style: inputStyle,\n            placeholder: placeholder,\n            disabled: disabled,\n            readOnly: readOnly,\n            name: name,\n            maxLength: cutString ? maxLength : undefined,\n            value: this.state.value,\n            onChange: this.onChange.bind(this),\n            onBlur: this.onBlur.bind(this),\n            onFocus: this.onFocus.bind(this),\n            onCompositionStart: onCompositionStart,\n            onCompositionEnd: onCompositionEnd,\n        };\n        // fix accessibility：auto process status of aria disabled\n        if (disabled) {\n            props['aria-disabled'] = disabled;\n        }\n        return props;\n    };\n    Base.prototype.getInputNode = function () {\n        return this.inputRef;\n    };\n    Base.prototype.focus = function (start, end, preventScroll) {\n        if (preventScroll === void 0) { preventScroll = false; }\n        this.inputRef.focus({ preventScroll: preventScroll });\n        if (typeof start === 'number') {\n            this.inputRef.selectionStart = start;\n        }\n        if (typeof end === 'number') {\n            this.inputRef.selectionEnd = end;\n        }\n    };\n    Base.propTypes = __assign(__assign({}, ConfigProvider.propTypes), { value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), onChange: PropTypes.func, onKeyDown: PropTypes.func, disabled: PropTypes.bool, maxLength: PropTypes.number, showLimitHint: PropTypes.bool, cutString: PropTypes.bool, readOnly: PropTypes.bool, trim: PropTypes.bool, placeholder: PropTypes.string, onFocus: PropTypes.func, onBlur: PropTypes.func, getValueLength: PropTypes.func, inputStyle: PropTypes.object, className: PropTypes.string, style: PropTypes.object, htmlType: PropTypes.string, name: PropTypes.string, rtl: PropTypes.bool, state: PropTypes.oneOf(['error', 'loading', 'success', 'warning']), locale: PropTypes.object, isPreview: PropTypes.bool, renderPreview: PropTypes.func, size: PropTypes.oneOf(['small', 'medium', 'large']), composition: PropTypes.bool, onCompositionStart: PropTypes.func, onCompositionEnd: PropTypes.func });\n    Base.defaultProps = {\n        disabled: false,\n        prefix: 'next-',\n        size: 'medium',\n        maxLength: undefined,\n        showLimitHint: false,\n        cutString: true,\n        readOnly: false,\n        isPreview: false,\n        trim: false,\n        composition: false,\n        onFocus: func.noop,\n        onBlur: func.noop,\n        onChange: func.noop,\n        onKeyDown: func.noop,\n        getValueLength: func.noop,\n        onCompositionStart: func.noop,\n        onCompositionEnd: func.noop,\n        locale: zhCN.Input,\n    };\n    return Base;\n}(React.Component));\nexport default polyfill(Base);\n","import { __assign, __extends, __rest } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\n/**\n * Input.Group\n */\nvar Group = /** @class */ (function (_super) {\n    __extends(Group, _super);\n    function Group() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Group.prototype.render = function () {\n        var _a, _b, _c;\n        var _d = this.props, className = _d.className, style = _d.style, children = _d.children, prefix = _d.prefix, addonBefore = _d.addonBefore, addonAfter = _d.addonAfter, addonBeforeClassName = _d.addonBeforeClassName, addonAfterClassName = _d.addonAfterClassName, rtl = _d.rtl, disabled = _d.disabled, others = __rest(_d, [\"className\", \"style\", \"children\", \"prefix\", \"addonBefore\", \"addonAfter\", \"addonBeforeClassName\", \"addonAfterClassName\", \"rtl\", \"disabled\"]);\n        var cls = classNames((_a = {},\n            _a[\"\".concat(prefix, \"input-group\")] = true,\n            _a[\"\".concat(prefix, \"disabled\")] = disabled,\n            _a[className] = !!className,\n            _a));\n        var addonCls = \"\".concat(prefix, \"input-group-addon\");\n        var beforeCls = classNames(addonCls, (_b = {},\n            _b[\"\".concat(prefix, \"before\")] = true,\n            _b[addonBeforeClassName] = addonBeforeClassName,\n            _b));\n        var afterCls = classNames(addonCls, (_c = {},\n            _c[\"\".concat(prefix, \"after\")] = true,\n            _c[addonAfterClassName] = addonAfterClassName,\n            _c));\n        var before = addonBefore ? React.createElement(\"span\", { className: beforeCls }, addonBefore) : null;\n        var after = addonAfter ? React.createElement(\"span\", { className: afterCls }, addonAfter) : null;\n        return (React.createElement(\"span\", __assign({}, others, { \n            // @ts-expect-error span 上没有 disabled\n            disabled: disabled, dir: rtl ? 'rtl' : undefined, className: cls, style: style }),\n            before,\n            children,\n            after));\n    };\n    Group.displayName = 'Group';\n    Group.propTypes = {\n        prefix: PropTypes.string,\n        className: PropTypes.string,\n        style: PropTypes.object,\n        children: PropTypes.node,\n        addonBefore: PropTypes.node,\n        addonBeforeClassName: PropTypes.string,\n        addonAfter: PropTypes.node,\n        addonAfterClassName: PropTypes.string,\n        rtl: PropTypes.bool,\n    };\n    Group.defaultProps = {\n        prefix: 'next-',\n    };\n    return Group;\n}(React.Component));\nexport default ConfigProvider.config(Group);\n","import { __assign, __extends } from \"tslib\";\nimport React, { isValidElement, cloneElement, } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport { obj, func } from '../util';\nimport Base from './base';\nimport Group from './group';\n// preventDefault here can stop onBlur to keep focus state\nfunction preventDefault(e) {\n    e.preventDefault();\n}\n/** Input */\nvar Input = /** @class */ (function (_super) {\n    __extends(Input, _super);\n    function Input(props) {\n        var _this = _super.call(this, props) || this;\n        _this.handleKeyDown = function (e) {\n            if (e.keyCode === 13) {\n                _this.props.onPressEnter(e);\n            }\n            _this.onKeyDown(e);\n        };\n        var value;\n        if ('value' in props) {\n            value = props.value;\n        }\n        else {\n            value = props.defaultValue;\n        }\n        _this.state = {\n            value: typeof value === 'undefined' ? '' : value,\n        };\n        return _this;\n    }\n    // `Enter` was considered to be two chars in chrome , but one char in ie.\n    // so we make all `Enter` to be two chars\n    Input.prototype.getValueLength = function (value) {\n        var nv = \"\".concat(value);\n        var strLen = this.props.getValueLength(nv);\n        if (typeof strLen !== 'number') {\n            strLen = nv.length;\n        }\n        return strLen;\n    };\n    Input.prototype.renderControl = function () {\n        var _a;\n        var _this = this;\n        var _b = this.props, hasClear = _b.hasClear, readOnly = _b.readOnly, state = _b.state, prefix = _b.prefix, hint = _b.hint, extra = _b.extra, locale = _b.locale, disabled = _b.disabled, hoverShowClear = _b.hoverShowClear;\n        var lenWrap = this.renderLength();\n        var stateWrap = null;\n        if (state === 'success') {\n            stateWrap = React.createElement(Icon, { type: \"success-filling\", className: \"\".concat(prefix, \"input-success-icon\") });\n        }\n        else if (state === 'loading') {\n            stateWrap = React.createElement(Icon, { type: \"loading\", className: \"\".concat(prefix, \"input-loading-icon\") });\n        }\n        else if (state === 'warning') {\n            stateWrap = React.createElement(Icon, { type: \"warning\", className: \"\".concat(prefix, \"input-warning-icon\") });\n        }\n        var clearWrap = null;\n        // showClear 属性应该与 disable 属性为互斥状态\n        var showClear = hasClear && !readOnly && !!\"\".concat(this.state.value) && !disabled;\n        if (hint || showClear) {\n            var hintIcon = null;\n            if (hint) {\n                if (typeof hint === 'string') {\n                    hintIcon = React.createElement(Icon, { type: hint, className: \"\".concat(prefix, \"input-hint\") });\n                }\n                else if (isValidElement(hint)) {\n                    hintIcon = cloneElement(hint, {\n                        className: classNames(hint.props.className, \"\".concat(prefix, \"input-hint\")),\n                    });\n                }\n                else {\n                    hintIcon = hint;\n                }\n            }\n            else {\n                var cls = classNames((_a = {},\n                    _a[\"\".concat(prefix, \"input-hint\")] = true,\n                    _a[\"\".concat(prefix, \"input-clear-icon\")] = true,\n                    _a[\"\".concat(prefix, \"input-hover-show\")] = hoverShowClear,\n                    _a));\n                hintIcon = (React.createElement(Icon, { type: \"delete-filling\", role: \"button\", tabIndex: 0, className: cls, \"aria-label\": locale.clear, onClick: this.onClear.bind(this), onMouseDown: preventDefault, onKeyDown: this.handleKeyDownFromClear }));\n            }\n            clearWrap = (React.createElement(\"span\", { className: \"\".concat(prefix, \"input-hint-wrap\") },\n                hasClear && hint ? (React.createElement(Icon, { type: \"delete-filling\", role: \"button\", tabIndex: 0, className: \"\".concat(prefix, \"input-clear \").concat(prefix, \"input-clear-icon\"), \"aria-label\": locale.clear, onClick: this.onClear.bind(this), onMouseDown: preventDefault, onKeyDown: this.handleKeyDownFromClear })) : null,\n                hintIcon));\n        }\n        if (state === 'loading') {\n            clearWrap = null;\n        }\n        return clearWrap || lenWrap || stateWrap || extra ? (React.createElement(\"span\", { onClick: function () { return _this.focus(); }, className: \"\".concat(prefix, \"input-control\") },\n            clearWrap,\n            lenWrap,\n            stateWrap,\n            extra)) : null;\n    };\n    Input.prototype.renderLabel = function () {\n        var _a = this.props, label = _a.label, prefix = _a.prefix, id = _a.id;\n        return label ? (React.createElement(\"label\", { className: \"\".concat(prefix, \"input-label\"), htmlFor: id }, label)) : null;\n    };\n    Input.prototype.renderInner = function (inner, cls) {\n        return inner ? React.createElement(\"span\", { className: cls }, inner) : null;\n    };\n    Input.prototype.render = function () {\n        var _a, _b, _c, _d, _e, _f, _g;\n        var _h = this.props, size = _h.size, htmlType = _h.htmlType, htmlSize = _h.htmlSize, autoComplete = _h.autoComplete, autoFocus = _h.autoFocus, disabled = _h.disabled, style = _h.style, innerBefore = _h.innerBefore, innerAfter = _h.innerAfter, innerBeforeClassName = _h.innerBeforeClassName, innerAfterClassName = _h.innerAfterClassName, className = _h.className, hasBorder = _h.hasBorder, prefix = _h.prefix, isPreview = _h.isPreview, renderPreview = _h.renderPreview, addonBefore = _h.addonBefore, addonAfter = _h.addonAfter, addonTextBefore = _h.addonTextBefore, addonTextAfter = _h.addonTextAfter, inputRender = _h.inputRender, rtl = _h.rtl, composition = _h.composition;\n        var hasAddon = addonBefore || addonAfter || addonTextBefore || addonTextAfter;\n        var cls = classNames(this.getClass(), (_a = {},\n            _a[\"\".concat(prefix).concat(size)] = true,\n            _a[\"\".concat(prefix, \"hidden\")] = this.props.htmlType === 'hidden',\n            _a[\"\".concat(prefix, \"noborder\")] = !hasBorder || this.props.htmlType === 'file',\n            _a[\"\".concat(prefix, \"input-group-auto-width\")] = hasAddon,\n            _a[\"\".concat(prefix, \"disabled\")] = disabled,\n            _a[className] = !!className && !hasAddon,\n            _a));\n        var innerCls = \"\".concat(prefix, \"input-inner\");\n        var innerBeforeCls = classNames((_b = {},\n            _b[innerCls] = true,\n            _b[\"\".concat(prefix, \"before\")] = true,\n            _b[innerBeforeClassName] = innerBeforeClassName,\n            _b));\n        var innerAfterCls = classNames((_c = {},\n            _c[innerCls] = true,\n            _c[\"\".concat(prefix, \"after\")] = true,\n            _c[\"\".concat(prefix, \"input-inner-text\")] = typeof innerAfter === 'string',\n            _c[innerAfterClassName] = innerAfterClassName,\n            _c));\n        var previewCls = classNames((_d = {},\n            _d[\"\".concat(prefix, \"form-preview\")] = true,\n            _d[className] = !!className,\n            _d));\n        var props = this.getProps();\n        // custom data attributes are assigned to the top parent node\n        // data-类自定义数据属性分配到顶层 node 节点\n        var dataProps = obj.pickAttrsWith(this.props, 'data-');\n        // Custom props are transparently transmitted to the core input node by default\n        // 自定义属性默认透传到核心 node 节点：input\n        var others = obj.pickOthers(Object.assign({}, dataProps, Input.propTypes), this.props);\n        if (isPreview) {\n            var value = props.value;\n            var label = this.props.label;\n            if (typeof renderPreview === 'function') {\n                return (React.createElement(\"div\", __assign({}, others, { className: previewCls }), renderPreview(value, this.props)));\n            }\n            return (React.createElement(\"div\", __assign({}, others, { className: previewCls }),\n                addonBefore || addonTextBefore,\n                label,\n                innerBefore,\n                value,\n                innerAfter,\n                addonAfter || addonTextAfter));\n        }\n        var compositionProps = {};\n        if (composition) {\n            compositionProps.onCompositionStart = this.handleCompositionStart;\n            compositionProps.onCompositionEnd = this.handleCompositionEnd;\n        }\n        var inputEl = (React.createElement(\"input\", __assign({}, others, props, compositionProps, { height: \"100%\", type: htmlType, \n            // @ts-expect-error size 应为 number\n            size: htmlSize, autoFocus: autoFocus, autoComplete: autoComplete, onKeyDown: this.handleKeyDown, ref: this.saveRef })));\n        var inputWrap = (React.createElement(\"span\", __assign({}, dataProps, { dir: rtl ? 'rtl' : undefined, className: cls, style: hasAddon ? undefined : style }),\n            this.renderLabel(),\n            this.renderInner(innerBefore, innerBeforeCls),\n            inputRender(inputEl),\n            this.renderInner(innerAfter, innerAfterCls),\n            this.renderControl()));\n        var groupCls = classNames((_e = {},\n            _e[\"\".concat(prefix, \"input-group-text\")] = true,\n            _e[\"\".concat(prefix).concat(size)] = !!size,\n            _e[\"\".concat(prefix, \"disabled\")] = disabled,\n            _e));\n        var addonBeforeCls = classNames((_f = {},\n            _f[groupCls] = addonTextBefore,\n            _f));\n        var addonAfterCls = classNames((_g = {},\n            _g[groupCls] = addonTextAfter,\n            _g));\n        if (hasAddon) {\n            return (React.createElement(Group, __assign({}, dataProps, { prefix: prefix, className: className, style: style, disabled: disabled, addonBefore: addonBefore || addonTextBefore, addonBeforeClassName: addonBeforeCls, addonAfter: addonAfter || addonTextAfter, addonAfterClassName: addonAfterCls }), inputWrap));\n        }\n        return inputWrap;\n    };\n    Input.displayName = 'Input';\n    Input.getDerivedStateFromProps = Base.getDerivedStateFromProps;\n    Input.propTypes = __assign(__assign({}, Base.propTypes), { label: PropTypes.node, hasClear: PropTypes.bool, hasBorder: PropTypes.bool, state: PropTypes.oneOf(['error', 'loading', 'success', 'warning']), onPressEnter: PropTypes.func, htmlType: PropTypes.string, htmlSize: PropTypes.string, hint: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), innerBefore: PropTypes.node, innerAfter: PropTypes.node, addonBefore: PropTypes.node, addonAfter: PropTypes.node, addonTextBefore: PropTypes.node, addonTextAfter: PropTypes.node, autoComplete: PropTypes.string, autoFocus: PropTypes.bool, inputRender: PropTypes.func, extra: PropTypes.node, innerBeforeClassName: PropTypes.string, innerAfterClassName: PropTypes.string, isPreview: PropTypes.bool, renderPreview: PropTypes.func, hoverShowClear: PropTypes.bool });\n    Input.defaultProps = __assign(__assign({}, Base.defaultProps), { autoComplete: 'off', hasBorder: true, isPreview: false, hoverShowClear: false, onPressEnter: func.noop, inputRender: function (el) { return el; } });\n    return Input;\n}(Base));\nexport default Input;\n","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Input from './input';\nimport Icon from '../icon/index';\nfunction preventDefault(e) {\n    e.preventDefault();\n}\nvar Password = /** @class */ (function (_super) {\n    __extends(Password, _super);\n    function Password() {\n        var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n        _this.state = {\n            hint: 'eye-close',\n            htmlType: 'password',\n        };\n        _this.toggleEye = function (e) {\n            e.preventDefault();\n            if (_this.props.disabled)\n                return;\n            var eyeClose = _this.state.hint === 'eye';\n            _this.setState({\n                hint: eyeClose ? 'eye-close' : 'eye',\n                htmlType: eyeClose || !_this.props.showToggle ? 'password' : 'text',\n            });\n        };\n        return _this;\n    }\n    Password.prototype.render = function () {\n        var _a = this.props, showToggle = _a.showToggle, others = __rest(_a, [\"showToggle\"]);\n        var _b = this.state, hint = _b.hint, htmlType = _b.htmlType;\n        var extra = showToggle ? (React.createElement(Icon, { type: hint, onClick: this.toggleEye, onMouseDown: preventDefault })) : null;\n        return React.createElement(Input, __assign({}, others, { extra: extra, htmlType: htmlType }));\n    };\n    Password.displayName = 'Password';\n    Password.getDerivedStateFromProps = Input.getDerivedStateFromProps;\n    Password.propTypes = __assign(__assign({}, Input.propTypes), { showToggle: PropTypes.bool });\n    Password.defaultProps = __assign(__assign({}, Input.defaultProps), { showToggle: true });\n    return Password;\n}(Input));\nexport default Password;\n","import { __assign, __extends } from \"tslib\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport zhCN from '../locale/zh-cn';\nimport { obj, env } from '../util';\nimport Base from './base';\nfunction onNextFrame(cb) {\n    if (window.requestAnimationFrame) {\n        return window.requestAnimationFrame(cb);\n    }\n    return window.setTimeout(cb, 1);\n}\nfunction clearNextFrameAction(nextFrameId) {\n    if (window.cancelAnimationFrame) {\n        window.cancelAnimationFrame(nextFrameId);\n    }\n    else {\n        window.clearTimeout(nextFrameId);\n    }\n}\n// safari in mac\nvar isMacSafari = typeof navigator !== 'undefined' && navigator && navigator.userAgent\n    ? navigator.userAgent.match(/^((?!chrome|android|windows).)*safari/i)\n    : false;\nvar hiddenStyle = {\n    visibility: 'hidden',\n    position: 'absolute',\n    zIndex: '-1000',\n    top: '-1000px',\n    overflowY: 'hidden',\n    left: 0,\n    right: 0,\n};\n/**\n * Input.TextArea\n * @order 2\n */\nvar TextArea = /** @class */ (function (_super) {\n    __extends(TextArea, _super);\n    function TextArea(props) {\n        var _this = _super.call(this, props) || this;\n        _this._resizeTextArea = function (value) {\n            if (_this.nextFrameActionId) {\n                clearNextFrameAction(_this.nextFrameActionId);\n            }\n            _this.nextFrameActionId = onNextFrame(function () {\n                var height = _this._getHeight(value);\n                var maxHeight = _this.state.maxHeight ? _this.state.maxHeight : Infinity;\n                _this.setState({\n                    height: _this._getHeight(value),\n                    overflowY: height <= maxHeight ? 'hidden' : undefined,\n                });\n            });\n        };\n        var value;\n        if ('value' in props) {\n            value = props.value;\n        }\n        else {\n            value = props.defaultValue;\n        }\n        _this.state = {\n            value: typeof value === 'undefined' || value === null ? '' : value,\n        };\n        return _this;\n    }\n    TextArea.prototype.componentDidMount = function () {\n        var autoHeight = this.props.autoHeight;\n        if (autoHeight) {\n            if (typeof autoHeight === 'object') {\n                this.setState(this._getMinMaxHeight(autoHeight, this.state.value));\n            }\n            else {\n                this.setState({\n                    height: this._getHeight(this.state.value),\n                    overflowY: 'hidden',\n                });\n            }\n        }\n    };\n    TextArea.prototype.componentDidUpdate = function (prevProps) {\n        if (this.props.autoHeight &&\n            (this.props.value !== prevProps.value || this.props.isPreview !== prevProps.isPreview)) {\n            this._resizeTextArea(this.props.value);\n        }\n    };\n    TextArea.prototype._getMinMaxHeight = function (_a, value) {\n        var minRows = _a.minRows, maxRows = _a.maxRows;\n        var node = ReactDOM.findDOMNode(this.helpRef);\n        if (!node) {\n            return {};\n        }\n        // @ts-expect-error minRows 应转为 string\n        node.setAttribute('rows', minRows);\n        var minHeight = node.clientHeight;\n        // @ts-expect-error maxRows 应转为 string\n        node.setAttribute('rows', maxRows);\n        var maxHeight = node.clientHeight;\n        node.setAttribute('rows', '1');\n        // @ts-expect-error value 应转为 string\n        var height = this._getHeight(value);\n        return {\n            minHeight: minHeight,\n            maxHeight: maxHeight,\n            height: height,\n            overflowY: height <= maxHeight ? 'hidden' : undefined,\n        };\n    };\n    TextArea.prototype._getHeight = function (value) {\n        var node = ReactDOM.findDOMNode(this.helpRef);\n        if (!node) {\n            return 0;\n        }\n        // @ts-expect-error value 应转为 string\n        node.value = value;\n        return node.scrollHeight;\n    };\n    TextArea.prototype.ieHack = function (value) {\n        // Fix: textarea dit not support maxLength in ie9\n        if (env.ieVersion === 9 && this.props.maxLength) {\n            var maxLength = parseInt(this.props.maxLength);\n            // @ts-expect-error value 应转为 string\n            var newValue = value;\n            var len = this.getValueLength(newValue);\n            if (len > maxLength && this.props.cutString) {\n                newValue = newValue.replace(/\\n/g, '\\n\\n');\n                newValue = newValue.substr(0, maxLength);\n                newValue = newValue.replace(/\\n\\n/g, '\\n');\n            }\n        }\n        this.props.autoHeight && this._resizeTextArea(value);\n        return value;\n    };\n    /**\n     * value.length !== maxLength  in ie/safari(mac) while value has `Enter`\n     * about maxLength compute: `Enter` was considered to be one char(\\\\n) in chrome , but two chars(\\\\r\\\\n) in ie/safari(mac).\n     * so while value has `Enter`, we should let display length + 1\n     */\n    TextArea.prototype.getValueLength = function (value) {\n        var _a = this.props, maxLength = _a.maxLength, cutString = _a.cutString;\n        var nv = \"\".concat(value);\n        var strLen = this.props.getValueLength(nv);\n        if (typeof strLen !== 'number') {\n            strLen = nv.length;\n        }\n        /* istanbul ignore if */\n        if (env.ieVersion || isMacSafari) {\n            strLen = strLen + nv.split('\\n').length - 1;\n            if (strLen > maxLength && cutString) {\n                strLen = maxLength;\n            }\n        }\n        return strLen;\n    };\n    TextArea.prototype.saveTextAreaRef = function (textArea) {\n        this.inputRef = textArea;\n    };\n    TextArea.prototype.saveHelpRef = function (ref) {\n        this.helpRef = ref;\n    };\n    TextArea.prototype.renderClear = function () {\n        var _a;\n        var _b = this.props, hasClear = _b.hasClear, readOnly = _b.readOnly, state = _b.state, prefix = _b.prefix, disabled = _b.disabled, locale = _b.locale;\n        var clearWrap = null;\n        // showClear 属性应该与 disable 属性为互斥状态\n        var showClear = hasClear && !readOnly && !!\"\".concat(this.state.value) && !disabled;\n        var cls = classNames((_a = {},\n            _a[\"\".concat(prefix, \"input-textarea-clear\")] = true,\n            _a));\n        clearWrap = showClear ? (React.createElement(\"span\", { className: cls, onClick: this.onClear.bind(this), onKeyDown: this.handleKeyDownFromClear },\n            ' ',\n            locale.clear)) : null;\n        if (state === 'loading') {\n            clearWrap = null;\n        }\n        return clearWrap;\n    };\n    TextArea.prototype.renderControl = function () {\n        var _this = this;\n        var prefix = this.props.prefix;\n        var lenWrap = this.renderLength();\n        var clearText = this.renderClear();\n        var isShowLine = Boolean(lenWrap && clearText);\n        var cls = classNames(\"\".concat(prefix, \"input-control\"), \"\".concat(prefix, \"input-textarea-control\"));\n        return lenWrap || clearText ? (React.createElement(\"span\", { onClick: function () { return _this.focus(); }, className: cls },\n            lenWrap,\n            isShowLine && React.createElement(\"span\", { className: \"\".concat(prefix, \"input-textarea-control-line\") }),\n            clearText)) : null;\n    };\n    TextArea.prototype.render = function () {\n        var _a, _b;\n        var _c = this.props, rows = _c.rows, style = _c.style, className = _c.className, autoHeight = _c.autoHeight, isPreview = _c.isPreview, renderPreview = _c.renderPreview, prefix = _c.prefix, rtl = _c.rtl, hasBorder = _c.hasBorder, size = _c.size, composition = _c.composition;\n        var cls = classNames(this.getClass(), (_a = {},\n            _a[\"\".concat(prefix).concat(size)] = size === 'large' || size === 'small',\n            _a[\"\".concat(prefix, \"input-textarea\")] = true,\n            _a[\"\".concat(prefix, \"noborder\")] = !hasBorder,\n            _a[className] = !!className,\n            _a));\n        // FIXME textarea 里还可以是 null，导致这里需要对类型做特殊处理，实际上 null 并不能传给原生的 textarea\n        var props = this.getProps();\n        // custom data attributes are assigned to the top parent node\n        // data-类自定义数据属性分配到顶层 node 节点\n        var dataProps = obj.pickAttrsWith(this.props, 'data-');\n        // Custom props are transparently transmitted to the core input node by default\n        // 自定义属性默认透传到核心 node 节点：input\n        var others = obj.pickOthers(Object.assign({}, dataProps, TextArea.propTypes), this.props);\n        var textareStyle = __assign(__assign({}, props.style), { height: this.state.height, minHeight: this.state.minHeight, maxHeight: this.state.maxHeight, overflowY: this.state.overflowY });\n        var previewCls = classNames((_b = {},\n            _b[\"\".concat(prefix, \"input-textarea\")] = true,\n            _b[\"\".concat(prefix, \"form-preview\")] = true,\n            _b[className] = !!className,\n            _b));\n        var wrapStyle = autoHeight\n            ? __assign(__assign({}, style), { position: 'relative' }) : style;\n        if (isPreview) {\n            var value = props.value;\n            if ('renderPreview' in this.props) {\n                return (React.createElement(\"div\", __assign({}, others, { className: previewCls }), renderPreview(value, this.props)));\n            }\n            return (React.createElement(\"div\", __assign({}, others, { className: previewCls }), value.split('\\n').map(function (data, i) { return (React.createElement(\"p\", { key: \"p-\".concat(i) }, data)); })));\n        }\n        var compositionProps = {};\n        if (composition) {\n            compositionProps.onCompositionStart = this.handleCompositionStart;\n            compositionProps.onCompositionEnd = this.handleCompositionEnd;\n        }\n        return (React.createElement(\"span\", __assign({ className: cls, style: wrapStyle, dir: rtl ? 'rtl' : undefined }, dataProps),\n            React.createElement(\"textarea\", __assign({}, others, props, compositionProps, { \"data-real\": true, rows: rows, style: textareStyle, ref: this.saveRef.bind(this), onKeyDown: this.onKeyDown.bind(this) })),\n            autoHeight ? (React.createElement(\"textarea\", { \"data-fake\": true, ref: this.saveHelpRef.bind(this), style: __assign(__assign({}, props.style), hiddenStyle), rows: 1 })) : null,\n            this.renderControl()));\n    };\n    TextArea.displayName = 'TextArea';\n    TextArea.getDerivedStateFromProps = Base.getDerivedStateFromProps;\n    TextArea.propTypes = __assign(__assign({}, Base.propTypes), { hasBorder: PropTypes.bool, state: PropTypes.oneOf(['error', 'warning']), autoHeight: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]), rows: PropTypes.number, isPreview: PropTypes.bool, renderPreview: PropTypes.func, locale: PropTypes.object });\n    TextArea.defaultProps = __assign(__assign({}, Base.defaultProps), { hasBorder: true, isPreview: false, rows: 4, autoHeight: false, locale: zhCN.TextArea });\n    return TextArea;\n}(Base));\nexport default TextArea;\n","import { __assign, __rest } from \"tslib\";\nimport ConfigProvider from '../config-provider';\nimport Input from './input';\nimport Password from './password';\nimport TextArea from './textarea';\nimport Group from './group';\nimport { assignSubComponent } from '../util/component';\nvar InputWithSub = assignSubComponent(Input, {\n    Password: ConfigProvider.config(Password, {\n        exportNames: ['getInputNode', 'focus'],\n        transform: function (props, deprecated) {\n            if ('hasLimitHint' in props) {\n                deprecated('hasLimitHint', 'showLimitHint', 'Input');\n                var hasLimitHint = props.hasLimitHint, others = __rest(props, [\"hasLimitHint\"]);\n                props = __assign({ showLimitHint: hasLimitHint }, others);\n            }\n            return props;\n        },\n    }),\n    TextArea: ConfigProvider.config(TextArea, {\n        exportNames: ['getInputNode', 'focus'],\n        transform: function (props, deprecated) {\n            if ('hasLimitHint' in props) {\n                deprecated('hasLimitHint', 'showLimitHint', 'Input');\n                var hasLimitHint = props.hasLimitHint, others = __rest(props, [\"hasLimitHint\"]);\n                props = __assign({ showLimitHint: hasLimitHint }, others);\n            }\n            return props;\n        },\n    }),\n    Group: Group,\n});\nexport default ConfigProvider.config(InputWithSub, {\n    exportNames: ['getInputNode', 'focus'],\n    transform: function (props, deprecated) {\n        if ('hasLimitHint' in props) {\n            deprecated('hasLimitHint', 'showLimitHint', 'Input');\n            var hasLimitHint = props.hasLimitHint, others = __rest(props, [\"hasLimitHint\"]);\n            props = __assign({ showLimitHint: hasLimitHint }, others);\n        }\n        return props;\n    },\n});\n","import { __assign, __read, __rest, __spreadArray } from \"tslib\";\nimport { Children } from 'react';\n/**\n * util module\n */\n/**\n * 是否是单选模式\n * @param mode - 模式\n * @returns is single mode\n */\nexport function isSingle(mode) {\n    return !mode || mode === 'single';\n}\n/**\n * 在 Select 中，认为 null 和 undefined 都是空值\n * @param n - any object\n * @returns n is null or undefined\n */\nexport function isNull(n) {\n    return n === null || n === undefined;\n}\n/**\n * 将字符串中的正则表达式关键字符添加转义\n * @param str - 字符串\n * @returns\n */\nexport function escapeForReg(str) {\n    return str.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n/**\n * filter by key\n * @param key - filter key\n * @param item - item object\n * @returns it's filtered\n */\nexport function filter(key, item) {\n    var _key = escapeForReg(\"\".concat(key));\n    var regExp = new RegExp(\"(\".concat(_key, \")\"), 'ig');\n    return regExp.test(\"\".concat(item.value)) || regExp.test(\"\".concat(item.label));\n}\n/**\n * loop map\n * @param dataSource - 数据源\n * @param callback - 回调\n */\nexport function loopMap(dataSource, callback) {\n    var result = [];\n    dataSource.forEach(function (option) {\n        if (option.children) {\n            var children = loopMap(option.children, callback);\n            result.push(__assign(__assign({}, option), { children: children }));\n        }\n        else {\n            var tmp = callback(option);\n            tmp && result.push(tmp);\n        }\n    });\n    return result;\n}\n/**\n * Parse dataSource from MenuItem\n * @param children - children\n * @param deep - recursion deep level\n */\nexport function parseDataSourceFromChildren(children, deep) {\n    if (deep === void 0) { deep = 0; }\n    var source = [];\n    Children.forEach(children, function (child, index) {\n        if (!child) {\n            return;\n        }\n        var _a = child, type = _a.type, childProps = _a.props;\n        var item2 = { deep: deep };\n        var isOption = false;\n        var isOptionGroup = false;\n        if ((typeof type === 'function' && type._typeMark === 'next_select_option') ||\n            type === 'option') {\n            isOption = true;\n        }\n        if ((typeof type === 'function' && type._typeMark === 'next_select_option_group') ||\n            type === 'optgroup') {\n            isOptionGroup = true;\n        }\n        if (!isOption && !isOptionGroup) {\n            return;\n        }\n        if (isOption) {\n            // option\n            // If children is a string, it can be used as value\n            var optionTypeChildProps = childProps;\n            var isStrChild = typeof optionTypeChildProps.children === 'string';\n            // value > key > string children > index\n            item2.value =\n                'value' in optionTypeChildProps\n                    ? optionTypeChildProps.value\n                    : 'key' in optionTypeChildProps\n                        ? optionTypeChildProps.key\n                        : isStrChild\n                            ? optionTypeChildProps.children\n                            : \"\".concat(index);\n            item2.label =\n                optionTypeChildProps.label || optionTypeChildProps.children || \"\".concat(item2.value);\n            if ('title' in optionTypeChildProps) {\n                item2.title = optionTypeChildProps.title;\n            }\n            optionTypeChildProps.disabled === true && (item2.disabled = true);\n            // You can put your extra data here, and use it in `itemRender` or `labelRender`\n            Object.assign(item2, optionTypeChildProps['data-extra'] || {});\n        }\n        else if (isOptionGroup && deep < 1) {\n            // option group\n            item2.label = childProps.label || 'Group';\n            // parse children nodes\n            item2.children = parseDataSourceFromChildren(childProps.children, deep + 1);\n        }\n        source.push(item2);\n    });\n    return source;\n}\nexport function isObjectDataSourceItem(item) {\n    return !(/string|boolean|number/.test(typeof item) || item === null || item === undefined);\n}\n/**\n * Normalize dataSource\n * @param dataSource - dataSource\n * @param deep -  recursion deep level\n * ----\n * value priority: value \\> 'index'\n * label priority: label \\> 'value' \\> 'index'\n * disabled: disabled === true\n */\nexport function normalizeDataSource(dataSource, deep, showDataSourceChildren) {\n    if (deep === void 0) { deep = 0; }\n    if (showDataSourceChildren === void 0) { showDataSourceChildren = true; }\n    var source = [];\n    dataSource.forEach(function (item, index) {\n        // enable array of basic type\n        if (!isObjectDataSourceItem(item)) {\n            item = { label: \"\".concat(item), value: item };\n        }\n        // filter off addon item\n        if (item && item.__isAddon) {\n            return;\n        }\n        var item2 = { deep: deep };\n        // deep < 1: only 2 level allowed\n        if (Array.isArray(item.children) && deep < 1 && showDataSourceChildren) {\n            // handle group\n            item2.label = item.label || item.value || \"Group \".concat(index);\n            // parse children\n            item2.children = normalizeDataSource(item.children, deep + 1);\n        }\n        else {\n            var value = item.value, label = item.label, disabled = item.disabled, title = item.title, others = __rest(item, [\"value\", \"label\", \"disabled\", \"title\"]);\n            // undefined 认为是没传取 index 值替代\n            item2.value = typeof value !== 'undefined' ? value : \"\".concat(index);\n            item2.label = label || \"\".concat(item2.value);\n            if ('title' in item) {\n                item2.title = title;\n            }\n            disabled === true && (item2.disabled = true);\n            Object.assign(item2, others);\n        }\n        source.push(item2);\n    });\n    return source;\n}\n/**\n * Get flatten dataSource\n * @param dataSource - structured dataSource\n */\nexport function flattingDataSource(dataSource) {\n    var source = [];\n    dataSource.forEach(function (item) {\n        if (Array.isArray(item.children)) {\n            source.push.apply(source, __spreadArray([], __read(flattingDataSource(item.children)), false));\n        }\n        else {\n            source.push(item);\n        }\n    });\n    return source;\n}\nexport function filterDataSource(dataSource, key, filter, addonKey) {\n    if (!Array.isArray(dataSource)) {\n        return [];\n    }\n    if (typeof key === 'undefined' || key === null) {\n        return [].concat(dataSource);\n    }\n    var addKey = true;\n    var menuDataSource = loopMap(dataSource, function (option) {\n        if (key === \"\".concat(option.value)) {\n            addKey = false;\n        }\n        return filter(key, option) && !option.__isAddon && option;\n    });\n    // if key not in menuDataSource, add key to dataSource\n    if (addonKey && key && addKey) {\n        menuDataSource.unshift({\n            value: key,\n            label: key,\n            __isAddon: true,\n        });\n    }\n    return menuDataSource;\n}\nfunction getKeyItemByValue(value, valueMap) {\n    var item;\n    if (typeof value === 'object') {\n        if (value.hasOwnProperty('value')) {\n            item = value;\n        }\n        else {\n            item = __assign({ value: '' }, value);\n        }\n    }\n    else {\n        item = valueMap[\"\".concat(value)] || {\n            value: value,\n            label: value,\n        };\n    }\n    return item;\n}\n/**\n * compute valueDataSource by new value\n * @param value - 数据\n * @param mapValueDS - 上个 value 的缓存数据 value =\\> \\{value,label\\} 的映射关系表\n * @param mapMenuDS - 通过 dataSource 建立 value =\\> \\{value,label\\} 的映射关系表\n * @returns value: [value]; valueDS: [\\{value,label\\}]; mapValueDS: \\{value: \\{value,label\\}\\}\n */\nexport function getValueDataSource(value, mapValueDS, mapMenuDS) {\n    var _a;\n    if (isNull(value)) {\n        return {};\n    }\n    var newValue = [];\n    var newValueDS = [];\n    var newMapValueDS = {};\n    var _newMapDS = Object.assign({}, mapValueDS, mapMenuDS);\n    if (Array.isArray(value)) {\n        value.forEach(function (v) {\n            var item = getKeyItemByValue(v, _newMapDS);\n            newValueDS.push(item);\n            newMapValueDS[\"\".concat(item.value)] = item;\n            newValue.push(item.value);\n        });\n        return {\n            value: newValue, // [value]\n            valueDS: newValueDS, // [{value,label}]\n            mapValueDS: newMapValueDS, // {value: {value,label}}\n        };\n    }\n    else {\n        var item = getKeyItemByValue(value, _newMapDS);\n        return {\n            value: item.value,\n            valueDS: item,\n            mapValueDS: (_a = {},\n                _a[\"\".concat(item.value)] = item,\n                _a),\n        };\n    }\n}\n/**\n * Get Selected key from value\n * @param value - structured dataSource\n * @returns\n */\nexport function valueToSelectKey(value) {\n    var val;\n    if (typeof value === 'object' && value.hasOwnProperty('value')) {\n        val = value.value;\n    }\n    else {\n        val = value;\n    }\n    return \"\".concat(val);\n}\n","import { __assign } from \"tslib\";\nimport { filter, parseDataSourceFromChildren, normalizeDataSource, flattingDataSource, filterDataSource, } from './util';\n/**\n * manage dataSource for menu list\n */\nvar DataStore = /** @class */ (function () {\n    function DataStore(options) {\n        this.options = __assign({ filter: filter, key: undefined, addonKey: false, filterLocal: true, showDataSourceChildren: true }, options);\n        // origin data\n        this.dataSource = [];\n        // current data for menu display\n        this.menuDataSource = [];\n        // key=>value map for menuDataSource\n        this.mapDataSource = {};\n        // current data can be select (not disabled) on menu\n        this.enabledDataSource = [];\n        this.flattenDataSource = [];\n    }\n    DataStore.prototype.setOptions = function (options) {\n        Object.assign(this.options, options);\n    };\n    DataStore.prototype.updateByDS = function (dataSource, isChildren) {\n        if (isChildren === void 0) { isChildren = false; }\n        this.dataSource = isChildren\n            ? parseDataSourceFromChildren(dataSource)\n            : normalizeDataSource(dataSource, 0, this.options.showDataSourceChildren);\n        return this.updateAll();\n    };\n    DataStore.prototype.updateByKey = function (key) {\n        if (key === this.options.key) {\n            return this.getMenuDS();\n        }\n        this.options.key = key;\n        return this.updateAll();\n    };\n    DataStore.prototype.getOriginDS = function () {\n        return this.dataSource;\n    };\n    DataStore.prototype.getMenuDS = function () {\n        return this.menuDataSource;\n    };\n    DataStore.prototype.getFlattenDS = function () {\n        return this.flattenDataSource;\n    };\n    DataStore.prototype.getEnableDS = function () {\n        return this.enabledDataSource;\n    };\n    DataStore.prototype.getMapDS = function () {\n        return this.mapDataSource;\n    };\n    DataStore.prototype.updateAll = function () {\n        var _this = this;\n        var _a = this.options, key = _a.key, filter = _a.filter, filterLocal = _a.filterLocal, showDataSourceChildren = _a.showDataSourceChildren;\n        this.menuDataSource = filterDataSource(this.dataSource, filterLocal ? key : '', filter, this.options.addonKey);\n        this.flattenDataSource = showDataSourceChildren\n            ? flattingDataSource(this.menuDataSource)\n            : this.menuDataSource;\n        this.mapDataSource = {};\n        this.flattenDataSource.forEach(function (item) {\n            _this.mapDataSource[\"\".concat(item.value)] = item;\n        });\n        this.enabledDataSource = this.flattenDataSource.filter(function (item) { return !item.disabled; });\n        return this.menuDataSource;\n    };\n    return DataStore;\n}());\nexport default DataStore;\n","import { __extends } from \"tslib\";\nimport PropTypes from 'prop-types';\nimport React, { Component, Children, } from 'react';\nimport cx from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { findDOMNode } from 'react-dom';\nimport { events } from '../util';\nvar NOOP = function () { };\nvar MAX_SYNC_UPDATES = 40;\nvar isEqualSubset = function (a, b) {\n    for (var key in b) {\n        if (a[key] !== b[key]) {\n            return false;\n        }\n    }\n    return true;\n};\nvar getOffset = function (el) {\n    var offset = el.clientLeft || 0;\n    do {\n        offset += el.offsetTop || 0;\n        el = el.offsetParent;\n    } while (el);\n    return offset;\n};\nvar constrain = function (from, size, _a) {\n    var children = _a.children, minSize = _a.minSize;\n    var length = Children.count(children);\n    size = Math.max(size, minSize);\n    if (size > length) {\n        size = length;\n    }\n    from = from ? Math.max(Math.min(from, length - size), 0) : 0;\n    return { from: from, size: size };\n};\n/** VirtualList */\nvar VirtualList = /** @class */ (function (_super) {\n    __extends(VirtualList, _super);\n    function VirtualList(props) {\n        var _this = _super.call(this, props) || this;\n        var jumpIndex = props.jumpIndex;\n        var _a = constrain(jumpIndex, 0, props), from = _a.from, size = _a.size;\n        _this.state = { from: from, size: size };\n        _this.cache = {};\n        _this.cacheAdd = {};\n        _this.scrollTo = _this.scrollTo.bind(_this);\n        _this.cachedScroll = null;\n        _this.unstable = false;\n        _this.updateCounter = 0;\n        return _this;\n    }\n    VirtualList.getDerivedStateFromProps = function (nextProps, prevState) {\n        var from = prevState.from, size = prevState.size;\n        return constrain(from, size, nextProps);\n    };\n    VirtualList.prototype.componentDidMount = function () {\n        var jumpIndex = this.props.jumpIndex;\n        this.updateFrameAndClearCache = this.updateFrameAndClearCache.bind(this);\n        events.on(window, 'resize', this.updateFrameAndClearCache);\n        this.updateFrame(this.scrollTo.bind(this, jumpIndex));\n    };\n    VirtualList.prototype.componentDidUpdate = function (prevProps) {\n        var _this = this;\n        var oldIndex = prevProps.jumpIndex;\n        var newIndex = this.props.jumpIndex;\n        if (oldIndex !== newIndex) {\n            this.updateFrame(this.scrollTo.bind(this, newIndex));\n        }\n        // If the list has reached an unstable state, prevent an infinite loop.\n        if (this.unstable) {\n            return;\n        }\n        if (++this.updateCounter > MAX_SYNC_UPDATES) {\n            this.unstable = true;\n        }\n        if (!this.updateCounterTimeoutId) {\n            this.updateCounterTimeoutId = window.setTimeout(function () {\n                _this.updateCounter = 0;\n                delete _this.updateCounterTimeoutId;\n            }, 0);\n        }\n        this.updateFrame();\n    };\n    VirtualList.prototype.componentWillUnmount = function () {\n        events.off(window, 'resize', this.updateFrameAndClearCache);\n        events.off(this.scrollParent, 'scroll', this.updateFrameAndClearCache);\n        events.off(this.scrollParent, 'mousewheel', NOOP);\n    };\n    VirtualList.prototype.maybeSetState = function (b, cb) {\n        if (isEqualSubset(this.state, b)) {\n            return cb();\n        }\n        this.setState(b, cb);\n    };\n    VirtualList.prototype.getEl = function () {\n        return this.el || this.items || {};\n    };\n    VirtualList.prototype.getScrollParent = function () {\n        var el = this.getEl();\n        el = el.parentElement;\n        switch (window.getComputedStyle(el).overflowY) {\n            case 'auto':\n            case 'scroll':\n            case 'overlay':\n            case 'visible':\n                return el;\n        }\n        return window;\n    };\n    VirtualList.prototype.getScroll = function () {\n        // Cache scroll position as this causes a forced synchronous layout.\n        // if (typeof this.cachedScroll === 'number') {\n        //     return this.cachedScroll;\n        // }\n        var scrollParent = this.scrollParent;\n        var scrollKey = 'scrollTop';\n        var actual = scrollParent === window\n            ? // Firefox always returns document.body[scrollKey] as 0 and Chrome/Safari\n                // always return document.documentElement[scrollKey] as 0, so take\n                // whichever has a value.\n                document.body[scrollKey] || document.documentElement[scrollKey]\n            : scrollParent[scrollKey];\n        var max = this.getScrollSize() - this.getViewportSize();\n        var scroll = Math.max(0, Math.min(actual, max));\n        var el = this.getEl();\n        this.cachedScroll = getOffset(scrollParent) + scroll - getOffset(el);\n        return this.cachedScroll;\n    };\n    VirtualList.prototype.setScroll = function (offset) {\n        var scrollParent = this.scrollParent;\n        offset += getOffset(this.getEl());\n        if (scrollParent === window) {\n            return window.scrollTo(0, offset);\n        }\n        offset -= getOffset(this.scrollParent);\n        scrollParent.scrollTop = offset;\n    };\n    VirtualList.prototype.getViewportSize = function () {\n        var scrollParent = this.scrollParent;\n        return scrollParent === window\n            ? window.innerHeight\n            : scrollParent.clientHeight;\n    };\n    VirtualList.prototype.getScrollSize = function () {\n        var scrollParent = this.scrollParent;\n        var body = document.body, documentElement = document.documentElement;\n        var key = 'scrollHeight';\n        return scrollParent === window\n            ? Math.max(body[key], documentElement[key])\n            : scrollParent[key];\n    };\n    VirtualList.prototype.getStartAndEnd = function (threshold) {\n        if (threshold === void 0) { threshold = this.props.threshold; }\n        var scroll = this.getScroll();\n        var trueScroll = scroll;\n        var start = Math.max(0, trueScroll - threshold);\n        var end = trueScroll + this.getViewportSize() + threshold;\n        return { start: start, end: end };\n    };\n    // Called by 'scroll' and 'resize' events, clears scroll position cache.\n    VirtualList.prototype.updateFrameAndClearCache = function (cb) {\n        this.cachedScroll = null;\n        return this.updateFrame(cb);\n    };\n    VirtualList.prototype.updateFrame = function (cb) {\n        this.updateScrollParent();\n        if (typeof cb !== 'function') {\n            cb = NOOP;\n        }\n        return this.updateVariableFrame(cb);\n    };\n    VirtualList.prototype.updateScrollParent = function () {\n        var prev = this.scrollParent;\n        this.scrollParent = this.getScrollParent();\n        if (prev === this.scrollParent) {\n            return;\n        }\n        if (prev) {\n            events.off(prev, 'scroll', this.updateFrameAndClearCache);\n            events.off(prev, 'mousewheel', NOOP);\n        }\n        events.on(this.scrollParent, 'scroll', this.updateFrameAndClearCache);\n        events.on(this.scrollParent, 'mousewheel', NOOP);\n        // You have to attach mousewheel listener to the scrollable element.\n        // Just an empty listener. After that onscroll events will be fired synchronously.\n    };\n    VirtualList.prototype.updateVariableFrame = function (cb) {\n        if (!this.props.itemSizeGetter) {\n            this.cacheSizes();\n        }\n        var _a = this.getStartAndEnd(), start = _a.start, end = _a.end;\n        var _b = this.props, pageSize = _b.pageSize, children = _b.children;\n        var length = Children.count(children);\n        var space = 0;\n        var from = 0;\n        var size = 0;\n        var maxFrom = length - 1;\n        while (from < maxFrom) {\n            var itemSize = this.getSizeOf(from);\n            if (itemSize === null || itemSize === undefined || space + itemSize > start) {\n                break;\n            }\n            space += itemSize;\n            ++from;\n        }\n        var maxSize = length - from;\n        while (size < maxSize && space < end) {\n            var itemSize = this.getSizeOf(from + size);\n            if (itemSize === null || itemSize === undefined) {\n                size = Math.min(size + pageSize, maxSize);\n                break;\n            }\n            space += itemSize;\n            ++size;\n        }\n        this.maybeSetState({ from: from, size: size }, cb);\n    };\n    VirtualList.prototype.getSpaceBefore = function (index, cache) {\n        if (cache === void 0) { cache = {}; }\n        if (!index) {\n            return 0;\n        }\n        if (cache[index] !== null && cache[index] !== undefined && cache[index] > 0) {\n            return cache[index];\n        }\n        // Find the closest space to index there is a cached value for.\n        var from = index;\n        while (from > 0 &&\n            (cache[from] === null || cache[from] === undefined || cache[from] === 0)) {\n            from--;\n        }\n        // Finally, accumulate sizes of items from - index.\n        var space = cache[from] || 0;\n        for (var i = from; i < index; ++i) {\n            cache[i] = space;\n            var itemSize = this.getSizeOf(i);\n            if (itemSize === null || itemSize === undefined) {\n                break;\n            }\n            space += itemSize;\n        }\n        cache[index] = space;\n        return cache[index] || 0;\n    };\n    VirtualList.prototype.cacheSizes = function () {\n        var cache = this.cache;\n        var from = this.state.from;\n        var childrenLength = 0;\n        if ('children' in this.items && this.items.children) {\n            var itemEls = this.items.children;\n            childrenLength = itemEls.length;\n        }\n        else if ('props' in this.items && this.items.props.children) {\n            var itemEls = this.items.props.children;\n            childrenLength = Children.count(itemEls);\n        }\n        try {\n            // <Select useVirtual /> 模式下，在快速点击切换Tab的情况下（Select实例快速出现、消失） 有时会出现this.items不存在，导致页面报错。怀疑是Select的异步timer渲染逻辑引起的\n            for (var i = 0, l = childrenLength; i < l; ++i) {\n                var ulRef = findDOMNode(this.items);\n                var height = ulRef.children[i].offsetHeight;\n                if (height > 0) {\n                    cache[from + i] = height;\n                }\n            }\n        }\n        catch (error) {\n            // ...\n        }\n    };\n    VirtualList.prototype.getSizeOf = function (index) {\n        var cache = this.cache;\n        var _a = this.props, itemSizeGetter = _a.itemSizeGetter, jumpIndex = _a.jumpIndex;\n        // Try the cache.\n        if (index in cache) {\n            return cache[index];\n        }\n        if (itemSizeGetter) {\n            return itemSizeGetter(index);\n        }\n        if (!this.defaultItemHeight && jumpIndex > -1) {\n            var keysList = Object.keys(this.cache);\n            var len = keysList.length;\n            var height = this.cache[Number(keysList[len - 1])];\n            this.defaultItemHeight = height;\n        }\n        if (this.defaultItemHeight) {\n            return this.defaultItemHeight;\n        }\n    };\n    VirtualList.prototype.scrollTo = function (index) {\n        this.setScroll(this.getSpaceBefore(index, this.cacheAdd));\n    };\n    VirtualList.prototype.renderMenuItems = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, itemsRenderer = _a.itemsRenderer;\n        var _b = this.state, from = _b.from, size = _b.size;\n        var items = [];\n        var childrenArray = [];\n        Children.forEach(children, function (child) {\n            childrenArray.push(child);\n        });\n        for (var i = 0; i < size; ++i) {\n            items.push(childrenArray[from + i]);\n        }\n        return itemsRenderer(items, function (c) {\n            _this.items = c;\n            return _this.items;\n        });\n    };\n    VirtualList.prototype.render = function () {\n        var _a;\n        var _this = this;\n        var _b = this.props, _c = _b.children, children = _c === void 0 ? [] : _c, prefix = _b.prefix, className = _b.className;\n        var length = Children.count(children);\n        var from = this.state.from;\n        var items = this.renderMenuItems();\n        var style = { position: 'relative' };\n        var size = this.getSpaceBefore(length, {});\n        if (size) {\n            style.height = size;\n        }\n        var offset = this.getSpaceBefore(from, this.cacheAdd);\n        var transform = \"translate(0px, \".concat(offset, \"px)\");\n        var listStyle = {\n            msTransform: transform,\n            WebkitTransform: transform,\n            transform: transform,\n        };\n        var cls = cx((_a = {},\n            _a[\"\".concat(prefix, \"virtual-list-wrapper\")] = true,\n            _a[className] = !!className,\n            _a));\n        return (React.createElement(\"div\", { className: cls, style: style, ref: function (c) {\n                _this.el = c;\n                return _this.el;\n            } },\n            React.createElement(\"div\", { style: listStyle }, items)));\n    };\n    VirtualList.displayName = 'VirtualList';\n    VirtualList.propTypes = {\n        prefix: PropTypes.string,\n        children: PropTypes.any,\n        minSize: PropTypes.number,\n        pageSize: PropTypes.number,\n        itemsRenderer: PropTypes.func,\n        threshold: PropTypes.number,\n        itemSizeGetter: PropTypes.func,\n        jumpIndex: PropTypes.number,\n        className: PropTypes.string,\n    };\n    VirtualList.defaultProps = {\n        prefix: 'next-',\n        itemsRenderer: function (items, ref) { return (React.createElement(\"ul\", { ref: ref }, items)); },\n        minSize: 1,\n        pageSize: 10,\n        jumpIndex: 0,\n        threshold: 100,\n    };\n    return VirtualList;\n}(Component));\nexport default polyfill(VirtualList);\n","import ConfigProvider from '../config-provider';\nimport VirtualList from './virtual-list';\nexport default ConfigProvider.config(VirtualList);\n","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport React, { Children, } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { func, dom, events, obj } from '../util';\nimport Menu from '../menu';\nimport Overlay from '../overlay';\nimport Input from '../input';\nimport zhCN from '../locale/zh-cn';\nimport DataStore from './data-store';\nimport VirtualList from '../virtual-list';\nimport { isSingle, filter, isNull, valueToSelectKey, getValueDataSource } from './util';\nvar Popup = Overlay.Popup;\nvar MenuItem = Menu.Item, MenuGroup = Menu.Group;\nvar noop = func.noop, bindCtx = func.bindCtx, makeChain = func.makeChain;\nfunction preventDefault(e) {\n    e.preventDefault();\n}\nvar Base = /** @class */ (function (_super) {\n    __extends(Base, _super);\n    function Base(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * 防止 onBlur/onFocus 抖动\n         */\n        _this.handleMouseDown = function (e) {\n            if (!_this.props.popupAutoFocus) {\n                preventDefault(e);\n            }\n        };\n        _this.saveSelectRef = function (ref) {\n            _this.selectDOM = findDOMNode(ref);\n        };\n        _this.saveInputRef = function (ref) {\n            if (ref && ref.getInstance()) {\n                _this.inputRef = ref.getInstance();\n            }\n        };\n        _this.savePopupRef = function (ref) {\n            _this.popupRef = ref;\n        };\n        _this.dataStore = new DataStore({\n            filter: props.filter,\n            filterLocal: props.filterLocal,\n            showDataSourceChildren: props.showDataSourceChildren,\n        });\n        var value = 'value' in props ? props.value : props.defaultValue;\n        // 多选情况下做 value 数组订正\n        if (props.mode !== 'single' && value && !Array.isArray(value)) {\n            value = [value];\n        }\n        _this.state = {\n            dataStore: _this.dataStore,\n            value: value,\n            visible: 'visible' in props ? props.visible : props.defaultVisible,\n            dataSource: _this.setDataSource(_this.props),\n            width: 100,\n            // highlightKey 应为 String 多选初始化只赋值受控 highlightKey/defaultHighlightKey\n            highlightKey: 'highlightKey' in props\n                ? props.highlightKey\n                : props.mode === 'single'\n                    ? // FIXME 这里实现有些问题，假设 value 是 detailedValue 这里就是一个对象了\n                        props.value ||\n                            props.defaultHighlightKey ||\n                            props.defaultValue\n                    : props.defaultHighlightKey,\n            srReader: '',\n        };\n        bindCtx(_this, [\n            'handleMenuBodyClick',\n            'handleVisibleChange',\n            'focusInput',\n            'beforeOpen',\n            'beforeClose',\n            'afterClose',\n            'handleResize',\n        ]);\n        return _this;\n    }\n    Base.prototype.componentDidMount = function () {\n        var _this = this;\n        // overlay 还没有完成 mount，所以需要滞后同步宽度\n        setTimeout(function () { return _this.syncWidth(); }, 0);\n        events.on(window, 'resize', this.handleResize);\n    };\n    Base.prototype.componentDidUpdate = function (prevProps, prevState) {\n        if (prevProps.label !== this.props.label || prevState.value !== this.state.value) {\n            this.syncWidth();\n        }\n    };\n    Base.prototype.componentWillUnmount = function () {\n        events.off(window, 'resize', this.handleResize);\n        clearTimeout(this.resizeTimeout);\n    };\n    /**\n     * Calculate and set width of popup menu\n     */\n    Base.prototype.syncWidth = function () {\n        var _this = this;\n        var _a = this.props, popupStyle = _a.popupStyle, popupProps = _a.popupProps;\n        if ((popupStyle && 'width' in popupStyle) ||\n            (popupProps && popupProps.style && 'width' in popupProps.style)) {\n            return;\n        }\n        var width = dom.getStyle(this.selectDOM, 'width');\n        if (width && this.width !== width) {\n            this.width = width;\n            if (this.shouldAutoWidth()) {\n                // overy 的 node 节点可能没有挂载完成，所以这里需要异步\n                setTimeout(function () {\n                    if (_this.popupRef) {\n                        dom.setStyle(_this.popupRef, 'width', _this.width);\n                        return;\n                    }\n                }, 0);\n            }\n        }\n    };\n    Base.prototype.handleResize = function () {\n        var _this = this;\n        clearTimeout(this.resizeTimeout);\n        if (this.state.visible) {\n            this.resizeTimeout = window.setTimeout(function () {\n                _this.syncWidth();\n            }, 200);\n        }\n    };\n    /**\n     * Get structured dataSource, for cache\n     */\n    Base.prototype.setDataSource = function (props) {\n        var dataSource = props.dataSource, children = props.children;\n        // children is higher priority then dataSource\n        if (Children.count(children)) {\n            return this.dataStore.updateByDS(children, true);\n        }\n        else if (Array.isArray(dataSource)) {\n            return this.dataStore.updateByDS(dataSource, false);\n        }\n        return [];\n    };\n    /**\n     * Set popup visible\n     */\n    Base.prototype.setVisible = function (visible, type) {\n        // disabled 状态下只允许关闭不允许打开\n        if ((this.props.disabled && visible) || this.state.visible === visible) {\n            return;\n        }\n        if (!('visible' in this.props)) {\n            this.setState({\n                visible: visible,\n            });\n        }\n        this.props.onVisibleChange(visible, type);\n    };\n    Base.prototype.setFirstHightLightKeyForMenu = function (searchValue) {\n        // 判断 value/highlightKey 解决受控后，默认高亮第一个元素问题。(当搜索值时，搜索后应执行默认选择第一个元素)\n        var highlightKey = this.state.highlightKey;\n        if (!this.props.autoHighlightFirstItem) {\n            return;\n        }\n        // 设置高亮 item key\n        if (this.dataStore.getMenuDS().length &&\n            this.dataStore.getEnableDS().length &&\n            (!highlightKey || searchValue)) {\n            var highlightKey_1 = \"\".concat(this.dataStore.getEnableDS()[0].value);\n            this.setState({\n                highlightKey: highlightKey_1,\n            });\n            this.props.onToggleHighlightItem(highlightKey_1, 'autoFirstItem');\n        }\n        // 当有搜索值且搜索条件与 dataSource 不匹配时 (搜索条件不满足不会出现可选择的列表，所以高亮 key 应为 null)\n        if (searchValue && !this.dataStore.getEnableDS().length) {\n            this.setState({\n                highlightKey: null,\n            });\n            this.props.onToggleHighlightItem(null, 'highlightKeyToNull');\n        }\n    };\n    Base.prototype.handleChange = function (value) {\n        var _a;\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        // 非受控模式清空内部数据\n        if (!('value' in this.props)) {\n            this.setState({\n                value: value,\n            });\n        }\n        (_a = this.props).onChange.apply(_a, __spreadArray([value], __read(args), false));\n    };\n    /**\n     * Handle Menu body click\n     * @param e - click event\n     */\n    Base.prototype.handleMenuBodyClick = function () {\n        if (!this.props.popupAutoFocus) {\n            this.focusInput();\n        }\n    };\n    /**\n     * Toggle highlight MenuItem\n     * @param dir - -1: up, 1: down\n     */\n    Base.prototype.toggleHighlightItem = function (dir) {\n        if (!this.state.visible) {\n            this.setVisible(true, 'enter');\n            return;\n        }\n        var maxCount = this.dataStore.getEnableDS().length;\n        // When there is no enabled item\n        if (!maxCount) {\n            return false;\n        }\n        var highlightKey = this.state.highlightKey;\n        var highlightIndex = -1;\n        // find previous highlight index\n        highlightKey !== null &&\n            this.dataStore.getEnableDS().some(function (item, index) {\n                if (\"\".concat(item.value) === highlightKey) {\n                    highlightIndex = index;\n                }\n                return highlightIndex > -1;\n            });\n        // toggle highlight index\n        highlightIndex += dir;\n        if (highlightIndex < 0) {\n            highlightIndex = maxCount - 1;\n        }\n        if (highlightIndex >= maxCount) {\n            highlightIndex = 0;\n        }\n        // get highlight key\n        var highlightItem = this.dataStore.getEnableDS()[highlightIndex];\n        highlightKey = highlightItem ? \"\".concat(highlightItem.value) : null;\n        this.setState({ highlightKey: highlightKey, srReader: highlightItem.label });\n        this.scrollMenuIntoView();\n        return highlightItem;\n    };\n    // scroll into focus item\n    Base.prototype.scrollMenuIntoView = function () {\n        var _this = this;\n        var prefix = this.props.prefix;\n        clearTimeout(this.highlightTimer);\n        this.highlightTimer = window.setTimeout(function () {\n            try {\n                var menuNode = findDOMNode(_this.menuRef);\n                var itemNode = menuNode.querySelector(\".\".concat(prefix, \"select-menu-item.\").concat(prefix, \"focused\"));\n                itemNode && itemNode.scrollIntoViewIfNeeded && itemNode.scrollIntoViewIfNeeded();\n            }\n            catch (ex) {\n                // I don't care...\n            }\n        });\n    };\n    /**\n     * render popup menu header\n     */\n    Base.prototype.renderMenuHeader = function () {\n        var menuProps = this.props.menuProps;\n        if (menuProps && 'header' in menuProps) {\n            return menuProps.header;\n        }\n        return null;\n    };\n    Base.prototype.handleSelect = function () { };\n    /**\n     * abstract\n     */\n    Base.prototype.handleMenuSelect = function () {\n        var rest = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            rest[_i] = arguments[_i];\n        }\n    };\n    /**\n     * abstract\n     */\n    Base.prototype.handleItemClick = function () {\n        var rest = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            rest[_i] = arguments[_i];\n        }\n    };\n    /**\n     * abstract\n     */\n    Base.prototype.useDetailValue = function () {\n        return false;\n    };\n    /**\n     * abstract\n     */\n    Base.prototype.handleVisibleChange = function () {\n        var rest = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            rest[_i] = arguments[_i];\n        }\n    };\n    /**\n     * abstract\n     */\n    Base.prototype.renderSelect = function () {\n        return React.createElement(\"div\", null);\n    };\n    /**\n     * render popup children\n     * @param props -\n     */\n    Base.prototype.renderMenu = function () {\n        var _a;\n        var _this = this;\n        var _b = this.props, prefix = _b.prefix, mode = _b.mode, locale = _b.locale, notFoundContent = _b.notFoundContent, useVirtual = _b.useVirtual, menuProps = _b.menuProps;\n        var _c = this.state, dataSource = _c.dataSource, highlightKey = _c.highlightKey;\n        var value = this.state.value;\n        var selectedKeys;\n        if (isNull(value) || value.length === 0 || this.isAutoComplete) {\n            selectedKeys = [];\n        }\n        else if (isSingle(mode)) {\n            selectedKeys = [valueToSelectKey(value)];\n        }\n        else {\n            selectedKeys = []\n                .concat(value)\n                .map(function (n) { return valueToSelectKey(n); });\n        }\n        var children = this.renderMenuItem(dataSource);\n        var menuClassName = classNames((_a = {},\n            _a[\"\".concat(prefix, \"select-menu\")] = true,\n            _a[\"\".concat(prefix, \"select-menu-empty\")] = !children || !children.length,\n            _a));\n        if (!children || !children.length) {\n            children = (React.createElement(\"span\", { className: \"\".concat(prefix, \"select-menu-empty-content\") }, notFoundContent || locale.notFoundContent));\n        }\n        var customProps = __assign(__assign({}, menuProps), { children: children, role: 'listbox', selectedKeys: selectedKeys, focusedKey: highlightKey, focusable: false, selectMode: isSingle(mode) ? 'single' : 'multiple', onSelect: this.handleMenuSelect, onItemClick: this.handleItemClick, header: this.renderMenuHeader(), onClick: this.handleMenuBodyClick, onMouseDown: this.handleMouseDown, className: menuClassName });\n        var menuStyle = this.shouldAutoWidth() ? { width: '100%' } : { minWidth: this.width };\n        return useVirtual && children.length > 10 ? (React.createElement(\"div\", __assign({ className: \"\".concat(prefix, \"select-menu-wrapper\"), style: __assign({ position: 'relative' }, menuStyle) }, obj.pickProps(['onScroll'], customProps)),\n            React.createElement(VirtualList, { itemsRenderer: function (items, ref) {\n                    return (React.createElement(Menu, __assign({ ref: function (c) {\n                            ref(c);\n                            _this.menuRef = c;\n                        }, flatenContent: true }, obj.pickOthers(['onScroll'], customProps)), items));\n                } }, children))) : (React.createElement(Menu, __assign({}, customProps, { style: menuStyle })));\n    };\n    /**\n     * render menu item\n     */\n    Base.prototype.renderMenuItem = function (dataSource) {\n        var _this = this;\n        var _a = this.props, prefix = _a.prefix, itemRender = _a.itemRender, showDataSourceChildren = _a.showDataSourceChildren;\n        // If it has.\n        var searchKey;\n        if (this.isAutoComplete) {\n            // In AutoComplete, value is the searchKey\n            searchKey = this.state.value;\n        }\n        else {\n            searchKey = this.state.searchValue;\n        }\n        return dataSource.map(function (item, index) {\n            if (!item) {\n                return null;\n            }\n            if (Array.isArray(item.children) && showDataSourceChildren) {\n                return (React.createElement(MenuGroup, { key: index, label: item.label }, _this.renderMenuItem(item.children)));\n            }\n            else {\n                var itemProps = {\n                    role: 'option',\n                    className: \"\".concat(prefix, \"select-menu-item\"),\n                    disabled: item.disabled,\n                };\n                if ('title' in item) {\n                    itemProps.title = item.title;\n                }\n                return (React.createElement(MenuItem, __assign({ key: item.value }, itemProps), itemRender(item, searchKey)));\n            }\n        });\n    };\n    /**\n     * 点击 arrow 或 label 的时候焦点切到 input 中\n     * @override\n     */\n    Base.prototype.focusInput = function () {\n        this.inputRef.focus(undefined, undefined, true);\n    };\n    Base.prototype.focus = function (start, end, preventScroll) {\n        if (preventScroll === void 0) { preventScroll = false; }\n        this.inputRef.focus(start, end, preventScroll);\n    };\n    Base.prototype.beforeOpen = function () {\n        if (this.props.mode === 'single') {\n            this.setFirstHightLightKeyForMenu();\n        }\n        this.syncWidth();\n    };\n    Base.prototype.beforeClose = function () { };\n    Base.prototype.afterClose = function () { };\n    Base.prototype.shouldAutoWidth = function () {\n        if (this.props.popupComponent) {\n            return false;\n        }\n        return this.props.autoWidth;\n    };\n    Base.prototype.render = function (props) {\n        var _a, _b;\n        var _this = this;\n        var _c = props, prefix = _c.prefix, mode = _c.mode, popupProps = _c.popupProps, popupContainer = _c.popupContainer, popupClassName = _c.popupClassName, popupStyle = _c.popupStyle, popupContent = _c.popupContent, canCloseByTrigger = _c.canCloseByTrigger, followTrigger = _c.followTrigger, cache = _c.cache, popupComponent = _c.popupComponent, isPreview = _c.isPreview, renderPreview = _c.renderPreview, style = _c.style, className = _c.className, valueRender = _c.valueRender;\n        var cls = classNames((_a = {},\n            _a[\"\".concat(prefix, \"select-auto-complete-menu\")] = !popupContent && this.isAutoComplete,\n            _a[\"\".concat(prefix, \"select-\").concat(mode, \"-menu\")] = !popupContent && !!mode,\n            _a), popupClassName || popupProps.className);\n        if (isPreview) {\n            if (this.isAutoComplete) {\n                return (React.createElement(Input, { style: style, className: className, isPreview: isPreview, renderPreview: renderPreview, value: this.state.value }));\n            }\n            else {\n                var value = this.state.value;\n                var valueDS = this.state.value;\n                if (!this.useDetailValue()) {\n                    if (value === this.valueDataSource.value) {\n                        valueDS = this.valueDataSource.valueDS;\n                    }\n                    else {\n                        valueDS = getValueDataSource(value, this.valueDataSource.mapValueDS, this.dataStore.getMapDS()).valueDS;\n                    }\n                }\n                if (typeof renderPreview === 'function') {\n                    var previewCls = classNames((_b = {},\n                        _b[\"\".concat(prefix, \"form-preview\")] = true,\n                        _b[className] = !!className,\n                        _b));\n                    return (React.createElement(\"div\", { style: style, className: previewCls }, renderPreview(valueDS, this.props)));\n                }\n                else {\n                    var fillProps_1 = this.props.fillProps;\n                    if (mode === 'single') {\n                        var renderPreview_1 = function (valueDS) {\n                            if (fillProps_1) {\n                                return valueDS[fillProps_1];\n                            }\n                            else if (valueRender) {\n                                return valueRender(valueDS, _this.props);\n                            }\n                            else {\n                                return valueDS.label;\n                            }\n                        };\n                        return (React.createElement(Input, { style: style, className: className, isPreview: isPreview, value: valueDS ? renderPreview_1(valueDS) : '' }));\n                    }\n                    else {\n                        return (React.createElement(Input, { style: style, className: className, isPreview: isPreview, value: (Array.isArray(valueDS) ? valueDS : [])\n                                .map(function (i) { return i.label; })\n                                .join(', ') }));\n                    }\n                }\n            }\n        }\n        var _props = __assign(__assign({ triggerType: 'click', autoFocus: !!this.props.popupAutoFocus, cache: cache }, popupProps), { \n            //beforeOpen node not mount, afterOpen too slow.\n            // from display:none to block, we may need to recompute width\n            beforeOpen: makeChain(this.beforeOpen, popupProps.beforeOpen), beforeClose: makeChain(this.beforeClose, popupProps.beforeClose), afterClose: makeChain(this.afterClose, popupProps.afterClose), canCloseByTrigger: canCloseByTrigger, followTrigger: followTrigger, visible: this.state.visible, onVisibleChange: this.handleVisibleChange, shouldUpdatePosition: true, container: popupContainer || popupProps.container, className: cls, style: popupStyle || popupProps.style });\n        if (popupProps.v2) {\n            delete _props.shouldUpdatePosition;\n        }\n        var Tag = popupComponent ? popupComponent : Popup;\n        return (React.createElement(Tag, __assign({}, _props, { trigger: this.renderSelect() }), popupContent ? (React.createElement(\"div\", { className: \"\".concat(prefix, \"select-popup-wrap\"), style: this.shouldAutoWidth() ? { width: this.width } : {}, ref: this.savePopupRef }, popupContent)) : (React.createElement(\"div\", { className: \"\".concat(prefix, \"select-spacing-tb\"), style: this.shouldAutoWidth() ? { width: this.width } : {}, ref: this.savePopupRef }, this.renderMenu()))));\n    };\n    Base.propTypes = {\n        prefix: PropTypes.string,\n        size: PropTypes.oneOf(['small', 'medium', 'large']),\n        value: PropTypes.any,\n        defaultValue: PropTypes.any,\n        placeholder: PropTypes.string,\n        autoWidth: PropTypes.bool,\n        label: PropTypes.node,\n        hasClear: PropTypes.bool,\n        state: PropTypes.oneOf(['error', 'loading', 'success', 'warning']),\n        readOnly: PropTypes.bool,\n        disabled: PropTypes.bool,\n        visible: PropTypes.bool,\n        defaultVisible: PropTypes.bool,\n        onVisibleChange: PropTypes.func,\n        popupContainer: PropTypes.any,\n        popupClassName: PropTypes.any,\n        popupStyle: PropTypes.object,\n        popupProps: PropTypes.object,\n        followTrigger: PropTypes.bool,\n        popupContent: PropTypes.node,\n        menuProps: PropTypes.object,\n        filterLocal: PropTypes.bool,\n        filter: PropTypes.func,\n        defaultHighlightKey: PropTypes.string,\n        highlightKey: PropTypes.string,\n        onToggleHighlightItem: PropTypes.func,\n        autoHighlightFirstItem: PropTypes.bool,\n        useVirtual: PropTypes.bool,\n        className: PropTypes.any,\n        children: PropTypes.any,\n        dataSource: PropTypes.array,\n        itemRender: PropTypes.func,\n        mode: PropTypes.string,\n        notFoundContent: PropTypes.node,\n        locale: PropTypes.object,\n        rtl: PropTypes.bool,\n        popupComponent: PropTypes.any,\n        isPreview: PropTypes.bool,\n        renderPreview: PropTypes.func,\n        showDataSourceChildren: PropTypes.bool,\n    };\n    Base.defaultProps = {\n        prefix: 'next-',\n        size: 'medium',\n        autoWidth: true,\n        onChange: noop,\n        onVisibleChange: noop,\n        onToggleHighlightItem: noop,\n        popupProps: {},\n        filterLocal: true,\n        filter: filter,\n        itemRender: function (item) {\n            return item.label || item.value;\n        },\n        locale: zhCN.Select,\n        autoHighlightFirstItem: true,\n        showDataSourceChildren: true,\n        defaultHighlightKey: null,\n    };\n    return Base;\n}(React.Component));\nexport default Base;\n","import { __assign, __extends, __read, __spreadArray } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { func, obj, KEYCODE, env, str } from '../util';\nimport Tag from '../tag';\nimport Input from '../input';\nimport Icon from '../icon';\nimport zhCN from '../locale/zh-cn';\nimport Base from './base';\nimport { isNull, getValueDataSource, valueToSelectKey } from './util';\nvar bindCtx = func.bindCtx, noop = func.noop;\nvar isIE9 = env.ieVersion === 9;\n/**\n * Select\n */\nvar Select = /** @class */ (function (_super) {\n    __extends(Select, _super);\n    function Select(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * 1. fix flash while click <label/>\n         * 2. fix onBlur while has clear\n         * @returns\n         */\n        _this.handleWrapClick = function (e) {\n            // ignore click on input to choose text\n            if (e.target.nodeName !== 'INPUT') {\n                e.preventDefault();\n            }\n            _this.focusInput();\n        };\n        _this.handleArrowClick = function (e) {\n            e.preventDefault();\n            _this.focusInput();\n            // because of can not close Popup by click Input while hasSearch.\n            // so when Popup open and hasSearch, we should close Popup intentionally\n            _this.state.visible && _this.hasSearch() && _this.setVisible(false);\n        };\n        _this.handleClear = function (e) {\n            e.stopPropagation();\n            _this.selectAllYet = false;\n            _this.handleChange(undefined, 'clear');\n        };\n        // because dataSource maybe updated while select a item, so we should cache choosen value's item\n        _this.valueDataSource = {\n            valueDS: [], // [{value,label}]\n            mapValueDS: {}, // {value: {value,label}}\n        };\n        var searchValue = 'searchValue' in props ? props.searchValue : '';\n        _this.dataStore.setOptions({\n            key: searchValue,\n            addonKey: props.mode === 'tag', // tag 模式手动输入的数据\n        });\n        Object.assign(_this.state, {\n            searchValue: searchValue,\n            dataSource: _this.setDataSource(props),\n        });\n        // 根据 value 和计算后的 dataSource，更新 value 对应的详细数据 valueDataSource\n        if (typeof _this.state.value !== 'undefined') {\n            _this.valueDataSource = getValueDataSource(_this.state.value, _this.valueDataSource.mapValueDS, _this.dataStore.getMapDS());\n        }\n        bindCtx(_this, [\n            'handleMenuSelect',\n            'handleItemClick',\n            'handleSearch',\n            'handleSearchKeyDown',\n            'handleSelectAll',\n            'maxTagPlaceholder',\n        ]);\n        return _this;\n    }\n    Select.getDerivedStateFromProps = function (nextProps, prevState) {\n        var state = {};\n        if ('value' in nextProps && nextProps.value !== prevState.value) {\n            Object.assign(state, {\n                value: nextProps.value,\n            });\n        }\n        if ('highlightKey' in nextProps && nextProps.highlightKey !== prevState.highlightKey) {\n            Object.assign(state, {\n                highlightKey: nextProps.highlightKey,\n            });\n        }\n        else if ('value' in nextProps &&\n            nextProps.value !== prevState.value &&\n            nextProps.mode === 'single') {\n            Object.assign(state, {\n                highlightKey: nextProps.value,\n            });\n        }\n        if ('searchValue' in nextProps && nextProps.searchValue !== prevState.searchValue) {\n            var searchValue = nextProps.searchValue;\n            Object.assign(state, {\n                searchValue: searchValue === undefined || searchValue === null ? '' : searchValue,\n            });\n        }\n        if ('visible' in nextProps && nextProps.visible !== prevState.visible) {\n            Object.assign(state, {\n                visible: nextProps.visible,\n            });\n        }\n        if (Object.keys(state).length) {\n            return state;\n        }\n        return null;\n    };\n    Select.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var props = this.props;\n        if ('searchValue' in props && this.state.searchValue !== prevState.searchValue) {\n            this.dataStore.setOptions({ key: this.state.searchValue });\n        }\n        if (props.mode !== prevProps.mode) {\n            this.dataStore.setOptions({\n                addonKey: props.mode === 'tag',\n            });\n        }\n        if (props.mode !== prevProps.mode) {\n            this.dataStore.setOptions({\n                addonKey: props.mode === 'tag',\n            });\n        }\n        if (props.filter !== prevProps.filter) {\n            this.dataStore.setOptions({\n                filter: props.filter,\n            });\n        }\n        if (props.filterLocal !== prevProps.filterLocal) {\n            this.dataStore.setOptions({\n                filterLocal: props.filterLocal,\n            });\n        }\n        if (prevProps.children !== props.children || prevProps.dataSource !== props.dataSource) {\n            this.setState({\n                dataSource: this.setDataSource(props),\n            });\n            if (!props.popupContent) {\n                this.setFirstHightLightKeyForMenu(this.state.searchValue);\n            }\n        }\n        if ('value' in props) {\n            this.valueDataSource = getValueDataSource(props.value, this.valueDataSource.mapValueDS, this.dataStore.getMapDS());\n            this.updateSelectAllYet(this.valueDataSource.value);\n        }\n        else if ('defaultValue' in props &&\n            props.defaultValue === this.valueDataSource.value &&\n            (props.children !== prevProps.children || props.dataSource !== prevProps.dataSource)) {\n            // has defaultValue and value not changed and dataSource changed\n            // fix: set defaultValue first, then update dataSource.\n            this.valueDataSource = getValueDataSource(props.defaultValue, this.valueDataSource.mapValueDS, this.dataStore.getMapDS());\n        }\n        if (prevProps.label !== this.props.label ||\n            prevState.value !== this.state.value ||\n            props.searchValue !== this.state.searchValue) {\n            this.syncWidth();\n        }\n    };\n    Select.prototype.componentDidMount = function () {\n        if (isIE9) {\n            this.ie9Hack();\n        }\n        _super.prototype.componentDidMount.call(this);\n    };\n    // ie9 下 table-cell 布局不支持宽度超出隐藏\n    Select.prototype.ie9Hack = function () {\n        try {\n            var width = this.selectDOM\n                .currentStyle.width;\n            this.setState({\n                fixWidth: width !== 'auto',\n            });\n        }\n        catch (e) {\n            //\n        }\n    };\n    Select.prototype.useDetailValue = function () {\n        var _a = this.props, popupContent = _a.popupContent, useDetailValue = _a.useDetailValue, dataSource = _a.dataSource;\n        return useDetailValue || (!!popupContent && !dataSource);\n    };\n    Select.prototype.hasSearch = function () {\n        var _a = this.props, showSearch = _a.showSearch, mode = _a.mode;\n        return showSearch || mode === 'tag';\n    };\n    Select.prototype.getTagSize = function () {\n        var _a = this.props, size = _a.size, adjustTagSize = _a.adjustTagSize;\n        if (adjustTagSize) {\n            return size;\n        }\n        return size === 'large' ? 'medium' : 'small';\n    };\n    /**\n     * Menu.Item onSelect\n     */\n    Select.prototype.handleMenuSelect = function (keys, item) {\n        var _a = this.props, mode = _a.mode, readOnly = _a.readOnly, disabled = _a.disabled;\n        if (readOnly || disabled) {\n            return false;\n        }\n        var isSingle = mode === 'single';\n        if (isSingle) {\n            // 单选\n            return this.handleSingleSelect(keys[0], 'itemClick');\n        }\n        else {\n            // 正常多选\n            return this.handleMultipleSelect(keys, 'itemClick', item.props && item.props._key);\n        }\n    };\n    Select.prototype.handleItemClick = function (key) {\n        if (!this.props.popupAutoFocus) {\n            this.focusInput();\n        }\n        // key is string type here, fix https://github.com/alibaba-fusion/next/issues/4004\n        if (this.props.mode === 'single' && key === String(this.state.value)) {\n            this.setVisible(false, 'itemClick');\n        }\n    };\n    /**\n     * 单选模式\n     */\n    Select.prototype.handleSingleSelect = function (key, triggerType) {\n        // TODO: 这里 cacheValue=false 有问题，dataSource 更新的时候就应该处理\n        var cacheValue = this.props.cacheValue;\n        // get data only from dataStore while cacheValue=false\n        var itemObj = getValueDataSource(key, cacheValue ? this.valueDataSource.mapValueDS : {}, this.dataStore.getMapDS());\n        this.valueDataSource = itemObj;\n        this.setVisible(false, triggerType);\n        // 应在 return 之前传出 highlightKey\n        this.setState({\n            highlightKey: key,\n        });\n        if (this.useDetailValue()) {\n            return this.handleChange(itemObj.valueDS, triggerType);\n        }\n        else {\n            this.handleChange(itemObj.value, triggerType, itemObj.valueDS);\n        }\n        // 清空搜索\n        if (!('searchValue' in this.props) && this.state.searchValue) {\n            this.handleSearchClear(triggerType);\n        }\n    };\n    /**\n     * 多选模式 multiple/tag\n     */\n    Select.prototype.handleMultipleSelect = function (keys, triggerType, key, keepSearchValue) {\n        var _this = this;\n        var itemObj = getValueDataSource(keys, this.valueDataSource.mapValueDS, this.dataStore.getMapDS());\n        var _a = this.props, cacheValue = _a.cacheValue, mode = _a.mode, hiddenSelected = _a.hiddenSelected, autoClearSearchValue = _a.autoClearSearchValue;\n        // cache those value maybe not exists in dataSource\n        if (cacheValue || mode === 'tag') {\n            this.valueDataSource = itemObj;\n        }\n        if (hiddenSelected) {\n            this.setVisible(false, triggerType);\n        }\n        // 因为搜索后会设置 hightLight 为第一个 item，menu 渲染会自动滚动到 hightLight 的元素上面。\n        // 所以设置 hightLight 为当前选中项避免滚动\n        key &&\n            this.state.visible &&\n            this.setState({\n                highlightKey: key,\n            });\n        if (this.useDetailValue()) {\n            this.handleChange(itemObj.valueDS, triggerType);\n        }\n        else {\n            this.handleChange(itemObj.value, triggerType, itemObj.valueDS);\n        }\n        this.updateSelectAllYet(itemObj.value);\n        // 清空搜索\n        if (!('searchValue' in this.props) &&\n            this.state.searchValue &&\n            !keepSearchValue &&\n            !(mode && ['multiple', 'tag'].includes(mode) && !autoClearSearchValue)) {\n            // 因为 SearchValue 被 clear 后会重新渲染 Menu，所以在 Overlay 检测 safeNode 的时候 e.target 可能会找不到导致弹窗关闭\n            setTimeout(function () {\n                _this.handleSearchClear(triggerType);\n            });\n        }\n    };\n    Select.prototype.updateSelectAllYet = function (value) {\n        var _this = this;\n        // multiple mode\n        // is current state select all or not\n        this.selectAllYet = false;\n        if (this.props.hasSelectAll && Array.isArray(value)) {\n            var selectAllValues = this.dataStore.getEnableDS().map(function (item) { return item.value; });\n            if (selectAllValues.length <= value.length) {\n                this.selectAllYet = true;\n                selectAllValues.forEach(function (val) {\n                    if (value.indexOf(val) === -1) {\n                        _this.selectAllYet = false;\n                        return;\n                    }\n                });\n            }\n        }\n    };\n    Select.prototype.handleSearchValue = function (value) {\n        if (this.state.searchValue === value) {\n            return;\n        }\n        var filterLocal = this.props.filterLocal;\n        if (filterLocal) {\n            if (!('searchValue' in this.props)) {\n                this.setState({\n                    searchValue: value,\n                    dataSource: this.dataStore.updateByKey(value),\n                });\n                this.setFirstHightLightKeyForMenu(value);\n            }\n        }\n        else if (!('searchValue' in this.props)) {\n            this.setState({\n                searchValue: value,\n            });\n        }\n    };\n    /**\n     * Handle search input change event\n     */\n    Select.prototype.handleSearch = function (value, e) {\n        this.handleSearchValue(value);\n        // inputing should trigger popup open\n        if (!this.state.visible && value) {\n            this.setVisible(true);\n        }\n        this.props.onSearch(value, e);\n    };\n    Select.prototype.handleSearchClear = function (triggerType) {\n        this.handleSearchValue('');\n        this.props.onSearchClear(triggerType);\n    };\n    // 搜索框 keyDown 事件\n    Select.prototype.handleSearchKeyDown = function (e) {\n        var _a = this.props, popupContent = _a.popupContent, onKeyDown = _a.onKeyDown, showSearch = _a.showSearch, mode = _a.mode, hasClear = _a.hasClear, onToggleHighlightItem = _a.onToggleHighlightItem, readOnly = _a.readOnly, disabled = _a.disabled;\n        var hasSearch = this.hasSearch();\n        if (popupContent) {\n            // 搜索的时候不阻止冒泡会无法输入\n            if (hasSearch && e.keyCode === KEYCODE.SPACE) {\n                e.stopPropagation();\n            }\n            return onKeyDown(e);\n        }\n        var proxy = 'search';\n        switch (e.keyCode) {\n            case KEYCODE.UP:\n                e.preventDefault();\n                onToggleHighlightItem(this.toggleHighlightItem(-1), 'up');\n                break;\n            case KEYCODE.DOWN:\n                e.preventDefault();\n                onToggleHighlightItem(this.toggleHighlightItem(1), 'down');\n                break;\n            case KEYCODE.ENTER:\n                e.preventDefault();\n                if (readOnly || disabled) {\n                    break;\n                }\n                this.chooseHighlightItem(proxy, e);\n                break;\n            case KEYCODE.ESC:\n                e.preventDefault();\n                this.state.visible && this.setVisible(false, 'keyDown');\n                break;\n            case KEYCODE.SPACE:\n                e.stopPropagation();\n                !hasSearch && e.preventDefault();\n                break;\n            case KEYCODE.BACKSPACE:\n                if (readOnly || disabled) {\n                    break;\n                }\n                if ((mode === 'multiple' && showSearch) || mode === 'tag') {\n                    // 在多选并且有搜索的情况下，删除最后一个 tag\n                    var valueDS = this.valueDataSource.valueDS;\n                    if (valueDS &&\n                        valueDS.length &&\n                        !valueDS[valueDS.length - 1].disabled) {\n                        this.handleDeleteTag(e);\n                    }\n                }\n                else if (mode === 'single' && hasClear && !this.state.visible) {\n                    // 单选、非展开、并且可清除的情况，允许按删除键清除\n                    this.handleClear(e);\n                }\n                break;\n            default:\n                break;\n        }\n        onKeyDown(e);\n    };\n    Select.prototype.chooseMultipleItem = function (key) {\n        var value = this.state.value || [];\n        var keys = value.map(function (v) {\n            return valueToSelectKey(v);\n        });\n        var keepSearchValue = false;\n        var index = keys.map(function (v) { return \"\".concat(v); }).indexOf(key);\n        if (index > -1) {\n            // unselect\n            keys.splice(index, 1);\n            keepSearchValue = true; // 回车反选保留搜索值\n        }\n        else {\n            // select\n            keys.push(key);\n        }\n        this.handleMultipleSelect(keys, 'enter', null, keepSearchValue);\n    };\n    // 回车 选择高亮的 item\n    Select.prototype.chooseHighlightItem = function (proxy, e) {\n        var mode = this.props.mode;\n        if (!this.state.visible) {\n            // input tag by itself\n            if (mode === 'tag' && this.state.searchValue) {\n                this.chooseMultipleItem(this.state.searchValue);\n            }\n            return false;\n        }\n        var highlightKey = this.state.highlightKey;\n        // 没有高亮选项 或者 没有可选菜单\n        if (highlightKey === null || !this.dataStore.getMenuDS().length) {\n            return;\n        }\n        if (mode === 'single') {\n            this.handleSingleSelect(highlightKey, 'enter');\n        }\n        else {\n            this.chooseMultipleItem(highlightKey);\n            // 阻止事件冒泡到最外层，让 Popup 监听到触发弹层关闭\n            e && e.stopPropagation();\n        }\n    };\n    /**\n     * Handle Tag close event\n     * @returns false  return false to prevent auto close\n     * ----\n     * It MUST be multiple mode, needn't additional judgement\n     */\n    Select.prototype.handleTagClose = function (item) {\n        var readOnly = this.props.readOnly;\n        if (readOnly)\n            return false;\n        var stateValue = this.state.value;\n        if (this.useDetailValue()) {\n            var value = stateValue.filter(function (v) {\n                return item.value !== v.value;\n            });\n            this.handleChange(value, 'tag');\n        }\n        else {\n            // filter out current item, and then call handleMenuSelect\n            var value = stateValue.filter(function (v) {\n                return item.value !== v;\n            });\n            this.handleMultipleSelect(value, 'tag');\n        }\n        this.props.onRemove(item);\n        // prevent tag close\n        return false;\n    };\n    /**\n     * Handle BACKSPACE key event\n     * @param e - keyDown event\n     * ---\n     * It MUST be multiple mode\n     */\n    Select.prototype.handleDeleteTag = function (e) {\n        var value = this.state.value;\n        var searchValue = this.state.searchValue;\n        if (searchValue || !value || !value.length) {\n            return false;\n        }\n        e.preventDefault();\n        var nextValues = value.slice(0, value.length - 1);\n        // 手动调用 handleMenuSelect 时直接传入原生的 value，可以减少 toString 的操作\n        if (this.useDetailValue()) {\n            this.handleChange(nextValues, 'tag');\n        }\n        else {\n            this.handleMultipleSelect(nextValues, 'tag');\n        }\n    };\n    /**\n     * Handle SelectAll span click event\n     * @param e - click event\n     */\n    Select.prototype.handleSelectAll = function (e) {\n        e && e.preventDefault();\n        var nextValues;\n        if (this.selectAllYet) {\n            nextValues = [];\n        }\n        else {\n            nextValues = __spreadArray(__spreadArray([], __read((this.state.value || []).map(function (item) {\n                if (typeof item === 'object' && item !== null) {\n                    return item.value;\n                }\n                return item;\n            })), false), __read(this.dataStore.getEnableDS().map(function (item) { return item.value; })), false);\n        }\n        // 去重\n        nextValues = Array.from(new Set(nextValues));\n        // 直接传 values，减少 toString 操作\n        this.handleMultipleSelect(nextValues, 'selectAll');\n    };\n    Select.prototype.handleVisibleChange = function (visible, type) {\n        this.setVisible(visible, type);\n    };\n    Select.prototype.afterClose = function () {\n        // 关闭的时候清空搜索值\n        if (this.hasSearch()) {\n            this.handleSearchClear('popupClose');\n        }\n    };\n    Select.prototype.maxTagPlaceholder = function (selectedValues, totalValues) {\n        var locale = this.props.locale;\n        return \"\".concat(str.template(locale.maxTagPlaceholder, {\n            selected: selectedValues.length,\n            total: totalValues.length,\n        }));\n    };\n    /**\n     * 如果用户是自定义的弹层，则直接以 value 为准，不再校验 dataSource\n     * TODO: 2.0 中 value 接受 string/object\\{value,label\\} 两种类型的数据，自动做识别，可以避免用户去转换，也和 date-picker 对齐\n     * 此外 onChange 第一个参数根据 api 来控制类型是 [string] 还是 [object\\{value,label\\}]\n     */\n    Select.prototype.renderValues = function () {\n        var _this = this;\n        var _a = this.props, prefix = _a.prefix, mode = _a.mode, valueRender = _a.valueRender, fillProps = _a.fillProps, disabled = _a.disabled, maxTagCount = _a.maxTagCount, maxTagPlaceholder = _a.maxTagPlaceholder, tagInline = _a.tagInline, tagClosable = _a.tagClosable;\n        var tagSize = this.getTagSize();\n        var value = this.state.value;\n        if (isNull(value)) {\n            return null;\n        }\n        // get detail value\n        if (!this.useDetailValue()) {\n            if (value === this.valueDataSource.value) {\n                value = this.valueDataSource.valueDS;\n            }\n            else {\n                value = getValueDataSource(value, this.valueDataSource.mapValueDS, this.dataStore.getMapDS()).valueDS;\n            }\n        }\n        if (mode === 'single') {\n            if (!value) {\n                return null;\n            }\n            var retvalue = fillProps && typeof value === 'object' && fillProps in value\n                ? value[fillProps]\n                : valueRender(value);\n            // 0 => '0'\n            return typeof retvalue === 'number' ? retvalue.toString() : retvalue;\n        }\n        else if (value) {\n            var detailedValueArr = value;\n            var limitedCountValue = detailedValueArr;\n            var maxTagPlaceholderEl = void 0;\n            var totalValue = this.dataStore.getFlattenDS();\n            var holder = 'maxTagPlaceholder' in this.props ? maxTagPlaceholder : this.maxTagPlaceholder;\n            if (maxTagCount !== undefined && detailedValueArr.length > maxTagCount && !tagInline) {\n                limitedCountValue = limitedCountValue.slice(0, maxTagCount);\n                maxTagPlaceholderEl = (React.createElement(Tag, { key: \"_count\", type: \"primary\", size: tagSize, animation: false }, holder(detailedValueArr, totalValue)));\n            }\n            if (detailedValueArr.length > 0 && tagInline) {\n                maxTagPlaceholderEl = (React.createElement(\"div\", { className: \"\".concat(prefix, \"select-tag-compact\"), key: \"_count\" }, holder(detailedValueArr, totalValue)));\n            }\n            detailedValueArr = limitedCountValue;\n            if (!Array.isArray(detailedValueArr)) {\n                detailedValueArr = [detailedValueArr];\n            }\n            var selectedValueNodes = detailedValueArr.map(function (v) {\n                if (!v) {\n                    return null;\n                }\n                var labelNode = fillProps ? v[fillProps] : valueRender(v);\n                return (React.createElement(Tag, { key: v.value, disabled: disabled || v.disabled, type: \"primary\", size: tagSize, animation: false, onClose: _this.handleTagClose.bind(_this, v), closable: tagClosable, color: v.color }, labelNode));\n            });\n            if (maxTagPlaceholderEl) {\n                if (tagInline) {\n                    selectedValueNodes.unshift(maxTagPlaceholderEl);\n                }\n                else {\n                    selectedValueNodes.push(maxTagPlaceholderEl);\n                }\n            }\n            return selectedValueNodes;\n        }\n        return null;\n    };\n    Select.prototype.hasClear = function () {\n        var _a = this.props, hasClear = _a.hasClear, readOnly = _a.readOnly, disabled = _a.disabled, showSearch = _a.showSearch;\n        var _b = this.state, value = _b.value, visible = _b.visible;\n        return (typeof value !== 'undefined' &&\n            value !== null &&\n            (Array.isArray(value) ? value.length > 0 : true) &&\n            hasClear &&\n            !readOnly &&\n            !disabled &&\n            !(showSearch && visible));\n    };\n    /**\n     * render arrow\n     */\n    Select.prototype.renderExtraNode = function () {\n        var _a = this.props, hasArrow = _a.hasArrow, hasClear = _a.hasClear, prefix = _a.prefix;\n        var ret = [];\n        if (hasArrow) {\n            ret.push(React.createElement(\"span\", { key: \"arrow\", \"aria-hidden\": true, onClick: this.handleArrowClick, className: \"\".concat(prefix, \"select-arrow\") },\n                React.createElement(Icon, { type: \"arrow-down\", className: \"\".concat(prefix, \"select-symbol-fold\") })));\n        }\n        // do not use this.hasClear() here, to make sure clear btn always exists, can not influenced by apis like `disabled` `readOnly`\n        if (hasClear) {\n            ret.push(React.createElement(\"span\", { key: \"clear\", \"aria-hidden\": true, onClick: this.handleClear, className: \"\".concat(prefix, \"select-clear\") },\n                React.createElement(Icon, { type: \"delete-filling\" })));\n        }\n        return ret;\n    };\n    /**\n     * 选择器\n     * @override\n     */\n    Select.prototype.renderSelect = function () {\n        var _a;\n        var _this = this;\n        var _b = this.props, prefix = _b.prefix, showSearch = _b.showSearch, placeholder = _b.placeholder, mode = _b.mode, size = _b.size, className = _b.className, style = _b.style, readOnly = _b.readOnly, disabled = _b.disabled, hasBorder = _b.hasBorder, label = _b.label, locale = _b.locale, state = _b.state, onBlur = _b.onBlur, onFocus = _b.onFocus, onMouseEnter = _b.onMouseEnter, onMouseLeave = _b.onMouseLeave, rtl = _b.rtl;\n        var others = obj.pickOthers(Select.propTypes, this.props);\n        // select 不是输入框，应过滤掉 addonTextAfter\n        if ('addonTextAfter' in others) {\n            delete others.addonTextAfter;\n        }\n        var othersData = obj.pickAttrsWith(others, 'data-');\n        var visible = this.state.visible;\n        var isSingle = mode === 'single';\n        var hasSearch = this.hasSearch();\n        var valueNodes = this.renderValues();\n        // compatible with selectPlaceHolder. TODO: removed in 2.0 version\n        var _placeholder = placeholder || locale.selectPlaceholder || locale.selectPlaceHolder;\n        if (valueNodes && valueNodes.length) {\n            _placeholder = undefined;\n        }\n        // 弹窗展开时将当前的值作为 placeholder，这个功能的前提是 valueNode 必须是一个字符串\n        if (showSearch && visible && isSingle && typeof valueNodes === 'string') {\n            _placeholder = valueNodes;\n        }\n        // 下拉箭头\n        var extra = this.renderExtraNode();\n        var triggerClazz = classNames([\n            \"\".concat(prefix, \"select\"),\n            \"\".concat(prefix, \"select-trigger\"),\n            \"\".concat(prefix, \"select-\").concat(mode),\n            \"\".concat(prefix).concat(size),\n            className,\n        ], (_a = {},\n            _a[\"\".concat(prefix, \"active\")] = visible,\n            _a[\"\".concat(prefix, \"inactive\")] = !visible,\n            _a[\"\".concat(prefix, \"no-search\")] = !hasSearch,\n            _a[\"\".concat(prefix, \"has-search\")] = hasSearch,\n            _a[\"\".concat(prefix, \"select-in-ie\")] = isIE9,\n            _a[\"\".concat(prefix, \"select-in-ie-fixwidth\")] = this.state.fixWidth,\n            _a[\"\".concat(prefix, \"has-clear\")] = this.hasClear(),\n            _a));\n        return (React.createElement(\"span\", __assign({}, othersData, { className: triggerClazz, style: style, dir: rtl ? 'rtl' : undefined, ref: this.saveSelectRef, onClick: this.handleWrapClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseDown: this.handleWrapClick }),\n            React.createElement(Input, __assign({ \"aria-label\": \"select\" }, obj.pickOthers(othersData, others), { role: \"combobox\", tabIndex: 0, \"aria-expanded\": this.state.visible ? 'true' : 'false', \"aria-disabled\": disabled, state: state, label: label, extra: extra, value: this.state.searchValue, size: size, readOnly: !this.hasSearch() || readOnly, disabled: disabled, placeholder: _placeholder, hasBorder: hasBorder, hasClear: false, htmlSize: \"1\", inputRender: function (inputEl) {\n                    return _this.renderSearchInput(valueNodes, _placeholder, inputEl);\n                }, onChange: this.handleSearch, onKeyDown: this.handleSearchKeyDown, onFocus: onFocus, onBlur: onBlur, className: \"\".concat(prefix, \"select-inner\"), ref: this.saveInputRef })),\n            React.createElement(\"span\", { className: \"\".concat(prefix, \"sr-only\"), \"aria-live\": \"polite\" }, this.state.srReader)));\n    };\n    Select.prototype.renderSearchInput = function (valueNodes, placeholder, inputEl) {\n        var _a;\n        var _b = this.props, prefix = _b.prefix, mode = _b.mode, tagInline = _b.tagInline;\n        var isSingle = mode === 'single';\n        var mirrorText = this.state.searchValue;\n        var cls = classNames((_a = {},\n            _a[\"\".concat(prefix, \"select-values\")] = true,\n            _a[\"\".concat(prefix, \"input-text-field\")] = true,\n            _a[\"\".concat(prefix, \"select-compact\")] = !isSingle && tagInline,\n            _a));\n        var title = typeof valueNodes === 'string' ? valueNodes : '';\n        var searchInput = [\n            isSingle && valueNodes ? (React.createElement(\"em\", { title: title, key: \"select-value\" }, valueNodes)) : (valueNodes),\n        ];\n        var triggerSearch = (React.createElement(\"span\", { key: \"trigger-search\", className: \"\".concat(prefix, \"select-trigger-search\") },\n            inputEl,\n            React.createElement(\"span\", { \"aria-hidden\": true },\n                React.createElement(\"span\", null, mirrorText || placeholder),\n                React.createElement(\"span\", { style: { display: 'inline-block', width: 1 } }, \"\\u00A0\"))));\n        if (!isSingle && tagInline) {\n            searchInput.unshift(triggerSearch);\n        }\n        else {\n            searchInput.push(triggerSearch);\n        }\n        return React.createElement(\"span\", { className: cls }, searchInput);\n    };\n    /**\n     * 渲染弹层的 header 内容\n     * @override\n     */\n    Select.prototype.renderMenuHeader = function () {\n        var _a, _b;\n        var _c = this.props, prefix = _c.prefix, hasSelectAll = _c.hasSelectAll, mode = _c.mode, locale = _c.locale, menuProps = _c.menuProps;\n        if (menuProps && 'header' in menuProps) {\n            return menuProps.header;\n        }\n        var sourceCount = this.dataStore.getEnableDS().length;\n        // 多选模式下才有全选\n        if (!hasSelectAll || mode === 'single' || !sourceCount) {\n            return null;\n        }\n        var text = typeof hasSelectAll === 'boolean' ? locale.selectAll : hasSelectAll;\n        var selectAllYet = this.selectAllYet;\n        var cls = classNames((_a = {},\n            _a[\"\".concat(prefix, \"select-all\")] = true,\n            _a[\"\".concat(prefix, \"selected\")] = selectAllYet,\n            _a));\n        var clsInner = classNames((_b = {},\n            _b[\"\".concat(prefix, \"select-all-inner\")] = true,\n            _b));\n        // remove style={{'lineHeight': 'unset'}} in next Y\n        // remove style={{'display': 'none'}} in next Y\n        return (React.createElement(\"div\", { key: \"all\", onClick: this.handleSelectAll, className: cls, style: { lineHeight: 'unset' } },\n            selectAllYet ? (React.createElement(Icon, { className: \"\".concat(prefix, \"menu-icon-selected\"), style: { display: 'none' }, type: \"select\" })) : null,\n            React.createElement(\"span\", { className: clsInner }, text)));\n    };\n    Select.prototype.render = function () {\n        var mode = this.props.mode;\n        var props = __assign({}, this.props);\n        // forbid to close Popup by click Input while hasSearch\n        if (this.hasSearch()) {\n            props.canCloseByTrigger = false;\n        }\n        if (mode === 'single') {\n            props.cache = true;\n        }\n        return _super.prototype.render.call(this, props);\n    };\n    Select.propTypes = __assign(__assign({}, Base.propTypes), { mode: PropTypes.oneOf(['single', 'multiple', 'tag']), value: PropTypes.any, defaultValue: PropTypes.any, onChange: PropTypes.func, dataSource: PropTypes.arrayOf(PropTypes.oneOfType([\n            PropTypes.shape({\n                value: PropTypes.any,\n                label: PropTypes.any,\n                disabled: PropTypes.bool,\n                children: PropTypes.array,\n            }),\n            PropTypes.bool,\n            PropTypes.number,\n            PropTypes.string,\n        ])), hasBorder: PropTypes.bool, hasArrow: PropTypes.bool, showSearch: PropTypes.bool, onSearch: PropTypes.func, onSearchClear: PropTypes.func, hasSelectAll: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), fillProps: PropTypes.string, useDetailValue: PropTypes.bool, cacheValue: PropTypes.bool, valueRender: PropTypes.func, itemRender: PropTypes.func, notFoundContent: PropTypes.node, style: PropTypes.object, searchValue: PropTypes.string, tagInline: PropTypes.bool, tagClosable: PropTypes.bool, adjustTagSize: PropTypes.bool, maxTagCount: PropTypes.number, maxTagPlaceholder: PropTypes.func, hiddenSelected: PropTypes.bool, onRemove: PropTypes.func, onFocus: PropTypes.func, onBlur: PropTypes.func, onMouseEnter: PropTypes.func, onMouseLeave: PropTypes.func, onKeyDown: PropTypes.func, locale: PropTypes.object, popupAutoFocus: PropTypes.bool, showDataSourceChildren: PropTypes.bool, autoClearSearchValue: PropTypes.bool });\n    Select.defaultProps = __assign(__assign({}, Base.defaultProps), { locale: zhCN.Select, mode: 'single', showSearch: false, cacheValue: true, tagInline: false, adjustTagSize: false, onSearch: noop, onSearchClear: noop, hasArrow: true, onRemove: noop, \n        // highlightFirstItem: true,\n        valueRender: function (item) {\n            return item && (item.label || item.value);\n        }, onKeyDown: noop, onFocus: noop, onBlur: noop, onMouseEnter: noop, onMouseLeave: noop, popupAutoFocus: false, tagClosable: true, autoClearSearchValue: true });\n    Select.displayName = 'Select';\n    return Select;\n}(Base));\nexport default polyfill(Select);\n","import { __assign, __extends } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { func, obj, KEYCODE } from '../util';\nimport Input from '../input';\nimport Base from './base';\nvar bindCtx = func.bindCtx, noop = func.noop;\n/**\n * Select.AutoComplete\n */\nvar AutoComplete = /** @class */ (function (_super) {\n    __extends(AutoComplete, _super);\n    function AutoComplete(props) {\n        var _this = _super.call(this, props) || this;\n        _this.handleChange = function (value, proxy, item) {\n            var _a = _this.props, disabled = _a.disabled, readOnly = _a.readOnly, filterLocal = _a.filterLocal;\n            if (disabled || readOnly) {\n                return false;\n            }\n            var actionType = typeof proxy === 'string' ? proxy : 'change';\n            _this.isInputing = actionType === 'change';\n            if (filterLocal) {\n                _this.setState({\n                    dataSource: _this.dataStore.updateByKey(value),\n                });\n                _this.shouldControlPopup(_this.props, actionType);\n                _this.setFirstHightLightKeyForMenu(value);\n            }\n            // 非受控模式清空内部数据\n            if (!('value' in _this.props)) {\n                _this.setState({\n                    value: value,\n                });\n            }\n            // 不自动高亮的情况下，highlightKey 根据 value 精确值走，也就是被选中元素自动高亮，这样也不会影响不在选项内的用户搜索操作\n            if (!_this.props.autoHighlightFirstItem) {\n                _this.setState({\n                    highlightKey: value,\n                });\n            }\n            _this.props.onChange(value, actionType, item);\n            if (actionType === 'itemClick' || actionType === 'enter') {\n                // 点击 item 的时候不会触发关闭，需要手动关闭，其它类型比如 keyDown 等都会有其它事件句柄处理\n                _this.setVisible(false, actionType);\n            }\n        };\n        _this.isAutoComplete = true;\n        _this.isInputing = false;\n        _this.dataStore.setOptions({ key: _this.state.value });\n        Object.assign(_this.state, {\n            dataSource: _this.setDataSource(props),\n        });\n        bindCtx(_this, ['handleTriggerKeyDown', 'handleMenuSelect', 'handleItemClick']);\n        return _this;\n    }\n    AutoComplete.getDerivedStateFromProps = function (nextProps, prevState) {\n        var state = {};\n        if ('value' in nextProps && nextProps.value !== prevState.value) {\n            Object.assign(state, {\n                value: nextProps.value,\n            });\n        }\n        if ('visible' in nextProps && nextProps.visible !== prevState.visible) {\n            Object.assign(state, {\n                visible: nextProps.visible,\n            });\n        }\n        if (Object.keys(state).length) {\n            return state;\n        }\n        return null;\n    };\n    AutoComplete.prototype.componentDidUpdate = function (prevProps) {\n        var props = this.props;\n        if (props.filter !== prevProps.filter) {\n            this.dataStore.setOptions({\n                filter: props.filter,\n            });\n        }\n        if (props.filterLocal !== prevProps.filterLocal) {\n            this.dataStore.setOptions({\n                filterLocal: props.filterLocal,\n            });\n        }\n        var dataSource;\n        if (prevProps.children !== props.children || prevProps.dataSource !== props.dataSource) {\n            dataSource = this.setDataSource(props);\n        }\n        if ('value' in props) {\n            if (prevProps.value !== props.value) {\n                dataSource = this.dataStore.updateByKey(props.value);\n            }\n        }\n        if (dataSource) {\n            this.setState({\n                dataSource: dataSource,\n            });\n            // remote dataSource and focused\n            // 因为 autoComplete 没有下拉数据不展示，搜索并且有数据了需要自动展示下拉\n            if (!props.filterLocal && this.isInputing) {\n                this.shouldControlPopup(props, 'update');\n            }\n            if (!props.filterLocal && !props.popupContent) {\n                this.setFirstHightLightKeyForMenu();\n            }\n        }\n    };\n    AutoComplete.prototype.shouldControlPopup = function (props, type) {\n        if (props === void 0) { props = this.props; }\n        var hasPopup = props.popupContent || this.dataStore.getMenuDS().length;\n        if (hasPopup) {\n            this.setVisible(true, type);\n        }\n        else {\n            this.setVisible(false, type);\n        }\n    };\n    AutoComplete.prototype.handleMenuSelect = function (keys) {\n        var key = keys[0];\n        var mapDS = this.dataStore.getMapDS();\n        if (key in mapDS) {\n            var item = mapDS[key];\n            this.handleSelectEvent(key, item, 'itemClick');\n        }\n    };\n    AutoComplete.prototype.handleItemClick = function () {\n        this.setVisible(false, 'itemClick');\n    };\n    AutoComplete.prototype.handleSelectEvent = function (key, item, triggerType) {\n        var value = (item && item[this.props.fillProps]) || key;\n        if (triggerType === 'itemClick' || triggerType === 'enter') {\n            // 点击 item 的时候不会触发关闭，需要手动关闭，其它类型比如 keyDown 等都会有其它事件句柄处理\n            this.setVisible(false, triggerType);\n        }\n        this.handleChange(value, triggerType, item);\n    };\n    AutoComplete.prototype.handleVisibleChange = function (visible, type) {\n        if (!('visible' in this.props) &&\n            visible &&\n            !this.props.popupContent &&\n            !this.dataStore.getMenuDS().length) {\n            return;\n        }\n        this.setVisible(visible, type);\n    };\n    AutoComplete.prototype.beforeClose = function () {\n        this.isInputing = false;\n    };\n    /**\n     * Handle trigger keydown event\n     */\n    AutoComplete.prototype.handleTriggerKeyDown = function (e) {\n        var _a = this.props, popupContent = _a.popupContent, onToggleHighlightItem = _a.onToggleHighlightItem, onKeyDown = _a.onKeyDown;\n        if (popupContent) {\n            e.stopPropagation(); // stopPropagation can make use onChange trigger while typing space('') in Input\n            return onKeyDown(e);\n        }\n        switch (e.keyCode) {\n            case KEYCODE.UP:\n                e.preventDefault();\n                onToggleHighlightItem(this.toggleHighlightItem(-1), 'up');\n                break;\n            case KEYCODE.DOWN:\n                e.preventDefault();\n                onToggleHighlightItem(this.toggleHighlightItem(1), 'down');\n                break;\n            case KEYCODE.ENTER:\n                e.preventDefault();\n                this.chooseHighlightItem();\n                break;\n            case KEYCODE.SPACE:\n                // stopPropagation can make use onChange triggerd while typing space('') in Input\n                e.stopPropagation();\n                break;\n            case KEYCODE.ESC:\n                e.preventDefault();\n                this.state.visible && this.setVisible(false, 'esc');\n                break;\n            default:\n                break;\n        }\n        onKeyDown(e);\n    };\n    // 回车 选择高亮的 item\n    AutoComplete.prototype.chooseHighlightItem = function () {\n        if (!this.state.visible) {\n            return false;\n        }\n        var highlightKey = this.state.highlightKey;\n        var highlightItem = this.dataStore.getEnableDS().find(function (item) {\n            return highlightKey === \"\".concat(item.value);\n        });\n        if (highlightItem) {\n            this.handleSelectEvent(highlightKey, highlightItem, 'enter');\n        }\n    };\n    AutoComplete.prototype.hasClear = function () {\n        var _a = this.props, hasClear = _a.hasClear, readOnly = _a.readOnly, disabled = _a.disabled;\n        var value = this.state.value;\n        return value && hasClear && !readOnly && !disabled;\n    };\n    /**\n     * 选择器\n     * @override\n     * @param props -\n     */\n    AutoComplete.prototype.renderSelect = function (props) {\n        var _a;\n        if (props === void 0) { props = this.props; }\n        var placeholder = props.placeholder, size = props.size, prefix = props.prefix, className = props.className, style = props.style, label = props.label, readOnly = props.readOnly, disabled = props.disabled, highlightHolder = props.highlightHolder, locale = props.locale, hasClear = props.hasClear, state = props.state, rtl = props.rtl;\n        var others = obj.pickOthers(AutoComplete.propTypes, props);\n        var othersData = obj.pickAttrsWith(others, 'data-');\n        var value = this.state.value;\n        var visible = this.state.visible;\n        // // 下拉箭头\n        // const arrowNode = this.renderArrowNode(props, () => {\n        //     this.focusInput();\n        //     this.setVisible(!this.state.visible);\n        // });\n        // trigger className\n        var triggerClazz = classNames([\n            \"\".concat(prefix, \"select\"),\n            \"\".concat(prefix, \"select-auto-complete\"),\n            \"\".concat(prefix, \"size-\").concat(size),\n            className,\n        ], (_a = {},\n            _a[\"\".concat(prefix, \"active\")] = visible,\n            _a[\"\".concat(prefix, \"disabled\")] = disabled,\n            _a));\n        // highlightKey into placeholder\n        // compatible with selectPlaceHolder. TODO: removed in 2.0 version\n        var _placeholder = placeholder || locale.autoCompletePlaceholder || locale.autoCompletePlaceHolder;\n        if (highlightHolder && visible) {\n            _placeholder = this.state.highlightKey || _placeholder;\n        }\n        // Input props\n        var _inputProps = __assign(__assign({}, obj.pickOthers(othersData, others)), { state: state, ref: this.saveInputRef, hasClear: hasClear, value: value, size: size, disabled: disabled, readOnly: readOnly, placeholder: _placeholder, label: label, \n            // extra: arrowNode,\n            onChange: this.handleChange, onKeyDown: this.handleTriggerKeyDown });\n        return (React.createElement(\"span\", __assign({}, othersData, { className: triggerClazz, style: style, dir: rtl ? 'rtl' : undefined, ref: this.saveSelectRef, onClick: this.focusInput }),\n            React.createElement(Input, __assign({ role: \"combobox\", \"aria-autocomplete\": \"list\", \"aria-disabled\": disabled, \"aria-expanded\": this.state.visible ? 'true' : 'false' }, _inputProps)),\n            React.createElement(\"span\", { className: \"\".concat(prefix, \"sr-only\"), \"aria-live\": \"polite\" }, this.state.srReader)));\n    };\n    AutoComplete.prototype.render = function () {\n        var _this = this;\n        if (this.hasClear()) {\n            // clear 按钮点击后，会在 dom 结构中被删除掉，需要将其额外设置为安全节点，防止触发弹层的显示或隐藏\n            var safeNode = this.props.popupProps.safeNode || [];\n            var safeNodes = Array.isArray(safeNode) ? safeNode : [safeNode];\n            //@ts-expect-error 确实没有 clearNode，后续应该做删除处理\n            safeNodes.push(function () { return _this.clearNode; });\n            this.props.popupProps.safeNode = safeNodes;\n        }\n        return _super.prototype.render.call(this, Object.assign({}, this.props, { canCloseByTrigger: false }));\n    };\n    AutoComplete.propTypes = __assign(__assign({}, Base.propTypes), { value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), onChange: PropTypes.func, dataSource: PropTypes.arrayOf(PropTypes.oneOfType([\n            PropTypes.shape({\n                value: PropTypes.string,\n                label: PropTypes.any,\n                disabled: PropTypes.bool,\n                children: PropTypes.array,\n            }),\n            PropTypes.string,\n        ])), fillProps: PropTypes.string, itemRender: PropTypes.func, onKeyDown: PropTypes.func, highlightHolder: PropTypes.bool, style: PropTypes.object });\n    AutoComplete.defaultProps = __assign(__assign({}, Base.defaultProps), { onKeyDown: noop, fillProps: 'value' });\n    return AutoComplete;\n}(Base));\nexport default polyfill(AutoComplete);\n","import { __extends } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Select.Option\n */\nvar Option = /** @class */ (function (_super) {\n    __extends(Option, _super);\n    function Option() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Option.prototype.render = function () {\n        return this.props.children;\n    };\n    Option.propTypes = {\n        value: PropTypes.any.isRequired,\n        disabled: PropTypes.bool,\n        children: PropTypes.any,\n    };\n    Option._typeMark = 'next_select_option';\n    Option.displayName = 'Option';\n    return Option;\n}(React.Component));\nexport default Option;\n","import { __extends } from \"tslib\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * Select.OptionGroup\n */\nvar OptionGroup = /** @class */ (function (_super) {\n    __extends(OptionGroup, _super);\n    function OptionGroup() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    OptionGroup.prototype.render = function () {\n        return this.props.children;\n    };\n    OptionGroup.propTypes = {\n        label: PropTypes.node,\n        children: PropTypes.any,\n    };\n    OptionGroup._typeMark = 'next_select_option_group';\n    OptionGroup.displayName = 'OptionGroup';\n    return OptionGroup;\n}(React.Component));\nexport default OptionGroup;\n","import { __rest } from \"tslib\";\nimport ConfigProvider from '../config-provider';\nimport Select from './select';\nimport AutoComplete from './auto-complete';\nimport Option from './option';\nimport OptionGroup from './option-group';\nimport { assignSubComponent } from '../util/component';\n// compatible with 0.x version\nfunction transform(props, deprecated) {\n    var shape = props.shape, container = props.container, multiple = props.multiple, filterBy = props.filterBy, overlay = props.overlay, safeNode = props.safeNode, noFoundContent = props.noFoundContent, others = __rest(props, [\"shape\", \"container\", \"multiple\", \"filterBy\", \"overlay\", \"safeNode\", \"noFoundContent\"]);\n    var newprops = others;\n    if (shape === 'arrow-only') {\n        deprecated('shape=arrow-only', 'hasBorder=false', 'Select');\n        newprops.hasBorder = false;\n    }\n    if (container) {\n        deprecated('container', 'popupContainer', 'Select');\n        newprops.popupContainer = container;\n    }\n    if (multiple) {\n        deprecated('multiple', 'mode=multiple', 'Select');\n        newprops.mode = 'multiple';\n    }\n    if (filterBy) {\n        deprecated('filterBy', 'filter', 'Select');\n        newprops.filter = filterBy;\n    }\n    if (overlay) {\n        deprecated('overlay', 'popupContent', 'Select');\n        newprops.popupContent = overlay;\n        newprops.autoWidth = false;\n    }\n    if (noFoundContent) {\n        deprecated('noFoundContent', 'notFoundContent', 'Select');\n        newprops.notFoundContent = noFoundContent;\n    }\n    if (safeNode) {\n        deprecated('safeNode', 'popupProps={safeNode}', 'Select');\n        newprops.popupProps = {\n            safeNode: safeNode,\n        };\n    }\n    return newprops;\n}\nvar SelectWithSub = assignSubComponent(Select, {\n    AutoComplete: ConfigProvider.config(AutoComplete, {\n        componentName: 'Select',\n    }),\n    Option: Option,\n    OptionGroup: OptionGroup,\n    // compatible with 0.x version: Select.Combobox\n    Combobox: ConfigProvider.config(Select, {\n        transform: function (props, deprecated) {\n            deprecated('Select.Combobox', '<Select showSearch={true}/>', 'Select');\n            var newprops = transform(props, deprecated);\n            if (props.onInputUpdate) {\n                newprops.onSearch = props.onInputUpdate;\n                newprops.showSearch = true;\n            }\n            return newprops;\n        },\n    }),\n});\nexport default ConfigProvider.config(SelectWithSub, {\n    transform: transform,\n    exportNames: ['focusInput', 'handleSearchClear'],\n});\n","import { __assign, __extends, __read, __rest, __spreadArray } from \"tslib\";\nimport React, { isValidElement } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport Input from '../input';\nimport Select from '../select';\nimport Button from '../button';\nimport Icon from '../icon';\nimport { obj, func, KEYCODE } from '../util';\nimport zhCN from '../locale/zh-cn';\nvar Group = Input.Group;\nvar AutoComplete = Select.AutoComplete;\nvar noop = func.noop;\n/**\n * Search\n *  输入框部分继承 Select.AutoComplete 的能力，可以直接用 AutoComplete 的 api\n */\nvar Search = /** @class */ (function (_super) {\n    __extends(Search, _super);\n    function Search(props) {\n        var _this = _super.call(this, props) || this;\n        _this.inputRef = null;\n        _this.onChange = function (value, type) {\n            var _a;\n            var args = [];\n            for (var _i = 2; _i < arguments.length; _i++) {\n                args[_i - 2] = arguments[_i];\n            }\n            if (_this.props.disabled) {\n                return;\n            }\n            if (!('value' in _this.props)) {\n                _this.setState({ value: value });\n            }\n            (_a = _this.props).onChange.apply(_a, __spreadArray([value, type], __read(args), false));\n            if (type === 'enter') {\n                // 先记录，保留原先的执行顺序\n                var highlightKey = _this.highlightKey;\n                // 重置\n                _this.highlightKey = '';\n                // 若有匹配项，执行 onSearch\n                if (highlightKey) {\n                    _this.props.onSearch(value, _this.state.filterValue);\n                }\n            }\n        };\n        _this.onPressEnter = function () {\n            // 有匹配项情况，enter 会触发 onChange，由那里执行 onSearch\n            if (_this.highlightKey) {\n                return;\n            }\n            _this.onSearch();\n        };\n        _this.onSearch = function () {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.props.onSearch(_this.state.value, _this.state.filterValue);\n        };\n        _this.onFilterChange = function (filterValue) {\n            if (!('filterValue' in _this.props)) {\n                _this.setState({ filterValue: filterValue });\n            }\n            _this.props.onFilterChange(filterValue);\n        };\n        _this.onToggleHighlightItem = function (highlightKey) {\n            var _a;\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            _this.highlightKey = highlightKey;\n            (_a = _this.props).onToggleHighlightItem.apply(_a, __spreadArray([highlightKey], __read(args), false));\n        };\n        _this.onKeyDown = function (e) {\n            if (_this.props.disabled) {\n                return;\n            }\n            if (e.keyCode !== KEYCODE.ENTER) {\n                return;\n            }\n            _this.onSearch();\n        };\n        _this.saveInputRef = function (ref) {\n            if (ref && ref.getInstance()) {\n                _this.inputRef = ref.getInstance();\n            }\n        };\n        _this.focus = function (start, end, preventScroll) {\n            if (preventScroll === void 0) { preventScroll = false; }\n            _this.inputRef.focus(start, end, preventScroll);\n        };\n        var value = 'value' in props ? props.value : props.defaultValue;\n        var filterValue = 'filterValue' in props ? props.filterValue : props.defaultFilterValue;\n        _this.state = {\n            value: typeof value === 'undefined' ? '' : value,\n            filterValue: filterValue,\n            ifFocus: false,\n        };\n        _this.highlightKey = null;\n        _this.handleBlur = _this.handleBlur.bind(_this);\n        _this.handleFocus = _this.handleFocus.bind(_this);\n        return _this;\n    }\n    Search.getDerivedStateFromProps = function (nextProps, prevState) {\n        var nextState = {};\n        if ('value' in nextProps && nextProps.value !== prevState.value) {\n            var value = nextProps.value;\n            nextState.value = value === undefined || value === null ? '' : nextProps.value;\n        }\n        if ('filterValue' in nextProps && nextProps.filterValue !== prevState.filterValue) {\n            var filterValue = nextProps.filterValue;\n            nextState.filterValue = filterValue === undefined ? '' : filterValue;\n        }\n        if (Object.keys(nextState).length > 0) {\n            return nextState;\n        }\n        return null;\n    };\n    Search.prototype.handleFocus = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        this.setState({\n            ifFocus: true,\n        });\n        this.props.onFocus && (_a = this.props).onFocus.apply(_a, __spreadArray([], __read(args), false));\n    };\n    Search.prototype.handleBlur = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        this.setState({\n            ifFocus: false,\n        });\n        this.props.onBlur && (_a = this.props).onBlur.apply(_a, __spreadArray([], __read(args), false));\n    };\n    Search.prototype.render = function () {\n        var _a, _b, _c;\n        var _d = this.props, shape = _d.shape, filter = _d.filter, hasIcon = _d.hasIcon, disabled = _d.disabled, placeholder = _d.placeholder, type = _d.type, className = _d.className, style = _d.style, size = _d.size, prefix = _d.prefix, searchText = _d.searchText, dataSource = _d.dataSource, filterProps = _d.filterProps, buttonProps = _d.buttonProps, fillProps = _d.fillProps, popupContent = _d.popupContent, followTrigger = _d.followTrigger, hasClear = _d.hasClear, visible = _d.visible, locale = _d.locale, rtl = _d.rtl, icons = _d.icons, autoHighlightFirstItem = _d.autoHighlightFirstItem, others = __rest(_d, [\"shape\", \"filter\", \"hasIcon\", \"disabled\", \"placeholder\", \"type\", \"className\", \"style\", \"size\", \"prefix\", \"searchText\", \"dataSource\", \"filterProps\", \"buttonProps\", \"fillProps\", \"popupContent\", \"followTrigger\", \"hasClear\", \"visible\", \"locale\", \"rtl\", \"icons\", \"autoHighlightFirstItem\"]);\n        var ifFocus = this.state.ifFocus;\n        var cls = classNames((_a = {},\n            _a[\"\".concat(prefix, \"search\")] = true,\n            _a[\"\".concat(prefix, \"search-\").concat(shape)] = true,\n            _a[\"\".concat(prefix).concat(type)] = type,\n            _a[\"\".concat(prefix).concat(size)] = size,\n            _a[\"\".concat(prefix, \"disabled\")] = !!disabled,\n            _a[\"\".concat(prefix, \"search-focus\")] = ifFocus,\n            _a[className] = !!className,\n            _a));\n        var searchIcon = null, filterSelect = null, searchBtn = null, iconsSearch = icons.search;\n        if (!isValidElement(iconsSearch) && iconsSearch) {\n            iconsSearch = React.createElement(\"span\", null, iconsSearch);\n        }\n        if (shape === 'simple') {\n            var cls_1 = classNames((_b = {},\n                _b[\"\".concat(prefix, \"search-icon\")] = true,\n                _b[buttonProps.className] = !!buttonProps.className,\n                _b[\"\".concat(prefix, \"search-symbol-icon\")] = !iconsSearch,\n                _b));\n            hasIcon &&\n                (searchIcon = React.cloneElement(iconsSearch || React.createElement(Icon, { type: \"search\" }), __assign(__assign({ role: 'button', 'aria-disabled': disabled, 'aria-label': locale.buttonText }, buttonProps), { className: cls_1, onClick: this.onSearch, onKeyDown: this.onKeyDown })));\n        }\n        else {\n            var cls_2 = classNames((_c = {},\n                _c[\"\".concat(prefix, \"search-btn\")] = true,\n                _c[buttonProps.className] = !!buttonProps.className,\n                _c));\n            searchBtn = (React.createElement(Button, __assign({ tabIndex: 0, \"aria-disabled\": disabled, \"aria-label\": locale.buttonText, className: cls_2, disabled: disabled }, buttonProps, { onClick: this.onSearch, onKeyDown: this.onKeyDown }),\n                hasIcon\n                    ? iconsSearch || (React.createElement(Icon, { type: \"search\", className: \"\".concat(prefix, \"search-symbol-icon\") }))\n                    : null,\n                searchText ? (React.createElement(\"span\", { className: \"\".concat(prefix, \"search-btn-text\") }, searchText)) : null));\n        }\n        if (filter.length > 0) {\n            filterSelect = (React.createElement(Select, __assign({}, filterProps, { followTrigger: followTrigger, hasBorder: false, dataSource: filter, size: size, disabled: disabled, value: this.state.filterValue, onChange: this.onFilterChange })));\n        }\n        var _othersAttributes = obj.pickOthers(Search.propTypes, others);\n        var othersAttributes = _othersAttributes;\n        if (visible !== undefined) {\n            // 受控属性 visible 不能直接写在组件上\n            othersAttributes.visible = Boolean(visible);\n        }\n        var dataAttr = obj.pickAttrsWith(others, 'data-');\n        var left = (React.createElement(Group, { addonBefore: filterSelect, className: \"\".concat(prefix, \"search-left\"), addonBeforeClassName: \"\".concat(prefix, \"search-left-addon\") },\n            React.createElement(AutoComplete, __assign({ \"aria-label\": locale.buttonText }, othersAttributes, { followTrigger: followTrigger, role: \"searchbox\", \"aria-expanded\": undefined, hasClear: hasClear, className: \"\".concat(prefix, \"search-input\"), size: size, fillProps: fillProps, placeholder: placeholder, dataSource: dataSource, innerAfter: searchIcon, onPressEnter: this.onPressEnter, value: this.state.value, onChange: this.onChange, onToggleHighlightItem: this.onToggleHighlightItem, autoHighlightFirstItem: autoHighlightFirstItem, popupContent: popupContent, disabled: disabled, ref: this.saveInputRef, onFocus: this.handleFocus, onBlur: this.handleBlur }))));\n        return (React.createElement(\"span\", __assign({ className: cls, style: style }, dataAttr, { dir: rtl ? 'rtl' : undefined }), searchBtn ? React.createElement(Group, { addonAfter: searchBtn }, left) : left));\n    };\n    Search.propTypes = {\n        prefix: PropTypes.string,\n        shape: PropTypes.oneOf(['normal', 'simple']),\n        type: PropTypes.oneOf(['primary', 'secondary', 'normal', 'dark']),\n        size: PropTypes.oneOf(['large', 'medium']),\n        defaultValue: PropTypes.string,\n        value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n        onChange: PropTypes.func,\n        onSearch: PropTypes.func,\n        defaultFilterValue: PropTypes.string,\n        fillProps: PropTypes.string,\n        filter: PropTypes.array,\n        filterValue: PropTypes.string,\n        onFilterChange: PropTypes.func,\n        dataSource: PropTypes.array,\n        placeholder: PropTypes.string,\n        searchText: PropTypes.node,\n        style: PropTypes.object,\n        className: PropTypes.string,\n        filterProps: PropTypes.object,\n        buttonProps: PropTypes.object,\n        popupContent: PropTypes.node,\n        followTrigger: PropTypes.bool,\n        visible: PropTypes.bool,\n        hasClear: PropTypes.bool,\n        hasIcon: PropTypes.bool,\n        disabled: PropTypes.bool,\n        locale: PropTypes.object,\n        rtl: PropTypes.bool,\n        icons: PropTypes.object,\n        autoHighlightFirstItem: PropTypes.bool,\n        onToggleHighlightItem: PropTypes.func,\n    };\n    Search.defaultProps = {\n        prefix: 'next-',\n        shape: 'normal',\n        type: 'normal',\n        size: 'medium',\n        hasIcon: true,\n        filter: [],\n        locale: zhCN.Search,\n        buttonProps: {},\n        onChange: noop,\n        onSearch: noop,\n        onFilterChange: noop,\n        onToggleHighlightItem: noop,\n        hasClear: false,\n        disabled: false,\n        icons: {},\n        autoHighlightFirstItem: true,\n    };\n    Search.displayName = 'Search';\n    return Search;\n}(React.Component));\nexport default polyfill(Search);\n","import { __rest } from \"tslib\";\nimport ConfigProvider from '../config-provider';\nimport Search from './Search';\nexport default ConfigProvider.config(Search, {\n    transform: function (props, deprecated) {\n        var onInputFocus = props.onInputFocus, overlayVisible = props.overlayVisible, combox = props.combox, others = __rest(props, [\"onInputFocus\", \"overlayVisible\", \"combox\"]);\n        var newprops = others;\n        if (onInputFocus) {\n            deprecated('onInputFocus', 'onFocus', 'Search');\n            newprops.onFocus = onInputFocus;\n        }\n        if ('overlayVisible' in props) {\n            deprecated('overlayVisible', 'visible', 'Search');\n            newprops.visible = overlayVisible;\n        }\n        if (combox) {\n            deprecated('combox', 'popupContent', 'Search');\n            newprops.popupContent = combox;\n        }\n        return newprops;\n    },\n});\n","export let nativeSelectionEnabled = true;\n\nconst preventSelection = (e: Event) => {\n  if (nativeSelectionEnabled) {\n    return null;\n  }\n  e.preventDefault();\n  e.stopPropagation();\n  return false;\n};\ndocument.addEventListener(\"selectstart\", preventSelection, true);\ndocument.addEventListener(\"dragstart\", preventSelection, true);\n\nexport function setNativeSelection(enableFlag: boolean) {\n  nativeSelectionEnabled = enableFlag;\n}\n","import { isI18NObject } from \"./is-object\";\nimport { get } from \"lodash\";\nimport { IPublicModelComponentMeta } from \"@yuntoo/page-types\";\nimport { IPublicEnumTransformStage } from \"@yuntoo/page-shared\";\nimport { Logger } from \"./logger\";\n\nconst logger = new Logger({ level: \"warn\", bizName: \"utils\" });\n\ninterface Variable {\n  type: \"variable\";\n  variable: string;\n  value: any;\n}\n\nexport function isVariable(obj: any): obj is Variable {\n  if (!obj || typeof obj !== \"object\") {\n    return false;\n  }\n  return obj.type === \"variable\";\n}\n\nexport function isUseI18NSetter(prototype: any, propName: string) {\n  const configure = prototype?.options?.configure;\n  if (Array.isArray(configure)) {\n    return configure.some((c) => {\n      return (\n        c.name === propName && c?.setter?.type?.displayName === \"I18nSetter\"\n      );\n    });\n  }\n  return false;\n}\n\nexport function convertToI18NObject(v: string | any, locale: string = \"zh-CN\") {\n  if (isI18NObject(v)) return v;\n  return { type: \"i18n\", use: locale, [locale]: v };\n}\n\nexport function isString(v: any): v is string {\n  return typeof v === \"string\";\n}\n\nfunction _innerWaitForThing(obj: any, path: string): Promise<any> {\n  const timeGap = 200;\n  return new Promise((resolve, reject) => {\n    setTimeout(() => {\n      const thing = get(obj, path);\n      if (thing) {\n        return resolve(thing);\n      }\n      reject();\n    }, timeGap);\n  }).catch(() => {\n    return _innerWaitForThing(obj, path);\n  });\n}\n\nexport function waitForThing(obj: any, path: string): Promise<any> {\n  const thing = get(obj, path);\n  if (thing) {\n    return Promise.resolve(thing);\n  }\n  return _innerWaitForThing(obj, path);\n}\n\nexport function arrShallowEquals(arr1: any[], arr2: any[]): boolean {\n  if (!Array.isArray(arr1) || !Array.isArray(arr2)) return false;\n  if (arr1.length !== arr2.length) return false;\n  return arr1.every((item) => arr2.includes(item));\n}\n\n/**\n * 判断当前 meta 是否从 vc prototype 转换而来\n * @param meta\n */\nexport function isFromVC(meta: IPublicModelComponentMeta) {\n  return !!meta?.getMetadata().configure?.advanced;\n}\n\nexport function executePendingFn(fn: () => void, timeout: number = 2000) {\n  return setTimeout(fn, timeout);\n}\n\nconst stageList = [\"render\", \"serilize\", \"save\", \"clone\", \"init\", \"upgrade\"];\n\n/**\n * 兼容原来的数字版本的枚举对象\n * @param stage\n * @returns\n */\nexport function compatStage(\n  stage: IPublicEnumTransformStage | number,\n): IPublicEnumTransformStage {\n  if (typeof stage === \"number\") {\n    console.warn(\n      \"stage 直接指定为数字的使用方式已经过时，将在下一版本移除，请直接使用 IPublicEnumTransformStage.Render|Serilize|Save|Clone|Init|Upgrade\",\n    );\n    return stageList[stage - 1] as IPublicEnumTransformStage;\n  }\n  return stage as IPublicEnumTransformStage;\n}\n\nexport function invariant(check: any, message: string, thing?: any) {\n  if (!check) {\n    throw new Error(\n      `Invariant failed: ${message}${thing ? ` in '${thing}'` : \"\"}`,\n    );\n  }\n}\n\nexport function deprecate(fail: any, message: string, alterative?: string) {\n  if (fail) {\n    logger.warn(\n      `Deprecation: ${message}` +\n        (alterative ? `, use ${alterative} instead.` : \"\"),\n    );\n  }\n}\n\nexport function isRegExp(obj: any): obj is RegExp {\n  if (!obj || typeof obj !== \"object\") {\n    return false;\n  }\n  return \"test\" in obj && \"exec\" in obj && \"compile\" in obj;\n}\n\n/**\n * The prop supportVariable SHOULD take precedence over default global supportVariable.\n * @param propSupportVariable prop supportVariable\n * @param globalSupportVariable global supportVariable\n * @returns\n */\nexport function shouldUseVariableSetter(\n  propSupportVariable: boolean | undefined,\n  globalSupportVariable: boolean,\n) {\n  if (propSupportVariable === false) return false;\n  return propSupportVariable || globalSupportVariable;\n}\n","import { IPublicTypeI18nData } from \"@yuntoo/page-types\";\nimport { isObject } from \"../is-object\";\n\nexport function isI18nData(obj: any): obj is IPublicTypeI18nData {\n  if (!isObject(obj)) {\n    return false;\n  }\n  return obj.type === \"i18n\";\n}\n","import { IPublicTypeJSExpression } from \"@yuntoo/page-types\";\nimport { isObject } from \"../is-object\";\n\n/**\n * 为了避免把 { type: 'JSExpression', extType: 'function' } 误判为表达式，故增加如下逻辑。\n *\n * 引擎中关于函数的表达：\n *  开源版本：{ type: 'JSFunction', source: '', value: '' }\n *  内部版本：{ type: 'JSExpression', source: '', value: '', extType: 'function' }\n *  能力是对标的，不过开源的 react-renderer 只认识第一种，而内部只识别第二种（包括 Java 代码、RE）。\n * @param data\n * @returns\n */\nexport function isJSExpression(data: any): data is IPublicTypeJSExpression {\n  if (!isObject(data)) {\n    return false;\n  }\n  return data.type === \"JSExpression\" && data.extType !== \"function\";\n}\n","import { IPublicTypeJSFunction } from \"@yuntoo/page-types\";\nimport { isObject } from \"../is-object\";\n\ninterface InnerJsFunction {\n  type: \"JSExpression\";\n  source: string;\n  value: string;\n  extType: \"function\";\n}\n\n/**\n *  内部版本 的 { type: 'JSExpression', source: '', value: '', extType: 'function' } 能力上等同于 JSFunction\n */\nexport function isInnerJsFunction(data: any): data is InnerJsFunction {\n  if (!isObject(data)) {\n    return false;\n  }\n  return data.type === \"JSExpression\" && data.extType === \"function\";\n}\n\nexport function isJSFunction(data: any): data is IPublicTypeJSFunction {\n  if (!isObject(data)) {\n    return false;\n  }\n  return data.type === \"JSFunction\" || isInnerJsFunction(data);\n}\n","export enum IPublicEnumTransformStage {\n  Render = \"render\",\n  Serilize = \"serilize\",\n  Save = \"save\",\n  Clone = \"clone\",\n  Init = \"init\",\n  Upgrade = \"upgrade\",\n}\n/**\n * @deprecated use IPublicEnumTransformStage instead\n */\nexport enum TransformStage {\n  Render = \"render\",\n  Serilize = \"serilize\",\n  Save = \"save\",\n  Clone = \"clone\",\n  Init = \"init\",\n  Upgrade = \"upgrade\",\n}\n","import {\n  IPublicTypePropType,\n  IPublicTypeRequiredType,\n} from \"@yuntoo/page-types\";\n\nexport function isRequiredPropType(\n  propType: IPublicTypePropType,\n): propType is IPublicTypeRequiredType {\n  if (!propType) {\n    return false;\n  }\n  return (\n    typeof propType === \"object\" &&\n    propType.type &&\n    [\n      \"array\",\n      \"bool\",\n      \"func\",\n      \"number\",\n      \"object\",\n      \"string\",\n      \"node\",\n      \"element\",\n      \"any\",\n    ].includes(propType.type)\n  );\n}\n","/**\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","import { Menu, Icon } from \"@alifd/next\";\nimport {\n  IPublicModelNode,\n  IPublicModelPluginContext,\n  IPublicTypeContextMenuAction,\n  IPublicTypeContextMenuItem,\n  IPublicTypeI18nData,\n  IPublicTypeHelpTipConfig,\n} from \"@yuntoo/page-types\";\nimport { IPublicEnumContextMenuType } from \"@yuntoo/page-shared\";\nimport { Logger } from \"./logger\";\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport \"./context-menu.less\";\n\nconst logger = new Logger({ level: \"warn\", bizName: \"utils\" });\n\nconst MAX_LEVEL = 2;\n\ninterface IOptions {\n  nodes?: IPublicModelNode[] | null;\n  destroy?: Function;\n  pluginContext: IPublicModelPluginContext;\n}\n\nconst Tree = (props: {\n  node?: IPublicModelNode | null;\n  children?: React.ReactNode;\n  options: IOptions;\n}) => {\n  const { node } = props;\n\n  if (!node) {\n    return React.createElement(\n      \"div\",\n      { className: \"engine-context-menu-tree-wrap\" },\n      props.children,\n    );\n  }\n\n  const { common } = props.options.pluginContext || {};\n  const { intl } = common?.utils || {};\n  const indent = node.zLevel * 8 + 32;\n  const style = {\n    paddingLeft: indent,\n    marginLeft: -indent,\n    marginRight: -10,\n    paddingRight: 10,\n  };\n\n  return React.createElement(\n    Tree,\n    { ...props, node: node.parent },\n    React.createElement(\n      \"div\",\n      {\n        className: \"engine-context-menu-title\",\n        onClick: () => {\n          props.options.destroy?.();\n          node.select();\n        },\n        style,\n      },\n      props.options.nodes?.[0].id === node.id\n        ? React.createElement(Icon, {\n            className: \"engine-context-menu-tree-selecte-icon\",\n            size: \"small\",\n            type: \"success\",\n          })\n        : null,\n      typeof node.title === \"string\" ||\n        (node.title &&\n          typeof node.title === \"object\" &&\n          (node.title as IPublicTypeI18nData).type === \"i18n\")\n        ? intl?.(node.title as string & IPublicTypeI18nData)\n        : (node.title as React.ReactNode),\n    ),\n    React.createElement(\n      \"div\",\n      { className: \"engine-context-menu-tree-children\" },\n      props.children,\n    ),\n  );\n};\n\nlet destroyFn: Function | undefined;\n\nexport function parseContextMenuAsReactNode(\n  menus: IPublicTypeContextMenuItem[],\n  options: IOptions,\n): React.ReactNode {\n  const { common, commonUI } = options.pluginContext || {};\n  const { intl = (title: any) => title } = common?.utils || {};\n  const { HelpTip } = commonUI || {};\n\n  const children: React.ReactElement[] = [];\n  menus.forEach((menu, index) => {\n    if (menu.type === IPublicEnumContextMenuType.SEPARATOR) {\n      children.push(\n        React.createElement(Menu.Divider as any, {\n          key: menu.name || `divider-${index}`,\n        }),\n      );\n      return;\n    }\n\n    if (menu.type === IPublicEnumContextMenuType.MENU_ITEM) {\n      if (menu.items && menu.items.length) {\n        children.push(\n          React.createElement(\n            Menu.PopupItem as any,\n            {\n              className: classNames(\"engine-context-menu-item\", {\n                disabled: menu.disabled,\n              }),\n              key: menu.name || `popup-${index}`,\n              label: React.createElement(\n                \"div\",\n                { className: \"engine-context-menu-text\" },\n                typeof menu.title === \"string\" ||\n                  (menu.title &&\n                    typeof menu.title === \"object\" &&\n                    (menu.title as IPublicTypeI18nData).type === \"i18n\")\n                  ? intl?.(menu.title as string & IPublicTypeI18nData)\n                  : menu.title,\n              ),\n            },\n            React.createElement(\n              Menu,\n              { className: \"next-context engine-context-menu\" },\n              parseContextMenuAsReactNode(menu.items, options),\n            ),\n          ),\n        );\n      } else {\n        children.push(\n          React.createElement(\n            Menu.Item as any,\n            {\n              className: classNames(\"engine-context-menu-item\", {\n                disabled: menu.disabled,\n              }),\n              disabled: menu.disabled,\n              onClick: () => {\n                menu.action?.();\n              },\n              key: menu.name || `item-${index}`,\n            },\n            React.createElement(\n              \"div\",\n              { className: \"engine-context-menu-text\" },\n              menu.title\n                ? typeof menu.title === \"string\" ||\n                  (menu.title &&\n                    typeof menu.title === \"object\" &&\n                    (menu.title as IPublicTypeI18nData).type === \"i18n\")\n                  ? intl?.(menu.title as string & IPublicTypeI18nData)\n                  : menu.title\n                : null,\n              menu.help && HelpTip\n                ? React.createElement(\n                    HelpTip as unknown as React.ComponentType<any>,\n                    { size: \"xs\", help: menu.help, direction: \"right\" },\n                  )\n                : null,\n            ),\n          ),\n        );\n      }\n    }\n\n    if (menu.type === IPublicEnumContextMenuType.NODE_TREE) {\n      children.push(\n        React.createElement(Tree, {\n          key: `tree-${index}`,\n          node: options.nodes?.[0],\n          options,\n        }),\n      );\n    }\n  });\n\n  return children;\n}\n\nexport function parseContextMenuProperties(\n  menus: (\n    | IPublicTypeContextMenuAction\n    | Omit<IPublicTypeContextMenuAction, \"items\">\n  )[],\n  options: IOptions & {\n    event?: MouseEvent;\n  },\n  level = 1,\n): IPublicTypeContextMenuItem[] {\n  destroyFn?.();\n\n  const { nodes, destroy } = options;\n  if (level > MAX_LEVEL) {\n    logger.warn(\n      \"context menu level is too deep, please check your context menu config\",\n    );\n    return [];\n  }\n\n  return menus\n    .filter(\n      (menu) =>\n        !menu.condition || (menu.condition && menu.condition(nodes || [])),\n    )\n    .map((menu) => {\n      const {\n        name,\n        title,\n        type = IPublicEnumContextMenuType.MENU_ITEM,\n        help,\n      } = menu;\n\n      const result: IPublicTypeContextMenuItem = {\n        name,\n        title,\n        type,\n        help,\n        action: () => {\n          destroy?.();\n          menu.action?.(nodes || [], options.event);\n        },\n        disabled: (menu.disabled && menu.disabled(nodes || [])) || false,\n      };\n\n      if (\"items\" in menu && menu.items) {\n        result.items = parseContextMenuProperties(\n          typeof menu.items === \"function\"\n            ? menu.items(nodes || [])\n            : menu.items,\n          options,\n          level + 1,\n        );\n      }\n\n      return result;\n    })\n    .reduce(\n      (\n        menus: IPublicTypeContextMenuItem[],\n        currentMenu: IPublicTypeContextMenuItem,\n      ) => {\n        if (!currentMenu.name) {\n          return menus.concat([currentMenu]);\n        }\n\n        const index = menus.find((item) => item.name === currentMenu.name);\n        if (!index) {\n          return menus.concat([currentMenu]);\n        } else {\n          return menus;\n        }\n      },\n      [],\n    );\n}\n\nlet cachedMenuItemHeight: string | undefined;\n\nfunction getMenuItemHeight() {\n  if (cachedMenuItemHeight) {\n    return cachedMenuItemHeight;\n  }\n  const root = document.documentElement;\n  const styles = getComputedStyle(root);\n  const menuItemHeight = styles\n    .getPropertyValue(\"--context-menu-item-height\")\n    .trim();\n  cachedMenuItemHeight = menuItemHeight;\n\n  return menuItemHeight;\n}\n\nexport function createContextMenu(\n  children: React.ReactNode[],\n  {\n    event,\n    offset = [0, 0],\n  }: {\n    event: MouseEvent | React.MouseEvent;\n    offset?: [number, number];\n  },\n) {\n  event.preventDefault();\n  event.stopPropagation();\n\n  const viewportWidth = window.innerWidth;\n  const viewportHeight = window.innerHeight;\n  const dividerCount = React.Children.count(\n    children.filter(\n      (child) => React.isValidElement(child) && child.type === Menu.Divider,\n    ),\n  );\n  const popupItemCount = React.Children.count(\n    children.filter(\n      (child) =>\n        React.isValidElement(child) &&\n        (child.type === Menu.PopupItem || child.type === Menu.Item),\n    ),\n  );\n  const menuHeight =\n    popupItemCount * parseInt(getMenuItemHeight(), 10) + dividerCount * 8 + 16;\n  const menuWidthLimit = 200;\n  let x = event.clientX + offset[0];\n  let y = event.clientY + offset[1];\n  if (x + menuWidthLimit > viewportWidth) {\n    x = x - menuWidthLimit;\n  }\n  if (y + menuHeight > viewportHeight) {\n    y = y - menuHeight;\n  }\n\n  const menuInstance = Menu.create({\n    target: document.body,\n    offset: [x, y],\n    children: children as any,\n    className: \"engine-context-menu\",\n  });\n\n  destroyFn = (menuInstance as any).destroy;\n\n  return destroyFn;\n}\n","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n  REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n  if (\"object\" === typeof object && null !== object) {\n    var $$typeof = object.$$typeof;\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        switch (((object = object.type), object)) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n          case REACT_VIEW_TRANSITION_TYPE:\n            return object;\n          default:\n            switch (((object = object && object.$$typeof), object)) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n                return object;\n              case REACT_CONSUMER_TYPE:\n                return object;\n              default:\n                return $$typeof;\n            }\n        }\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n  return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n};\nexports.isForwardRef = function (object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n  return \"string\" === typeof type ||\n    \"function\" === typeof type ||\n    type === REACT_FRAGMENT_TYPE ||\n    type === REACT_PROFILER_TYPE ||\n    type === REACT_STRICT_MODE_TYPE ||\n    type === REACT_SUSPENSE_TYPE ||\n    type === REACT_SUSPENSE_LIST_TYPE ||\n    (\"object\" === typeof type &&\n      null !== type &&\n      (type.$$typeof === REACT_LAZY_TYPE ||\n        type.$$typeof === REACT_MEMO_TYPE ||\n        type.$$typeof === REACT_CONTEXT_TYPE ||\n        type.$$typeof === REACT_CONSUMER_TYPE ||\n        type.$$typeof === REACT_FORWARD_REF_TYPE ||\n        type.$$typeof === REACT_CLIENT_REFERENCE ||\n        void 0 !== type.getModuleId))\n    ? !0\n    : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function typeOf(object) {\n      if (\"object\" === typeof object && null !== object) {\n        var $$typeof = object.$$typeof;\n        switch ($$typeof) {\n          case REACT_ELEMENT_TYPE:\n            switch (((object = object.type), object)) {\n              case REACT_FRAGMENT_TYPE:\n              case REACT_PROFILER_TYPE:\n              case REACT_STRICT_MODE_TYPE:\n              case REACT_SUSPENSE_TYPE:\n              case REACT_SUSPENSE_LIST_TYPE:\n              case REACT_VIEW_TRANSITION_TYPE:\n                return object;\n              default:\n                switch (((object = object && object.$$typeof), object)) {\n                  case REACT_CONTEXT_TYPE:\n                  case REACT_FORWARD_REF_TYPE:\n                  case REACT_LAZY_TYPE:\n                  case REACT_MEMO_TYPE:\n                    return object;\n                  case REACT_CONSUMER_TYPE:\n                    return object;\n                  default:\n                    return $$typeof;\n                }\n            }\n          case REACT_PORTAL_TYPE:\n            return $$typeof;\n        }\n      }\n    }\n    var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n    Symbol.for(\"react.provider\");\n    var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n    exports.ContextConsumer = REACT_CONSUMER_TYPE;\n    exports.ContextProvider = REACT_CONTEXT_TYPE;\n    exports.Element = REACT_ELEMENT_TYPE;\n    exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.Lazy = REACT_LAZY_TYPE;\n    exports.Memo = REACT_MEMO_TYPE;\n    exports.Portal = REACT_PORTAL_TYPE;\n    exports.Profiler = REACT_PROFILER_TYPE;\n    exports.StrictMode = REACT_STRICT_MODE_TYPE;\n    exports.Suspense = REACT_SUSPENSE_TYPE;\n    exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n    exports.isContextConsumer = function (object) {\n      return typeOf(object) === REACT_CONSUMER_TYPE;\n    };\n    exports.isContextProvider = function (object) {\n      return typeOf(object) === REACT_CONTEXT_TYPE;\n    };\n    exports.isElement = function (object) {\n      return (\n        \"object\" === typeof object &&\n        null !== object &&\n        object.$$typeof === REACT_ELEMENT_TYPE\n      );\n    };\n    exports.isForwardRef = function (object) {\n      return typeOf(object) === REACT_FORWARD_REF_TYPE;\n    };\n    exports.isFragment = function (object) {\n      return typeOf(object) === REACT_FRAGMENT_TYPE;\n    };\n    exports.isLazy = function (object) {\n      return typeOf(object) === REACT_LAZY_TYPE;\n    };\n    exports.isMemo = function (object) {\n      return typeOf(object) === REACT_MEMO_TYPE;\n    };\n    exports.isPortal = function (object) {\n      return typeOf(object) === REACT_PORTAL_TYPE;\n    };\n    exports.isProfiler = function (object) {\n      return typeOf(object) === REACT_PROFILER_TYPE;\n    };\n    exports.isStrictMode = function (object) {\n      return typeOf(object) === REACT_STRICT_MODE_TYPE;\n    };\n    exports.isSuspense = function (object) {\n      return typeOf(object) === REACT_SUSPENSE_TYPE;\n    };\n    exports.isSuspenseList = function (object) {\n      return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n    };\n    exports.isValidElementType = function (type) {\n      return \"string\" === typeof type ||\n        \"function\" === typeof type ||\n        type === REACT_FRAGMENT_TYPE ||\n        type === REACT_PROFILER_TYPE ||\n        type === REACT_STRICT_MODE_TYPE ||\n        type === REACT_SUSPENSE_TYPE ||\n        type === REACT_SUSPENSE_LIST_TYPE ||\n        (\"object\" === typeof type &&\n          null !== type &&\n          (type.$$typeof === REACT_LAZY_TYPE ||\n            type.$$typeof === REACT_MEMO_TYPE ||\n            type.$$typeof === REACT_CONTEXT_TYPE ||\n            type.$$typeof === REACT_CONSUMER_TYPE ||\n            type.$$typeof === REACT_FORWARD_REF_TYPE ||\n            type.$$typeof === REACT_CLIENT_REFERENCE ||\n            void 0 !== type.getModuleId))\n        ? !0\n        : !1;\n    };\n    exports.typeOf = typeOf;\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // 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        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            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","import * as ReactIs from \"react-is\";\nimport { default as ReactPropTypesSecret } from \"prop-types/lib/ReactPropTypesSecret\";\nimport { default as factoryWithTypeCheckers } from \"prop-types/factoryWithTypeCheckers\";\nimport { IPublicTypePropType } from \"@yuntoo/page-types\";\nimport { isRequiredPropType } from \"./check-types/is-required-prop-type\";\nimport { Logger } from \"./logger\";\n\nconst PropTypes2 = factoryWithTypeCheckers(ReactIs.isElement, true);\nconst logger = new Logger({ level: \"warn\", bizName: \"utils\" });\n\nexport function transformPropTypesRuleToString(\n  rule: IPublicTypePropType | string,\n): string {\n  if (!rule) {\n    return \"PropTypes.any\";\n  }\n\n  if (typeof rule === \"string\") {\n    return rule.startsWith(\"PropTypes.\") ? rule : `PropTypes.${rule}`;\n  }\n\n  if (isRequiredPropType(rule)) {\n    const { type, isRequired } = rule;\n    return `PropTypes.${type}${isRequired ? \".isRequired\" : \"\"}`;\n  }\n\n  const { type, value } = rule;\n  switch (type) {\n    case \"oneOf\":\n      return `PropTypes.oneOf([${value\n        .map((item: any) => `\"${item}\"`)\n        .join(\",\")}])`;\n    case \"oneOfType\":\n      return `PropTypes.oneOfType([${value\n        .map((item: any) => transformPropTypesRuleToString(item))\n        .join(\", \")}])`;\n    case \"arrayOf\":\n    case \"objectOf\":\n      return `PropTypes.${type}(${transformPropTypesRuleToString(value)})`;\n    case \"shape\":\n    case \"exact\":\n      return `PropTypes.${type}({${value\n        .map(\n          (item: any) =>\n            `${item.name}: ${transformPropTypesRuleToString(item.propType)}`,\n        )\n        .join(\",\")}})`;\n    default:\n      logger.error(`Unknown prop type: ${type}`);\n  }\n\n  return \"PropTypes.any\";\n}\n\nexport function checkPropTypes(\n  value: any,\n  name: string,\n  rule: any,\n  componentName: string,\n): boolean {\n  let ruleFunction = rule;\n  if (typeof rule === \"object\") {\n    ruleFunction = new Function(\n      `\"use strict\"; const PropTypes = arguments[0]; return ${transformPropTypesRuleToString(\n        rule,\n      )}`,\n    )(PropTypes2);\n  }\n  if (typeof rule === \"string\") {\n    ruleFunction = new Function(\n      `\"use strict\"; const PropTypes = arguments[0]; return ${transformPropTypesRuleToString(\n        rule,\n      )}`,\n    )(PropTypes2);\n  }\n  if (!ruleFunction || typeof ruleFunction !== \"function\") {\n    logger.warn(\"checkPropTypes should have a function type rule argument\");\n    return true;\n  }\n  const err = ruleFunction(\n    {\n      [name]: value,\n    },\n    name,\n    componentName,\n    \"prop\",\n    null,\n    ReactPropTypesSecret,\n  );\n  if (err) {\n    logger.warn(err);\n  }\n  return !err;\n}\n","/**\n * 工具函数集合\n * 提供数据源引擎所需的辅助函数\n */\n/* eslint-disable no-new-func */\n\nimport {\n  IDataSourceRuntimeContext,\n  InterpretDataSourceConfig,\n  IPublicTypeJSExpression,\n  IPublicTypeJSFunction,\n  RuntimeOptionsConfig,\n  CompositeValue,\n  JSONObject,\n} from \"@yuntoo/page-types\";\nimport { isJSExpression, isJSFunction } from \"@yuntoo/page-utils\";\n\n/**\n * 检查值是否为对象类型\n * @param obj - 需要检查的值\n * @returns 是否为对象\n */\nfunction isObject(obj: unknown): boolean {\n  return Object.prototype.toString.call(obj).indexOf(\"Object\") !== -1;\n}\n\n/**\n * 转换 JS 表达式为可执行函数\n * @param code - JS 表达式代码\n * @param context - 运行时上下文\n * @returns 转换后的可执行函数结果\n */\nexport const transformExpression = (\n  code: string,\n  context: IDataSourceRuntimeContext,\n): unknown => {\n  // 补充异常情况兼容性\n  if (code === undefined) {\n    return function () {};\n  }\n  if (code === \"\") {\n    return function () {\n      return \"\";\n    };\n  }\n  try {\n    return new Function(`return (${code})`).call(context);\n  } catch (error) {\n    // TODO: 此处不需要 error 提醒，因为表达式错误是正常的，需要忽略\n    // console.error(\n    //   `transformExpression error, code is ${code}, context is ${context}, error is ${error}`,\n    // );\n    return undefined;\n  }\n};\n\n/**\n * 转换 JS 函数为可执行函数\n * @param code - JS 函数代码\n * @param context - 运行时上下文\n * @returns 转换后的可执行函数\n */\nexport const transformFunction = (\n  code: string,\n  context: IDataSourceRuntimeContext,\n): Function => {\n  if (code === undefined) {\n    return function () {};\n  }\n  if (code === \"\") {\n    return function () {\n      return \"\";\n    };\n  }\n  try {\n    return new Function(`return (${code})`).call(context).bind(context);\n  } catch (error) {\n    console.error(\n      `transformFunction error, code is ${code}, context is ${context}, error is ${error}`,\n    );\n    return function () {};\n  }\n};\n\n/**\n * 转换字符串布尔值为实际布尔值\n * @param str - 字符串表示的布尔值\n * @returns 转换后的布尔值\n */\nexport const transformBoolStr = (str: string): boolean => {\n  return str !== \"false\";\n};\n\n/**\n * 获取运行时 JS 值\n * @param value - JS 表达式或函数对象\n * @param context - 运行时上下文\n * @returns 运行时计算后的值\n */\nexport const getRuntimeJsValue = (\n  value: IPublicTypeJSExpression | IPublicTypeJSFunction,\n  context: IDataSourceRuntimeContext,\n): unknown => {\n  if (![\"JSExpression\", \"JSFunction\"].includes(value.type)) {\n    console.error(`translate error, value is ${JSON.stringify(value)}`);\n    return \"\";\n  }\n  // TODO: 类型修复\n  const code = value.compiled || value.value;\n  return value.type === \"JSFunction\"\n    ? transformFunction(code, context)\n    : transformExpression(code, context);\n};\n\n/**\n * 获取运行时基础值，根据类型转换\n * @param type - 目标类型\n * @param value - 需要转换的值\n * @returns 转换后的值\n */\nexport const getRuntimeBaseValue = (type: string, value: unknown): unknown => {\n  switch (type) {\n    case \"string\":\n      return `${value}`;\n    case \"boolean\":\n      return typeof value === \"string\"\n        ? transformBoolStr(value as string)\n        : !!value;\n    case \"number\":\n      return Number(value);\n    default:\n      return value;\n  }\n};\n\n/**\n * 从配置中获取运行时值\n * @param type - 目标类型\n * @param value - 复合值\n * @param context - 运行时上下文\n * @returns 运行时值\n */\nexport const getRuntimeValueFromConfig = (\n  type: string,\n  value: CompositeValue,\n  context: IDataSourceRuntimeContext,\n): unknown => {\n  if (value === undefined) {\n    return undefined;\n  }\n\n  // 类型检查和转换\n  if (typeof value === \"object\" && value !== null) {\n    if (isJSExpression(value) || isJSFunction(value)) {\n      // 转换为标准类型\n      const jsValue = {\n        type: isJSExpression(value) ? \"JSExpression\" : \"JSFunction\",\n        value: (value as any).value,\n        compiled: (value as any).compiled,\n      } as IPublicTypeJSExpression | IPublicTypeJSFunction;\n\n      return getRuntimeBaseValue(type, getRuntimeJsValue(jsValue, context));\n    }\n  }\n\n  return value;\n};\n\n/**\n * 构建 JSON 对象，处理其中的 JSExpression\n * @param params - 参数对象或 JSExpression\n * @param context - 运行时上下文\n * @returns 处理后的 JSON 对象\n */\nexport const buildJsonObj = (\n  params: JSONObject | IPublicTypeJSExpression,\n  context: IDataSourceRuntimeContext,\n): Record<string, unknown> | unknown => {\n  if (typeof params === \"object\" && params !== null && isJSExpression(params)) {\n    // 安全获取 JSExpression 值\n    const jsExprValue = (params as any).value;\n    if (typeof jsExprValue === \"string\") {\n      return transformExpression(jsExprValue, context);\n    }\n    return undefined;\n  } else if (isObject(params)) {\n    // 处理params内部为JSExpression的问题\n    const newParams: Record<string, unknown> = {};\n    for (const [name, param] of Object.entries(params)) {\n      if (\n        typeof param === \"object\" &&\n        param !== null &&\n        isJSExpression(param)\n      ) {\n        const jsExprValue = (param as any).value;\n        if (typeof jsExprValue === \"string\") {\n          newParams[name] = transformExpression(jsExprValue, context);\n        }\n      } else if (isObject(param)) {\n        newParams[name] = buildJsonObj(param as JSONObject, context);\n      } else {\n        newParams[name] = param;\n      }\n    }\n    return newParams;\n  }\n  return params;\n};\n\n/**\n * 检测对象是否包含 JSExpression 依赖\n * @param value - 需要检测的值\n * @returns 是否依赖 JSExpression\n */\nexport const detectJSExpressionDependency = (value: unknown): boolean => {\n  if (!value) return false;\n\n  // 如果直接是 JSExpression 类型\n  if (typeof value === \"object\" && value !== null && isJSExpression(value)) {\n    return true;\n  }\n\n  // 如果是对象，递归检查其属性\n  if (\n    isObject(value) &&\n    typeof value === \"object\" &&\n    value !== null &&\n    !isJSExpression(value) &&\n    !isJSFunction(value)\n  ) {\n    return Object.values(value as Record<string, unknown>).some((val) =>\n      detectJSExpressionDependency(val),\n    );\n  }\n\n  // 如果是数组，递归检查数组元素\n  if (Array.isArray(value)) {\n    return value.some((item) => detectJSExpressionDependency(item));\n  }\n\n  return false;\n};\n\n/**\n * 构建 shouldFetch 函数\n * @param ds - 数据源配置\n * @param context - 运行时上下文\n * @returns 构建的 shouldFetch 结果值\n */\nexport const buildShouldFetch = (\n  ds: InterpretDataSourceConfig,\n  context: IDataSourceRuntimeContext,\n): boolean | Function => {\n  if (!ds.options || !ds.shouldFetch) {\n    return true; // 默认为 true\n  }\n\n  if (typeof ds.shouldFetch === \"object\" && ds.shouldFetch !== null) {\n    if (isJSExpression(ds.shouldFetch) || isJSFunction(ds.shouldFetch)) {\n      // 转换为标准类型\n      const jsValue = {\n        type: isJSExpression(ds.shouldFetch) ? \"JSExpression\" : \"JSFunction\",\n        value: (ds.shouldFetch as any).value,\n        compiled: (ds.shouldFetch as any).compiled,\n      } as IPublicTypeJSExpression | IPublicTypeJSFunction;\n\n      return getRuntimeJsValue(jsValue, context) as boolean | Function;\n    }\n  }\n\n  return getRuntimeBaseValue(\"boolean\", ds.shouldFetch) as boolean;\n};\n\n/**\n * 构建数据源选项\n * @param ds - 数据源配置\n * @param context - 运行时上下文\n * @returns 构建的选项函数\n */\nexport const buildOptions = (\n  ds: InterpretDataSourceConfig,\n  context: IDataSourceRuntimeContext,\n): (() => RuntimeOptionsConfig) | undefined => {\n  const { options } = ds;\n  if (!options) return undefined;\n\n  // 检测是否依赖 JSExpression\n  const hasDependency = detectJSExpressionDependency(options);\n\n  // 构建选项函数\n  const optionsFunction = function (): RuntimeOptionsConfig {\n    // 默认值\n    const fetchOptions: RuntimeOptionsConfig = {\n      uri: \"\",\n      params: {},\n      method: \"GET\",\n      isCors: true,\n      timeout: 5000,\n      headers: undefined,\n      v: \"1.0\",\n    };\n\n    Object.keys(options).forEach((key: string) => {\n      switch (key) {\n        case \"uri\":\n          fetchOptions.uri = getRuntimeValueFromConfig(\n            \"string\",\n            options.uri,\n            context,\n          ) as string;\n          break;\n        case \"params\":\n          fetchOptions.params = buildJsonObj(\n            options.params as JSONObject,\n            context,\n          ) as Record<string, unknown>;\n          break;\n        case \"method\":\n          fetchOptions.method = getRuntimeValueFromConfig(\n            \"string\",\n            options.method,\n            context,\n          ) as string;\n          break;\n        case \"isCors\":\n          fetchOptions.isCors = getRuntimeValueFromConfig(\n            \"boolean\",\n            options.isCors,\n            context,\n          ) as boolean;\n          break;\n        case \"timeout\":\n          fetchOptions.timeout = getRuntimeValueFromConfig(\n            \"number\",\n            options.timeout,\n            context,\n          ) as number;\n          break;\n        case \"headers\":\n          fetchOptions.headers = buildJsonObj(\n            options.headers as JSONObject,\n            context,\n          ) as Record<string, unknown> | undefined;\n          break;\n        case \"v\":\n          fetchOptions.v = getRuntimeValueFromConfig(\n            \"string\",\n            options.v,\n            context,\n          ) as string;\n          break;\n        default:\n          // 其余的除了做表达式或者 function 的转换，直接透传\n          fetchOptions[key] = getRuntimeValueFromConfig(\n            \"unknown\",\n            options[key],\n            context,\n          );\n      }\n    });\n\n    // 标记该选项是否依赖 JSExpression\n    (fetchOptions as any).__dependsOnExpression = hasDependency;\n\n    return fetchOptions;\n  };\n\n  // 在函数上也标记是否依赖 JSExpression，方便外部访问\n  (optionsFunction as any).__dependsOnExpression = hasDependency;\n\n  return optionsFunction;\n};\n","/**\n * 数据源引擎辅助函数\n * 提供请求处理、默认配置和工具函数\n */\nimport {\n  RequestHandler,\n  RequestHandlersMap,\n  RuntimeDataSourceConfig,\n  RuntimeOptionsConfig,\n  UrlParamsHandler,\n  WillFetch,\n} from \"@yuntoo/page-types\";\n\n/**\n * 默认的 dataSourceItem 的 willFetch 处理器\n * 简单返回原始选项，不做任何修改\n * @param options - 请求选项\n * @returns 原始请求选项\n */\nexport const defaultWillFetch: WillFetch = (options: RuntimeOptionsConfig) =>\n  options;\n\n/**\n * 默认的 dataSourceItem 的 shouldFetch 处理器\n * 始终返回 true，表示总是应该执行请求\n * @returns 始终为 true\n */\nexport const defaultShouldFetch = () => true;\n\n/**\n * 请求处理器获取函数类型定义\n */\ntype GetRequestHandler<T = unknown> = (\n  ds: RuntimeDataSourceConfig,\n  requestHandlersMap: RequestHandlersMap,\n) => RequestHandler<{ data: T }> | UrlParamsHandler<T>;\n\n/**\n * 从当前 dataSourceItem 中获取适合的请求处理器\n * 支持自定义处理器和内置类型处理器\n * @param ds - 数据源配置\n * @param requestHandlersMap - 请求处理器映射\n * @returns 对应的请求处理器\n */\nexport const getRequestHandler: GetRequestHandler = (\n  ds,\n  requestHandlersMap,\n) => {\n  // 处理自定义类型\n  if (ds.type === \"custom\") {\n    // 自定义类型处理\n    return ds.requestHandler as unknown as RequestHandler<{ data: unknown }>; // 理论上这里应该是能强转的，就算为空，应该在 request 请求的时候触发失败\n  }\n\n  // 使用内置类型处理器，type 协议默认值为 fetch\n  return requestHandlersMap[ds.type || \"fetch\"] as RequestHandler<{\n    data: unknown;\n  }>;\n};\n\n/**\n * Promise.allSettled 的兼容实现\n * 用于处理多个 Promise，无论成功失败都返回结果\n * @param promises - Promise 数组\n * @returns 所有 Promise 的处理结果\n */\nexport const promiseSettled =\n  (Promise.allSettled ? Promise.allSettled.bind(Promise) : null) ||\n  (<T>(promises: Array<Promise<T>>) => {\n    return Promise.all(\n      promises.map((p) => {\n        return p\n          .then((v) => ({\n            status: \"fulfilled\" as const,\n            value: v,\n          }))\n          .catch((e) => ({\n            status: \"rejected\" as const,\n            reason: e,\n          }));\n      }),\n    );\n  });\n","/**\n * 通用数据处理器\n * 处理标准响应格式，提取数据部分\n */\nimport { DataHandler } from \"@yuntoo/page-types\";\n\n/**\n * 响应数据接口\n */\ninterface ResponseData<T = unknown> {\n  /** 请求是否成功 */\n  success?: boolean;\n  /** 响应数据 */\n  data?: T;\n  /** 其他属性 */\n  [key: string]: unknown;\n}\n\n/**\n * 默认的数据处理器\n * 由于 yt-fetch 已经处理了 HTTP 状态码并返回完整的响应数据，\n * 只要请求不抛异常，就认为请求成功，直接返回完整响应。\n * 这样可以确保 makeRequest 能够正确读取到 success 字段进行判断。\n */\nconst commonHandler: DataHandler = <T>(response: ResponseData<T>) => {\n  // 直接返回完整响应，让调用方自行处理 success 字段\n  return Promise.resolve(response as T);\n};\n\nexport default commonHandler;\n","module.exports = antd;","/**\n * 通用错误处理器\n * 处理数据源请求错误\n */\nimport { ErrorHandler } from \"@yuntoo/page-types\";\nimport { message } from \"antd\";\n\n/**\n * 带响应的错误类型\n */\ninterface ErrorWithResponse {\n  response?: {\n    error?: string;\n    errorMsg?: string;\n    [key: string]: unknown;\n  };\n  [key: string]: unknown;\n}\n\n/**\n * 默认的错误处理器\n * 弹窗显示错误信息\n */\nconst defaultErrorHandler: ErrorHandler = async (err: ErrorWithResponse) => {\n  const error = err?.response?.error;\n  const errorMsg = err?.response?.errorMsg || \"请求失败, 请稍后重试\";\n  const errorMessage = error ? `${error}: ${errorMsg}` : errorMsg;\n\n  message.error(errorMessage);\n};\n\nexport default defaultErrorHandler;\n","import type { IYTEnv } from \"../types/env\";\n\n/**\n * 获取当前环境\n * @returns 当前环境标\n */\nexport const getEnv = (): IYTEnv => {\n  const { hostname } = location;\n\n  if (\n    hostname.endsWith(\"mini.yuntooai.com\") ||\n    hostname.endsWith(\"mini.lovrabet.com\")\n  ) {\n    return \"mini\"; // 内网 mac mini 环境\n  }\n\n  if (\n    hostname.endsWith(\"dev.yuntooai.com\") ||\n    hostname.endsWith(\"dev.lovrabet.com\")\n  ) {\n    return \"local\"; // 本地环境(127.0.0.1)\n  }\n\n  if (\n    hostname.endsWith(\"daily.yuntooai.com\") ||\n    hostname.endsWith(\"daily.lovrabet.com\")\n  ) {\n    return \"daily\"; // 日常环境(公网)\n  }\n\n  if (hostname.split(\".\")[0]?.endsWith(\"-daily\")) {\n    return \"daily\"; // 日常环境\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  let baseHostname = \"yuntooai.com\";\n  if (location.hostname.endsWith(\"lovrabet.com\")) {\n    baseHostname = \"lovrabet.com\";\n  }\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  const result: IResponse<ResponseData> = await response.json();\n  if (!result.success) {\n    const error = new Error(result.errorMsg);\n    error.response = result;\n    throw error;\n  }\n  return result.data;\n};\n","/**\n * 获取单页应用中的 traceparent\n */\nfunction getTraceparent() {\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 * 默认从 html 中获取，如果没有则生成新的 traceparent\n * @param parentTraceparent\n */\nexport function generateTraceparent() {\n  const parentTraceparent = getTraceparent();\n  // 生成 traceId\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","import { processResponse } from \"./process-response\";\nimport { generateTraceparent } from \"../utils/traceparent\";\n\nexport const get = async <ResponseData>(\n  url: string,\n  params?: Record<string, any>,\n  init: RequestInit = {},\n): Promise<ResponseData> => {\n  const urlObj = new URL(url, window.location.origin);\n  // 如果请求链接包含 yuntooai.com/lovrabet.com 则带上cookie\n  const shouldIncludeCookies =\n    urlObj.hostname.includes(\"yuntooai.com\") ||\n    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(),\n    },\n    credentials: shouldIncludeCookies ? \"include\" : init.credentials,\n  });\n\n  // 判断是否重定向\n  if (response.redirected) {\n    window.location.href = response.url;\n    // @ts-ignore 如果是重定向,则跳出了\n    return;\n  }\n\n  return await processResponse<ResponseData>(response);\n};\n","import { processResponse } from \"./process-response\";\nimport { generateTraceparent } from \"../utils/traceparent\";\n\nexport const post = async <ResponseData>(\n  url: string,\n  body?: Record<string, any>,\n  init: RequestInit = {},\n): Promise<ResponseData> => {\n  const urlObj = new URL(url, window.location.origin);\n  // 如果请求链接包含 yuntooai.com/lovrabet.com 则带上cookie\n  const shouldIncludeCookies =\n    urlObj.hostname.includes(\"yuntooai.com\") ||\n    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(),\n    },\n    body: body && JSON.stringify(body),\n    credentials: shouldIncludeCookies ? \"include\" : init.credentials,\n  });\n\n  // 判断是否重定向\n  if (response.redirected) {\n    // 跳转到登录页面\n    window.location.href = response.url;\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 = {},\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 = {},\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 = {},\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 = {},\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  // 如果 url 不是以 http 或 https 开头的相对路径，则添加 baseURL 拼接成完整 URL\n  return new URL(url, baseURL).toString();\n}\n","import { getEnv } from \"./get-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  // 独立化部署的场景, 优先使用配置\n  if (window.__GLOBAL__?.deploymentConfig?.RUNTIME_API_DOMAIN) {\n    return window.__GLOBAL__?.deploymentConfig?.RUNTIME_API_DOMAIN;\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","/**\n * Fetch 请求处理器\n * 基于 axios 的 HTTP 请求实现\n */\nimport { RuntimeOptionsConfig } from \"@yuntoo/page-types\";\nimport { YTFetch, getEnv } from \"@yuntoo/fetch\";\n\n// 运行态使用的ytfetch\n// 如果指定了独立部署的API接口, 则优先使用\nexport const ytFetchRuntime = new YTFetch({\n  baseURL: window.__GLOBAL__?.deploymentConfig?.RUNTIME_API_DOMAIN\n    ? window.__GLOBAL__.deploymentConfig.RUNTIME_API_DOMAIN\n    : getEnv() !== \"online\"\n      ? \"https://daily-runtime.lovrabet.com\"\n      : \"https://runtime.lovrabet.com\",\n});\n\n/**\n * 创建 Fetch 请求处理器\n * @param config - 额外的配置项，会与请求选项合并\n * @returns 请求处理函数\n */\nexport function createFetchHandler(config?: Record<string, unknown>) {\n  /**\n   * 执行 HTTP 请求\n   * @param options - 运行时请求选项\n   * @returns 请求响应数据\n   */\n  return async function fetchHandler(\n    options: RuntimeOptionsConfig,\n  ): Promise<unknown> {\n    const { uri, method, headers, params } = options;\n\n    // TODO: 数据源本身 lifeCycles 中的数据处理函数并没有实际作用\n    // 在这里额外处理一下 willFetch, 目前只作用于 filter 数据源\n    let newParams = params;\n    if (typeof options?.willFetch === \"function\") {\n      newParams = await options?.willFetch(params);\n    }\n\n    const response = await ytFetchRuntime[method](uri, newParams, {\n      headers,\n      ...config,\n    });\n\n    return response;\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 qs from \"query-string\";\nimport { IDataSourceRuntimeContext } from \"@yuntoo/page-types\";\n\n// config 留着扩展\nexport function createUrlParamsHandler() {\n  return function (context?: IDataSourceRuntimeContext) {\n    // 优先从上下文中获取外部传入的 urlParams\n    if (context && (context as any).appHelper?.urlParams) {\n      return (context as any).appHelper.urlParams;\n    }\n\n    // 兜底：从浏览器 location.search 读取\n    if (typeof window === \"undefined\") {\n      return {};\n    }\n    return qs.parse(window.location.search);\n  };\n}\n","import {\n  RuntimeOptionsConfig,\n  IDataSourceRuntimeContext,\n} from \"@yuntoo/page-types\";\n\n// 使用any类型规避universal-request模块的导入错误\ntype RequestOptions = any;\ntype AsObject = any;\n\n// config 留着扩展\nexport function createVariableHandler(config?: Record<string, unknown>) {\n  return async function (\n    options: RuntimeOptionsConfig,\n    context: IDataSourceRuntimeContext,\n  ) {\n    const { dataHandler } = options;\n    try {\n      // 使用as any规避类型检查错误\n      const result = await (dataHandler as any)(options);\n      return result;\n    } catch (error) {\n      console.error(\"Variable data handler error:\", error);\n      throw error;\n    }\n  };\n}\n","/**\n * 数据源请求处理器集合\n * 提供各种类型的数据源请求处理器和默认处理函数\n */\nimport commonHandler from \"./commonHandler\";\nimport defaultErrorHandler from \"./errorHandler\";\nimport { createFetchHandler } from \"./fetch\";\nimport { createUrlParamsHandler } from \"./urlParams\";\nimport { createVariableHandler } from \"./variable\";\n\n/**\n * 请求处理器映射表\n * 不同类型数据源对应的请求处理器\n */\nexport const requestHandlersMap = {\n  /** 标准 HTTP 请求处理器 */\n  fetch: createFetchHandler(),\n  /** 变量类型数据源处理器 */\n  variable: createVariableHandler(),\n  /** URL 参数处理器 */\n  urlParams: createUrlParamsHandler(),\n};\n\n/**\n * 默认数据处理器\n * 用于处理请求响应数据\n */\nexport const defaultDataHandler = commonHandler;\n\n/**\n * 默认错误处理器\n * 用于处理数据源请求错误\n */\nexport { defaultErrorHandler };\n","/**\n * 数据源适配器\n * 将低代码配置转换为运行时配置\n */\nimport {\n  getRuntimeValueFromConfig,\n  getRuntimeJsValue,\n  buildOptions,\n  buildShouldFetch,\n} from \"../utils\";\n// 将不同渠道给的 schema 转为 runtime 需要的类型\n\nimport {\n  DataHandler,\n  DataSourceMap,\n  ErrorHandler,\n  IDataSourceRuntimeContext,\n  InterpretDataSource,\n  InterpretDataSourceConfig,\n  RuntimeDataSource,\n  RuntimeDataSourceConfig,\n  RuntimeOptionsConfig,\n  WillFetch,\n  CustomRequestHandler,\n} from \"@yuntoo/page-types\";\n\nimport { defaultWillFetch } from \"../helpers\";\nimport { defaultDataHandler, defaultErrorHandler } from \"../handlers\";\n\n/**\n * 默认值常量\n */\nconst DEFAULT_VALUES = {\n  TYPE: \"fetch\",\n  IS_INIT: true,\n  IS_SYNC: false,\n};\n\n/**\n * 将解释类型的数据源配置适配为运行时配置\n * @param dataSource - 解释类型的数据源配置\n * @param context - 运行时上下文\n * @param errorHandler - 全局错误处理器，默认输出错误信息\n * @returns 适配后的运行时数据源配置\n */\nconst adapt2Runtime = (\n  dataSource: InterpretDataSource,\n  context: IDataSourceRuntimeContext,\n  errorHandler: ErrorHandler = defaultErrorHandler,\n): RuntimeDataSource => {\n  const { list: interpretConfigList, dataHandler: interpretDataHandler } =\n    dataSource;\n\n  // 转换全局数据处理器\n  const dataHandler: ((dataMap?: DataSourceMap) => void) | undefined =\n    interpretDataHandler\n      ? (getRuntimeJsValue(interpretDataHandler, context) as (\n          dataMap?: DataSourceMap,\n        ) => void)\n      : undefined;\n\n  // 为空判断\n  if (!interpretConfigList || !interpretConfigList.length) {\n    return {\n      list: [],\n      dataHandler,\n    };\n  }\n\n  // 转换数据源列表配置\n  const list = interpretConfigList.map(\n    (el: InterpretDataSourceConfig): RuntimeDataSourceConfig => {\n      // 处理 isInit，确保类型为 boolean\n      const isInit = getRuntimeValueFromConfig(\"boolean\", el.isInit, context);\n      // 处理 isSync，确保类型为 boolean\n      const isSync = getRuntimeValueFromConfig(\"boolean\", el.isSync, context);\n\n      // 处理 shouldFetch\n      const builtShouldFetch = buildShouldFetch(el, context);\n      // 转换为符合接口定义的函数\n      const shouldFetch = (options: RuntimeOptionsConfig): boolean => {\n        // 如果有 options.requiredParams, 则需要检查是否存在\n        if (\n          Array.isArray(options.requiredParams) &&\n          options.requiredParams.length > 0\n        ) {\n          const requiredParams = options.requiredParams;\n          const params = options.params || {};\n          const missingParams = requiredParams.filter(\n            (param) => !params[param],\n          );\n          if (missingParams.length > 0) {\n            return false;\n          }\n        }\n\n        if (typeof builtShouldFetch === \"function\") {\n          return builtShouldFetch(options);\n        }\n        return builtShouldFetch === true;\n      };\n\n      // 构建运行时配置\n      return {\n        // 基本信息\n        id: el.id,\n        // 运行配置，设置默认值\n        isInit: typeof isInit === \"boolean\" ? isInit : DEFAULT_VALUES.IS_INIT,\n        isSync: typeof isSync === \"boolean\" ? isSync : DEFAULT_VALUES.IS_SYNC,\n        type: el.type || DEFAULT_VALUES.TYPE,\n        // 处理器配置\n        willFetch: el.willFetch\n          ? (getRuntimeJsValue(el.willFetch, context) as WillFetch)\n          : defaultWillFetch,\n        shouldFetch,\n        dataHandler: el.dataHandler\n          ? (getRuntimeJsValue(el.dataHandler, context) as DataHandler)\n          : defaultDataHandler,\n        errorHandler: el.errorHandler\n          ? (getRuntimeJsValue(el.errorHandler, context) as ErrorHandler)\n          : errorHandler,\n        // 处理 requestHandler 类型问题\n        requestHandler: el.requestHandler\n          ? (getRuntimeJsValue(\n              el.requestHandler,\n              context,\n            ) as CustomRequestHandler)\n          : undefined,\n        // 请求选项\n        options: buildOptions(el, context),\n      };\n    },\n  );\n\n  // 对数据源列表进行排序，确保 urlParams 类型的数据源排在最前面\n  const sortedList = list.sort((a, b) => {\n    // urlParams 类型的数据源排在最前面\n    if (a.type === \"urlParams\" && b.type !== \"urlParams\") {\n      return -1;\n    }\n    if (a.type !== \"urlParams\" && b.type === \"urlParams\") {\n      return 1;\n    }\n    // 保持原有顺序\n    return 0;\n  });\n\n  return {\n    list: sortedList,\n    dataHandler,\n  };\n};\n\nexport { adapt2Runtime };\n","/**\n * 运行时数据源项实现\n * 负责处理单个数据源的请求、状态管理和数据加载\n */\nimport { merge } from \"lodash\";\nimport {\n  IDataSourceRuntimeContext,\n  IRuntimeDataSource,\n  RequestHandler,\n  RuntimeDataSourceConfig,\n  RuntimeDataSourceStatus,\n  RuntimeOptionsConfig,\n  UrlParamsHandler,\n} from \"@yuntoo/page-types\";\n\n/**\n * 运行时数据源项类\n * 实现了 IRuntimeDataSource 接口，处理数据加载、错误处理和状态管理\n * @template TParams - 请求参数类型\n * @template TResultData - 返回数据类型\n */\nclass RuntimeDataSourceItem<\n  TParams extends Record<string, unknown> = Record<string, unknown>,\n  TResultData = unknown,\n> implements IRuntimeDataSource<TParams, TResultData>\n{\n  /** 数据源返回的数据 */\n  private _data?: TResultData;\n\n  /** 数据源请求过程中的错误 */\n  private _error?: Error;\n\n  /** 数据源当前状态 */\n  private _status = RuntimeDataSourceStatus.Initial;\n\n  /** 数据源配置 */\n  private _dataSourceConfig: RuntimeDataSourceConfig;\n\n  /** 请求处理器 */\n  private _request:\n    | RequestHandler<{ data: TResultData }>\n    | UrlParamsHandler<TResultData>;\n\n  /** 运行时上下文 */\n  private _context: IDataSourceRuntimeContext;\n\n  /** 请求选项 */\n  private _options?: RuntimeOptionsConfig;\n\n  /** 缓存的上次请求参数，用于按需重载功能 */\n  private _cachedOptions?: Record<string, unknown>;\n\n  /**\n   * 创建运行时数据源项实例\n   * @param dataSourceConfig - 数据源配置\n   * @param request - 请求处理器\n   * @param context - 运行时上下文\n   */\n  constructor(\n    dataSourceConfig: RuntimeDataSourceConfig,\n    request:\n      | RequestHandler<{ data: TResultData }>\n      | UrlParamsHandler<TResultData>,\n    context: IDataSourceRuntimeContext,\n  ) {\n    this._dataSourceConfig = dataSourceConfig;\n    this._request = request;\n    this._context = context;\n  }\n\n  /**\n   * 获取当前数据\n   */\n  get data() {\n    return this._data;\n  }\n\n  /**\n   * 获取当前错误\n   */\n  get error() {\n    return this._error;\n  }\n\n  /**\n   * 获取当前状态\n   */\n  get status() {\n    return this._status;\n  }\n\n  /**\n   * 判断是否正在加载\n   */\n  get isLoading() {\n    return this._status === RuntimeDataSourceStatus.Loading;\n  }\n\n  /**\n   * 获取缓存的请求参数，供外部使用\n   */\n  get __cachedOptions() {\n    return this._cachedOptions;\n  }\n\n  /**\n   * 设置缓存的请求参数，供外部使用\n   */\n  set __cachedOptions(value: Record<string, unknown>) {\n    this._cachedOptions = value;\n  }\n\n  /**\n   * 获取选项函数，供外部使用\n   */\n  get options() {\n    return this._dataSourceConfig.options;\n  }\n\n  /**\n   * 加载数据源数据\n   * @param params - 请求参数，可选，会与默认参数合并\n   * @returns 加载的数据或空\n   * @throws 当加载失败时抛出错误\n   */\n  async load(params?: TParams): Promise<TResultData | void> {\n    if (!this._dataSourceConfig) return;\n\n    // 检查是否有对应的请求处理器\n    if (!this._request) {\n      this._error = new Error(\n        `no ${this._dataSourceConfig.type} handler provide`,\n      );\n      this._status = RuntimeDataSourceStatus.Error;\n      throw this._error;\n    }\n\n    // 处理 urlParams 类型的数据源\n    if (this._dataSourceConfig.type === \"urlParams\") {\n      return this._handleUrlParamsRequest();\n    }\n\n    // 处理 variable 类型的数据源\n    if (this._dataSourceConfig.type === \"variable\") {\n      return this._handleVariableRequest();\n    }\n\n    // 处理 fetch 类型的数据源\n    return this._handleApiRequest(params);\n  }\n\n  /**\n   * 处理 urlParams 类型的数据源请求\n   * @returns 处理结果\n   */\n  private async _handleUrlParamsRequest(): Promise<TResultData> {\n    const result = (this._request as UrlParamsHandler<TResultData>)(\n      this._context,\n    );\n\n    // 检查结果是否是 Promise，如果不是则包装成 Promise\n    const response =\n      result && typeof result.then === \"function\" ? await result : result;\n\n    // 同步更新状态 - 直接修改 state 对象而不使用异步的 setState\n    // 这确保了其他数据源能立即读取到 urlParams 的值\n    if (this._context.state && typeof this._context.state === \"object\") {\n      (this._context.state as any).urlParams = response;\n    }\n\n    // 仍然调用 setState 以触发 React 重新渲染，但不依赖其异步更新\n    this._context.setState({\n      urlParams: response,\n    });\n\n    this._data = response as TResultData;\n    this._status = RuntimeDataSourceStatus.Loaded;\n\n    return response as TResultData;\n  }\n\n  /**\n   * 处理 variable 类型的数据源请求\n   * @returns 处理结果\n   */\n  private async _handleVariableRequest(): Promise<TResultData> {\n    if (typeof this._dataSourceConfig.options === \"function\") {\n      this._options = this._dataSourceConfig.options();\n    }\n\n    const result = (this._request as any)(this._options, this._context);\n\n    // 检查结果是否是 Promise，如果不是则包装成 Promise\n    const response =\n      result && typeof result.then === \"function\" ? await result : result;\n\n    // 更新状态\n    this._context.setState({\n      [this._dataSourceConfig.id]: response,\n    });\n\n    this._data = response as TResultData;\n    this._status = RuntimeDataSourceStatus.Loaded;\n\n    return response as TResultData;\n  }\n\n  /**\n   * 处理常规 API 类型的数据源请求\n   * @param params - 请求参数\n   * @returns 处理结果\n   * @throws 当请求失败时抛出错误\n   */\n  private async _handleApiRequest(\n    params?: TParams,\n  ): Promise<TResultData | void> {\n    if (!this._dataSourceConfig.options) {\n      throw new Error(`${this._dataSourceConfig.id} has no options`);\n    }\n\n    // 获取选项\n    if (typeof this._dataSourceConfig.options === \"function\") {\n      this._options = this._dataSourceConfig.options();\n    }\n\n    // 检查选项是否有效\n    if (!this._options) {\n      throw new Error(`${this._dataSourceConfig.id} options transform error`);\n    }\n\n    // 临时变量存，每次可能结果不一致，不做缓存\n    let shouldFetch = true;\n    let fetchOptions = this._options;\n\n    // 如果load存在参数则采取合并的策略合并参数，合并后再一起参与shouldFetch，willFetch的计算\n    if (params) {\n      fetchOptions.params = merge(fetchOptions.params, params);\n    }\n\n    // 检查是否应该执行请求\n    shouldFetch = this._checkShouldFetch(fetchOptions);\n    if (!shouldFetch) {\n      this._handleShouldNotFetch();\n      return;\n    }\n\n    // 应用 willFetch 处理\n    fetchOptions = await this._applyWillFetch(fetchOptions);\n\n    // 缓存请求参数\n    this._updateOptionsCache(fetchOptions);\n\n    // 执行请求\n    return this._executeRequest(fetchOptions);\n  }\n\n  /**\n   * 检查是否应该执行请求\n   * @param fetchOptions - 请求选项\n   * @returns 是否应该执行请求\n   */\n  private _checkShouldFetch(fetchOptions: RuntimeOptionsConfig): boolean {\n    if (!this._dataSourceConfig.shouldFetch) {\n      return true;\n    }\n\n    if (typeof this._dataSourceConfig.shouldFetch === \"function\") {\n      return this._dataSourceConfig.shouldFetch(fetchOptions);\n    }\n\n    if (typeof this._dataSourceConfig.shouldFetch === \"boolean\") {\n      return this._dataSourceConfig.shouldFetch;\n    }\n\n    return true;\n  }\n\n  /**\n   * 处理不应该执行请求的情况\n   */\n  private _handleShouldNotFetch(): void {\n    this._status = RuntimeDataSourceStatus.Error;\n    this._error = new Error(\n      `the ${this._dataSourceConfig.id} request should not fetch, please check the condition`,\n    );\n    console.warn(this.error);\n  }\n\n  /**\n   * 应用 willFetch 处理器\n   * @param options - 原始请求选项\n   * @returns 处理后的请求选项\n   */\n  private async _applyWillFetch(\n    options: RuntimeOptionsConfig,\n  ): Promise<RuntimeOptionsConfig> {\n    if (!this._dataSourceConfig.willFetch) {\n      return options;\n    }\n\n    try {\n      return await this._dataSourceConfig.willFetch(options);\n    } catch (error) {\n      console.error(error);\n      return options;\n    }\n  }\n\n  /**\n   * 更新选项缓存\n   * @param fetchOptions - 请求选项\n   */\n  private _updateOptionsCache(fetchOptions: RuntimeOptionsConfig): void {\n    // 只有当依赖表达式时才需要缓存参数\n    if (fetchOptions && (fetchOptions as any).__dependsOnExpression) {\n      // 对比新旧参数是否有变化\n      const newOptionsStr = JSON.stringify(fetchOptions);\n      const oldOptionsStr = this._cachedOptions\n        ? JSON.stringify(this._cachedOptions)\n        : \"\";\n\n      // 只有当参数有变化时才更新缓存\n      if (newOptionsStr !== oldOptionsStr) {\n        this._cachedOptions = JSON.parse(newOptionsStr);\n      }\n    }\n  }\n\n  /**\n   * 执行请求\n   * @param fetchOptions - 请求选项\n   * @returns 请求结果\n   * @throws 当请求失败时抛出错误\n   */\n  private async _executeRequest(\n    fetchOptions: RuntimeOptionsConfig,\n  ): Promise<TResultData> {\n    const dataHandler = this._dataSourceConfig.dataHandler!;\n    const { errorHandler } = this._dataSourceConfig;\n\n    // 更新状态为加载中\n    this._status = RuntimeDataSourceStatus.Loading;\n\n    // 将 loading 状态同步到 state\n    this._context.setState((prevState) => ({\n      ...prevState,\n      [`${this._dataSourceConfig.id}_loading`]: true,\n    }));\n\n    try {\n      // 执行请求并应用数据处理器\n      const requestResult = (\n        this._request as RequestHandler<{\n          data: TResultData;\n        }>\n      )(fetchOptions, this._context);\n\n      // 检查结果是否是 Promise，如果不是则包装成 Promise\n      const promiseResult =\n        requestResult && typeof requestResult.then === \"function\"\n          ? requestResult\n          : Promise.resolve(requestResult);\n\n      const result = await promiseResult.then(dataHandler, errorHandler);\n\n      // 更新状态为已加载\n      this._data = result as TResultData;\n      this._status = RuntimeDataSourceStatus.Loaded;\n\n      // 更新上下文状态\n      this._context.setState((prevState) => ({\n        ...prevState,\n        UNSTABLE_dataSourceUpdatedAt: Date.now(),\n        [this._dataSourceConfig.id]: result,\n        [`${this._dataSourceConfig.id}_loading`]: false,\n      }));\n\n      return this._data;\n    } catch (error) {\n      // 更新状态为错误\n      this._error = error as Error;\n      this._status = RuntimeDataSourceStatus.Error;\n\n      // 更新上下文状态\n      this._context.setState((prevState) => ({\n        ...prevState,\n        UNSTABLE_dataSourceUpdatedAt: Date.now(),\n        [`UNSTABLE_${this._dataSourceConfig.id}_error`]: error,\n        [`${this._dataSourceConfig.id}_loading`]: false,\n      }));\n\n      throw error;\n    }\n  }\n}\n\nexport { RuntimeDataSourceItem };\n","/**\n * 数据源重载工厂模块\n * 提供数据源加载和重载的工厂函数\n */\nimport {\n  DataSourceMap,\n  RuntimeDataSource,\n  RuntimeDataSourceConfig,\n} from \"@yuntoo/page-types\";\nimport { promiseSettled } from \"../helpers\";\n\n/**\n * 数据源类型常量\n */\nconst DATA_SOURCE_TYPES = {\n  URL_PARAMS: \"urlParams\",\n};\n\n/**\n * 创建数据源重载函数\n * 用于初始化或重新加载所有数据源\n * @param dataSource - 数据源配置\n * @param dataSourceMap - 数据源实例映射\n * @param dataHandler - 数据处理钩子函数\n * @returns 重载函数\n */\nexport const reloadDataSourceFactory = (\n  dataSource: RuntimeDataSource,\n  dataSourceMap: DataSourceMap,\n  dataHandler?: (dataSourceMap: DataSourceMap) => void,\n) => {\n  /**\n   * 重载所有数据源\n   * 按照类型和同步/异步方式分别处理\n   */\n  return async (): Promise<void> => {\n    const allAsyncLoadings: Array<Promise<unknown>> = [];\n\n    // 处理 urlParams 类型的数据源\n    dataSource.list\n      .filter(\n        (el: RuntimeDataSourceConfig) =>\n          el.type === DATA_SOURCE_TYPES.URL_PARAMS && isInit(el),\n      )\n      .forEach((el: RuntimeDataSourceConfig) => {\n        dataSourceMap[el.id].load();\n      });\n\n    // 过滤出非 urlParams 类型的数据源\n    const remainRuntimeDataSourceList = dataSource.list.filter(\n      (el: RuntimeDataSourceConfig) => el.type !== DATA_SOURCE_TYPES.URL_PARAMS,\n    );\n\n    // 处理异步并行数据源\n    for (const ds of remainRuntimeDataSourceList) {\n      if (!ds.options) {\n        continue;\n      }\n      if (isInit(ds) && !ds.isSync) {\n        allAsyncLoadings.push(dataSourceMap[ds.id].load());\n      }\n    }\n\n    // 处理同步串行数据源\n    for (const ds of remainRuntimeDataSourceList) {\n      if (!ds.options) {\n        continue;\n      }\n\n      if (isInit(ds) && ds.isSync) {\n        try {\n          await dataSourceMap[ds.id].load();\n        } catch (e) {\n          console.error(\"同步数据源加载错误:\", e);\n        }\n      }\n    }\n\n    // 等待所有异步请求完成\n    await promiseSettled(allAsyncLoadings);\n\n    // 所有的初始化请求都结束之后，调用钩子函数\n    if (dataHandler) {\n      dataHandler(dataSourceMap);\n    }\n  };\n};\n\n/**\n * 创建按需重载特定数据源的函数\n * @param dataSource - 数据源配置\n * @param dataSourceMap - 数据源映射\n * @param dataHandler - 数据处理函数\n * @returns 按需重载函数\n */\nexport const reloadSpecificDataSourcesFactory = (\n  dataSource: RuntimeDataSource,\n  dataSourceMap: DataSourceMap,\n  dataHandler?: (dataSourceMap: DataSourceMap) => void,\n) => {\n  /**\n   * 重载指定的数据源\n   * @param dsIds - 需要重载的数据源ID列表\n   */\n  return async (dsIds: string[]): Promise<void> => {\n    if (!dsIds || dsIds.length === 0) {\n      return;\n    }\n\n    const allAsyncLoadings: Array<Promise<unknown>> = [];\n    const dsMap: Record<string, RuntimeDataSourceConfig> = {};\n\n    // 构建数据源ID映射，方便快速查找\n    dataSource.list.forEach((ds) => {\n      dsMap[ds.id] = ds;\n    });\n\n    // 并行处理异步数据源\n    for (const dsId of dsIds) {\n      const ds = dsMap[dsId];\n      if (!ds || !ds.options) {\n        continue;\n      }\n\n      if (isInit(ds) && !ds.isSync) {\n        allAsyncLoadings.push(dataSourceMap[ds.id].load());\n      }\n    }\n\n    // 串行处理同步数据源\n    for (const dsId of dsIds) {\n      const ds = dsMap[dsId];\n      if (!ds || !ds.options) {\n        continue;\n      }\n\n      if (isInit(ds) && ds.isSync) {\n        try {\n          await dataSourceMap[ds.id].load();\n        } catch (e) {\n          console.error(\"同步数据源加载错误:\", e);\n        }\n      }\n    }\n\n    // 等待所有异步请求完成\n    await promiseSettled(allAsyncLoadings);\n\n    // 所有请求结束后调用钩子函数\n    if (dataHandler) {\n      dataHandler(dataSourceMap);\n    }\n  };\n};\n\n/**\n * 检查数据源是否应该初始化\n * 支持函数和布尔值两种配置\n * @param ds - 数据源配置\n * @returns 是否应该初始化\n */\nfunction isInit(ds: RuntimeDataSourceConfig): boolean {\n  return typeof ds.isInit === \"function\"\n    ? (ds as unknown as { isInit: () => boolean }).isInit()\n    : (ds.isInit ?? true);\n}\n","import { adapt2Runtime } from \"../core/adapter\";\nimport { RuntimeDataSourceItem } from \"../core/RuntimeDataSourceItem\";\nimport {\n  reloadDataSourceFactory,\n  reloadSpecificDataSourcesFactory,\n} from \"../core/reloadDataSourceFactory\";\nimport {\n  DataHandler,\n  IDataSourceRuntimeContext,\n  InterpretDataSource,\n  IRuntimeDataSource,\n  RequestHandlersMap,\n  RuntimeDataSource,\n  RuntimeDataSourceConfig,\n} from \"@yuntoo/page-types\";\nimport { getRequestHandler } from \"../helpers\";\n// handlers\nimport { requestHandlersMap, defaultDataHandler } from \"../handlers\";\n\n/**\n * @param dataSource\n * @param context\n * @param extraConfig: { requestHandlersMap }\n */\n\nexport default (\n  dataSource: InterpretDataSource,\n  context: IDataSourceRuntimeContext,\n) => {\n  const runtimeDataSource: RuntimeDataSource = adapt2Runtime(\n    dataSource,\n    context,\n  );\n\n  const dataSourceMap = runtimeDataSource.list.reduce(\n    (\n      prev: Record<string, IRuntimeDataSource>,\n      current: RuntimeDataSourceConfig,\n    ) => {\n      prev[current.id] = new RuntimeDataSourceItem(\n        current,\n        getRequestHandler(current, requestHandlersMap),\n        context,\n      );\n      return prev;\n    },\n    {},\n  );\n\n  return {\n    dataSourceMap,\n    reloadDataSource: reloadDataSourceFactory(\n      runtimeDataSource,\n      dataSourceMap,\n      runtimeDataSource.dataHandler,\n    ),\n    reloadSpecificDataSources: reloadSpecificDataSourcesFactory(\n      runtimeDataSource,\n      dataSourceMap,\n      runtimeDataSource.dataHandler,\n    ),\n  };\n};\n","import adapter from \"../adapter\";\nimport { IGeneralConstructor } from \"../types\";\n\nexport default function divFactory(): IGeneralConstructor {\n  const { PureComponent, createElement } = adapter.getRuntime();\n  return class Div extends PureComponent {\n    static displayName = \"Div\";\n\n    static version = \"0.0.0\";\n\n    render() {\n      return createElement(\"div\", this.props);\n    }\n  } as unknown as IGeneralConstructor;\n}\n","import adapter from \"../../adapter\";\nimport { IGeneralConstructor } from \"../../types\";\nimport \"./index.css\";\n\nexport default function visualDomFactory(): IGeneralConstructor {\n  const { PureComponent, createElement } = adapter.getRuntime();\n  return class VisualDom extends PureComponent {\n    static displayName = \"VisualDom\";\n\n    static defaultProps = {\n      children: null,\n    };\n\n    render() {\n      const { children, cell, title, label, text, __componentName } =\n        this.props;\n      let mainContent = children;\n      if (cell && typeof cell === \"function\") {\n        mainContent = cell();\n      }\n      return createElement(\n        \"div\",\n        { className: \"visual-dom\" },\n        createElement(\"div\", { className: \"panel-container\" }, [\n          createElement(\n            \"span\",\n            { className: \"title\" },\n            title || label || text || __componentName,\n          ),\n          createElement(\"div\", { className: \"content\" }, mainContent),\n        ]),\n      );\n    }\n  } as unknown as IGeneralConstructor;\n}\n","import { Logger } from \"@yuntoo/page-utils\";\n\nexport default new Logger({ level: \"warn\", bizName: \"renderer\" });\n","export var ErrorKind;\n(function (ErrorKind) {\n    /** Argument is unclosed (e.g. `{0`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n    /** Argument is empty (e.g. `{}`). */\n    ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n    /** Argument is malformed (e.g. `{foo!}``) */\n    ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n    /** Expect an argument type (e.g. `{foo,}`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n    /** Unsupported argument type (e.g. `{foo,foo}`) */\n    ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n    /** Expect an argument style (e.g. `{foo, number, }`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n    /** The number skeleton is invalid. */\n    ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n    /** The date time skeleton is invalid. */\n    ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n    /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n    ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n    /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n    ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n    /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n    ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n    /** Missing select argument options (e.g. `{foo, select}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n    /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n    /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n    ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n    /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n    /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n    /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n    /**\n     * Expecting a message fragment after the `plural` or `selectordinal` selector\n     * (e.g. `{foo, plural, one}`)\n     */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n    /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n    ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n    /**\n     * Duplicate selectors in `plural` or `selectordinal` argument.\n     * (e.g. {foo, plural, one {#} one {#}})\n     */\n    ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n    /** Duplicate selectors in `select` argument.\n     * (e.g. {foo, select, apple {apple} apple {apple}})\n     */\n    ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n    /** Plural or select argument option must have `other` clause. */\n    ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n    /** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n    ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n    /** The tag name is invalid. (e.g. `<123>foo</123>`) */\n    ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n    /** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n    ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n    /** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n    ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n    /**\n     * Raw text\n     */\n    TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n    /**\n     * Variable w/o any format, e.g `var` in `this is a {var}`\n     */\n    TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n    /**\n     * Variable w/ number format\n     */\n    TYPE[TYPE[\"number\"] = 2] = \"number\";\n    /**\n     * Variable w/ date format\n     */\n    TYPE[TYPE[\"date\"] = 3] = \"date\";\n    /**\n     * Variable w/ time format\n     */\n    TYPE[TYPE[\"time\"] = 4] = \"time\";\n    /**\n     * Variable w/ select format\n     */\n    TYPE[TYPE[\"select\"] = 5] = \"select\";\n    /**\n     * Variable w/ plural format\n     */\n    TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n    /**\n     * Only possible within plural argument.\n     * This is the `#` symbol that will be substituted with the count.\n     */\n    TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n    /**\n     * XML-like tag\n     */\n    TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n    SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n    SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n    return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n    return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n    return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n    return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n    return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n    return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n    return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n    return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n    return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n    return {\n        type: TYPE.literal,\n        value: value,\n    };\n}\nexport function createNumberElement(value, style) {\n    return {\n        type: TYPE.number,\n        value: value,\n        style: style,\n    };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n    var result = {};\n    skeleton.replace(DATE_TIME_REGEX, function (match) {\n        var len = match.length;\n        switch (match[0]) {\n            // Era\n            case 'G':\n                result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n                break;\n            // Year\n            case 'y':\n                result.year = len === 2 ? '2-digit' : 'numeric';\n                break;\n            case 'Y':\n            case 'u':\n            case 'U':\n            case 'r':\n                throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n            // Quarter\n            case 'q':\n            case 'Q':\n                throw new RangeError('`q/Q` (quarter) patterns are not supported');\n            // Month\n            case 'M':\n            case 'L':\n                result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n                break;\n            // Week\n            case 'w':\n            case 'W':\n                throw new RangeError('`w/W` (week) patterns are not supported');\n            case 'd':\n                result.day = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'D':\n            case 'F':\n            case 'g':\n                throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n            // Weekday\n            case 'E':\n                result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n                break;\n            case 'e':\n                if (len < 4) {\n                    throw new RangeError('`e..eee` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            case 'c':\n                if (len < 4) {\n                    throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            // Period\n            case 'a': // AM, PM\n                result.hour12 = true;\n                break;\n            case 'b': // am, pm, noon, midnight\n            case 'B': // flexible day periods\n                throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n            // Hour\n            case 'h':\n                result.hourCycle = 'h12';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'H':\n                result.hourCycle = 'h23';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'K':\n                result.hourCycle = 'h11';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'k':\n                result.hourCycle = 'h24';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'j':\n            case 'J':\n            case 'C':\n                throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n            // Minute\n            case 'm':\n                result.minute = ['numeric', '2-digit'][len - 1];\n                break;\n            // Second\n            case 's':\n                result.second = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'S':\n            case 'A':\n                throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n            // Zone\n            case 'z': // 1..3, 4: specific non-location format\n                result.timeZoneName = len < 4 ? 'short' : 'long';\n                break;\n            case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n            case 'O': // 1, 4: miliseconds in day short, long\n            case 'v': // 1, 4: generic non-location format\n            case 'V': // 1, 2, 3, 4: time zone ID or city\n            case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n            case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n                throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n        }\n        return '';\n    });\n    return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n    if (skeleton.length === 0) {\n        throw new Error('Number skeleton cannot be empty');\n    }\n    // Parse the skeleton\n    var stringTokens = skeleton\n        .split(WHITE_SPACE_REGEX)\n        .filter(function (x) { return x.length > 0; });\n    var tokens = [];\n    for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n        var stringToken = stringTokens_1[_i];\n        var stemAndOptions = stringToken.split('/');\n        if (stemAndOptions.length === 0) {\n            throw new Error('Invalid number skeleton');\n        }\n        var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n        for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n            var option = options_1[_a];\n            if (option.length === 0) {\n                throw new Error('Invalid number skeleton');\n            }\n        }\n        tokens.push({ stem: stem, options: options });\n    }\n    return tokens;\n}\nfunction icuUnitToEcma(unit) {\n    return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n    var result = {};\n    if (str[str.length - 1] === 'r') {\n        result.roundingPriority = 'morePrecision';\n    }\n    else if (str[str.length - 1] === 's') {\n        result.roundingPriority = 'lessPrecision';\n    }\n    str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n        // @@@ case\n        if (typeof g2 !== 'string') {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits = g1.length;\n        }\n        // @@@+ case\n        else if (g2 === '+') {\n            result.minimumSignificantDigits = g1.length;\n        }\n        // .### case\n        else if (g1[0] === '#') {\n            result.maximumSignificantDigits = g1.length;\n        }\n        // .@@## or .@@@ case\n        else {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits =\n                g1.length + (typeof g2 === 'string' ? g2.length : 0);\n        }\n        return '';\n    });\n    return result;\n}\nfunction parseSign(str) {\n    switch (str) {\n        case 'sign-auto':\n            return {\n                signDisplay: 'auto',\n            };\n        case 'sign-accounting':\n        case '()':\n            return {\n                currencySign: 'accounting',\n            };\n        case 'sign-always':\n        case '+!':\n            return {\n                signDisplay: 'always',\n            };\n        case 'sign-accounting-always':\n        case '()!':\n            return {\n                signDisplay: 'always',\n                currencySign: 'accounting',\n            };\n        case 'sign-except-zero':\n        case '+?':\n            return {\n                signDisplay: 'exceptZero',\n            };\n        case 'sign-accounting-except-zero':\n        case '()?':\n            return {\n                signDisplay: 'exceptZero',\n                currencySign: 'accounting',\n            };\n        case 'sign-never':\n        case '+_':\n            return {\n                signDisplay: 'never',\n            };\n    }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n    // Engineering\n    var result;\n    if (stem[0] === 'E' && stem[1] === 'E') {\n        result = {\n            notation: 'engineering',\n        };\n        stem = stem.slice(2);\n    }\n    else if (stem[0] === 'E') {\n        result = {\n            notation: 'scientific',\n        };\n        stem = stem.slice(1);\n    }\n    if (result) {\n        var signDisplay = stem.slice(0, 2);\n        if (signDisplay === '+!') {\n            result.signDisplay = 'always';\n            stem = stem.slice(2);\n        }\n        else if (signDisplay === '+?') {\n            result.signDisplay = 'exceptZero';\n            stem = stem.slice(2);\n        }\n        if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n            throw new Error('Malformed concise eng/scientific notation');\n        }\n        result.minimumIntegerDigits = stem.length;\n    }\n    return result;\n}\nfunction parseNotationOptions(opt) {\n    var result = {};\n    var signOpts = parseSign(opt);\n    if (signOpts) {\n        return signOpts;\n    }\n    return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n    var result = {};\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        switch (token.stem) {\n            case 'percent':\n            case '%':\n                result.style = 'percent';\n                continue;\n            case '%x100':\n                result.style = 'percent';\n                result.scale = 100;\n                continue;\n            case 'currency':\n                result.style = 'currency';\n                result.currency = token.options[0];\n                continue;\n            case 'group-off':\n            case ',_':\n                result.useGrouping = false;\n                continue;\n            case 'precision-integer':\n            case '.':\n                result.maximumFractionDigits = 0;\n                continue;\n            case 'measure-unit':\n            case 'unit':\n                result.style = 'unit';\n                result.unit = icuUnitToEcma(token.options[0]);\n                continue;\n            case 'compact-short':\n            case 'K':\n                result.notation = 'compact';\n                result.compactDisplay = 'short';\n                continue;\n            case 'compact-long':\n            case 'KK':\n                result.notation = 'compact';\n                result.compactDisplay = 'long';\n                continue;\n            case 'scientific':\n                result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'engineering':\n                result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'notation-simple':\n                result.notation = 'standard';\n                continue;\n            // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n            case 'unit-width-narrow':\n                result.currencyDisplay = 'narrowSymbol';\n                result.unitDisplay = 'narrow';\n                continue;\n            case 'unit-width-short':\n                result.currencyDisplay = 'code';\n                result.unitDisplay = 'short';\n                continue;\n            case 'unit-width-full-name':\n                result.currencyDisplay = 'name';\n                result.unitDisplay = 'long';\n                continue;\n            case 'unit-width-iso-code':\n                result.currencyDisplay = 'symbol';\n                continue;\n            case 'scale':\n                result.scale = parseFloat(token.options[0]);\n                continue;\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n            case 'integer-width':\n                if (token.options.length > 1) {\n                    throw new RangeError('integer-width stems only accept a single optional option');\n                }\n                token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n                    if (g1) {\n                        result.minimumIntegerDigits = g2.length;\n                    }\n                    else if (g3 && g4) {\n                        throw new Error('We currently do not support maximum integer digits');\n                    }\n                    else if (g5) {\n                        throw new Error('We currently do not support exact integer digits');\n                    }\n                    return '';\n                });\n                continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n        if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n            result.minimumIntegerDigits = token.stem.length;\n            continue;\n        }\n        if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n            // Precision\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n            // precision-integer case\n            if (token.options.length > 1) {\n                throw new RangeError('Fraction-precision stems only accept a single optional option');\n            }\n            token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n                // .000* case (before ICU67 it was .000+)\n                if (g2 === '*') {\n                    result.minimumFractionDigits = g1.length;\n                }\n                // .### case\n                else if (g3 && g3[0] === '#') {\n                    result.maximumFractionDigits = g3.length;\n                }\n                // .00## case\n                else if (g4 && g5) {\n                    result.minimumFractionDigits = g4.length;\n                    result.maximumFractionDigits = g4.length + g5.length;\n                }\n                else {\n                    result.minimumFractionDigits = g1.length;\n                    result.maximumFractionDigits = g1.length;\n                }\n                return '';\n            });\n            var opt = token.options[0];\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n            if (opt === 'w') {\n                result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n            }\n            else if (opt) {\n                result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n            }\n            continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n        if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n            result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n            continue;\n        }\n        var signOpts = parseSign(token.stem);\n        if (signOpts) {\n            result = __assign(__assign({}, result), signOpts);\n        }\n        var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n        if (conciseScientificAndEngineeringOpts) {\n            result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n        }\n    }\n    return result;\n}\n","// @generated from time-data-gen.ts\n// prettier-ignore  \nexport var timeData = {\n    \"AX\": [\n        \"H\"\n    ],\n    \"BQ\": [\n        \"H\"\n    ],\n    \"CP\": [\n        \"H\"\n    ],\n    \"CZ\": [\n        \"H\"\n    ],\n    \"DK\": [\n        \"H\"\n    ],\n    \"FI\": [\n        \"H\"\n    ],\n    \"ID\": [\n        \"H\"\n    ],\n    \"IS\": [\n        \"H\"\n    ],\n    \"ML\": [\n        \"H\"\n    ],\n    \"NE\": [\n        \"H\"\n    ],\n    \"RU\": [\n        \"H\"\n    ],\n    \"SE\": [\n        \"H\"\n    ],\n    \"SJ\": [\n        \"H\"\n    ],\n    \"SK\": [\n        \"H\"\n    ],\n    \"AS\": [\n        \"h\",\n        \"H\"\n    ],\n    \"BT\": [\n        \"h\",\n        \"H\"\n    ],\n    \"DJ\": [\n        \"h\",\n        \"H\"\n    ],\n    \"ER\": [\n        \"h\",\n        \"H\"\n    ],\n    \"GH\": [\n        \"h\",\n        \"H\"\n    ],\n    \"IN\": [\n        \"h\",\n        \"H\"\n    ],\n    \"LS\": [\n        \"h\",\n        \"H\"\n    ],\n    \"PG\": [\n        \"h\",\n        \"H\"\n    ],\n    \"PW\": [\n        \"h\",\n        \"H\"\n    ],\n    \"SO\": [\n        \"h\",\n        \"H\"\n    ],\n    \"TO\": [\n        \"h\",\n        \"H\"\n    ],\n    \"VU\": [\n        \"h\",\n        \"H\"\n    ],\n    \"WS\": [\n        \"h\",\n        \"H\"\n    ],\n    \"001\": [\n        \"H\",\n        \"h\"\n    ],\n    \"AL\": [\n        \"h\",\n        \"H\",\n        \"hB\"\n    ],\n    \"TD\": [\n        \"h\",\n        \"H\",\n        \"hB\"\n    ],\n    \"ca-ES\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"CF\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"CM\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"fr-CA\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"gl-ES\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"it-CH\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"it-IT\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"LU\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"NP\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"PF\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"SC\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"SM\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"SN\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"TF\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"VA\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"CY\": [\n        \"h\",\n        \"H\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GR\": [\n        \"h\",\n        \"H\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CO\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"DO\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KP\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KR\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"NA\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"PA\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"PR\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"VE\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"AC\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"AI\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"BW\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"BZ\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CC\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CK\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CX\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"DG\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"FK\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GB\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GG\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GI\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"IE\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"IM\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"IO\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"JE\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"LT\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"MK\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"MN\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"MS\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NF\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NG\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NR\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NU\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"PN\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"SH\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"SX\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"TA\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"ZA\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"af-ZA\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"AR\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"CL\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"CR\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"CU\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"EA\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-BO\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-BR\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-EC\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-ES\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-GQ\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-PE\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"GT\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"HN\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"IC\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KG\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KM\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"LK\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"MA\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"MX\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"NI\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"PY\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"SV\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"UY\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"JP\": [\n        \"H\",\n        \"h\",\n        \"K\"\n    ],\n    \"AD\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AM\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AO\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AW\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BJ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BL\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"CG\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"CI\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"CV\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"DE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"EE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"FR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GA\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GN\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GP\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GW\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"HR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"IL\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"IT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"KZ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MC\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MD\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MQ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MZ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"NC\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"NL\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"PM\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"PT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"RE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"RO\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"SI\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"SR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"ST\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"TG\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"TR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"WF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"YT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BD\": [\n        \"h\",\n        \"hB\",\n        \"H\"\n    ],\n    \"PK\": [\n        \"h\",\n        \"hB\",\n        \"H\"\n    ],\n    \"AZ\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"BA\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"BG\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"CH\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"GE\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"LI\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"ME\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"RS\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"UA\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"UZ\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"XK\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"AG\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"AU\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BB\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BS\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"CA\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"DM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"en-001\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"FJ\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"FM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GD\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GU\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GY\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"JM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"KI\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"KN\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"KY\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"LC\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"LR\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"MH\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"MP\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"MW\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"NZ\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SB\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SG\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SL\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SS\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SZ\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"TC\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"TT\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"UM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"US\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"VC\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"VG\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"VI\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"ZM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BO\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"EC\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"ES\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"GQ\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"PE\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"AE\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"ar-001\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"BH\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"DZ\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"EG\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"EH\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"HK\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"IQ\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"JO\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"KW\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"LB\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"LY\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"MO\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"MR\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"OM\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"PH\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"PS\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"QA\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"SA\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"SD\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"SY\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"TN\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"YE\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"AF\": [\n        \"H\",\n        \"hb\",\n        \"hB\",\n        \"h\"\n    ],\n    \"LA\": [\n        \"H\",\n        \"hb\",\n        \"hB\",\n        \"h\"\n    ],\n    \"CN\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"LV\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"TL\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"zu-ZA\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"CD\": [\n        \"hB\",\n        \"H\"\n    ],\n    \"IR\": [\n        \"hB\",\n        \"H\"\n    ],\n    \"hi-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"kn-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"ml-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"te-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"KH\": [\n        \"hB\",\n        \"h\",\n        \"H\",\n        \"hb\"\n    ],\n    \"ta-IN\": [\n        \"hB\",\n        \"h\",\n        \"hb\",\n        \"H\"\n    ],\n    \"BN\": [\n        \"hb\",\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"MY\": [\n        \"hb\",\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"ET\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"gu-IN\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"mr-IN\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"pa-IN\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"TW\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"KE\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ],\n    \"MM\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ],\n    \"TZ\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ],\n    \"UG\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ]\n};\n","import { timeData } from './time-data.generated';\n/**\n * Returns the best matching date time pattern if a date time skeleton\n * pattern is provided with a locale. Follows the Unicode specification:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n * @param skeleton date time skeleton pattern that possibly includes j, J or C\n * @param locale\n */\nexport function getBestPattern(skeleton, locale) {\n    var skeletonCopy = '';\n    for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {\n        var patternChar = skeleton.charAt(patternPos);\n        if (patternChar === 'j') {\n            var extraLength = 0;\n            while (patternPos + 1 < skeleton.length &&\n                skeleton.charAt(patternPos + 1) === patternChar) {\n                extraLength++;\n                patternPos++;\n            }\n            var hourLen = 1 + (extraLength & 1);\n            var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n            var dayPeriodChar = 'a';\n            var hourChar = getDefaultHourSymbolFromLocale(locale);\n            if (hourChar == 'H' || hourChar == 'k') {\n                dayPeriodLen = 0;\n            }\n            while (dayPeriodLen-- > 0) {\n                skeletonCopy += dayPeriodChar;\n            }\n            while (hourLen-- > 0) {\n                skeletonCopy = hourChar + skeletonCopy;\n            }\n        }\n        else if (patternChar === 'J') {\n            skeletonCopy += 'H';\n        }\n        else {\n            skeletonCopy += patternChar;\n        }\n    }\n    return skeletonCopy;\n}\n/**\n * Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n * of the given `locale` to the corresponding time pattern.\n * @param locale\n */\nfunction getDefaultHourSymbolFromLocale(locale) {\n    var hourCycle = locale.hourCycle;\n    if (hourCycle === undefined &&\n        // @ts-ignore hourCycle(s) is not identified yet\n        locale.hourCycles &&\n        // @ts-ignore\n        locale.hourCycles.length) {\n        // @ts-ignore\n        hourCycle = locale.hourCycles[0];\n    }\n    if (hourCycle) {\n        switch (hourCycle) {\n            case 'h24':\n                return 'k';\n            case 'h23':\n                return 'H';\n            case 'h12':\n                return 'h';\n            case 'h11':\n                return 'K';\n            default:\n                throw new Error('Invalid hourCycle');\n        }\n    }\n    // TODO: Once hourCycle is fully supported remove the following with data generation\n    var languageTag = locale.language;\n    var regionTag;\n    if (languageTag !== 'root') {\n        regionTag = locale.maximize().region;\n    }\n    var hourCycles = timeData[regionTag || ''] ||\n        timeData[languageTag || ''] ||\n        timeData[\"\".concat(languageTag, \"-001\")] ||\n        timeData['001'];\n    return hourCycles[0];\n}\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nimport { getBestPattern } from './date-time-pattern-generator';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n    return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n    ? Number.isSafeInteger\n    : function (n) {\n        return (typeof n === 'number' &&\n            isFinite(n) &&\n            Math.floor(n) === n &&\n            Math.abs(n) <= 0x1fffffffffffff);\n    };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n    var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n    /**\n     * legacy Edge or Xbox One browser\n     * Unicode flag support: supported\n     * Pattern_Syntax support: not supported\n     * See https://github.com/formatjs/formatjs/issues/2822\n     */\n    REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n    REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n    ? // Native\n        function startsWith(s, search, position) {\n            return s.startsWith(search, position);\n        }\n    : // For IE11\n        function startsWith(s, search, position) {\n            return s.slice(position, position + search.length) === search;\n        };\nvar fromCodePoint = hasNativeFromCodePoint\n    ? String.fromCodePoint\n    : // IE11\n        function fromCodePoint() {\n            var codePoints = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                codePoints[_i] = arguments[_i];\n            }\n            var elements = '';\n            var length = codePoints.length;\n            var i = 0;\n            var code;\n            while (length > i) {\n                code = codePoints[i++];\n                if (code > 0x10ffff)\n                    throw RangeError(code + ' is not a valid code point');\n                elements +=\n                    code < 0x10000\n                        ? String.fromCharCode(code)\n                        : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n            }\n            return elements;\n        };\nvar fromEntries = \n// native\nhasNativeFromEntries\n    ? Object.fromEntries\n    : // Ponyfill\n        function fromEntries(entries) {\n            var obj = {};\n            for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n                var _a = entries_1[_i], k = _a[0], v = _a[1];\n                obj[k] = v;\n            }\n            return obj;\n        };\nvar codePointAt = hasNativeCodePointAt\n    ? // Native\n        function codePointAt(s, index) {\n            return s.codePointAt(index);\n        }\n    : // IE 11\n        function codePointAt(s, index) {\n            var size = s.length;\n            if (index < 0 || index >= size) {\n                return undefined;\n            }\n            var first = s.charCodeAt(index);\n            var second;\n            return first < 0xd800 ||\n                first > 0xdbff ||\n                index + 1 === size ||\n                (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n                second > 0xdfff\n                ? first\n                : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n        };\nvar trimStart = hasTrimStart\n    ? // Native\n        function trimStart(s) {\n            return s.trimStart();\n        }\n    : // Ponyfill\n        function trimStart(s) {\n            return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n        };\nvar trimEnd = hasTrimEnd\n    ? // Native\n        function trimEnd(s) {\n            return s.trimEnd();\n        }\n    : // Ponyfill\n        function trimEnd(s) {\n            return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n        };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n    return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n    // Native\n    var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n    matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n        var _a;\n        IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n        var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n        return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n    };\n}\nelse {\n    // IE11\n    matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n        var match = [];\n        while (true) {\n            var c = codePointAt(s, index);\n            if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n                break;\n            }\n            match.push(c);\n            index += c >= 0x10000 ? 2 : 1;\n        }\n        return fromCodePoint.apply(void 0, match);\n    };\n}\nvar Parser = /** @class */ (function () {\n    function Parser(message, options) {\n        if (options === void 0) { options = {}; }\n        this.message = message;\n        this.position = { offset: 0, line: 1, column: 1 };\n        this.ignoreTag = !!options.ignoreTag;\n        this.locale = options.locale;\n        this.requiresOtherClause = !!options.requiresOtherClause;\n        this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n    }\n    Parser.prototype.parse = function () {\n        if (this.offset() !== 0) {\n            throw Error('parser can only be used once');\n        }\n        return this.parseMessage(0, '', false);\n    };\n    Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n        var elements = [];\n        while (!this.isEOF()) {\n            var char = this.char();\n            if (char === 123 /* `{` */) {\n                var result = this.parseArgument(nestingLevel, expectingCloseTag);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n            else if (char === 125 /* `}` */ && nestingLevel > 0) {\n                break;\n            }\n            else if (char === 35 /* `#` */ &&\n                (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n                var position = this.clonePosition();\n                this.bump();\n                elements.push({\n                    type: TYPE.pound,\n                    location: createLocation(position, this.clonePosition()),\n                });\n            }\n            else if (char === 60 /* `<` */ &&\n                !this.ignoreTag &&\n                this.peek() === 47 // char code for '/'\n            ) {\n                if (expectingCloseTag) {\n                    break;\n                }\n                else {\n                    return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n                }\n            }\n            else if (char === 60 /* `<` */ &&\n                !this.ignoreTag &&\n                _isAlpha(this.peek() || 0)) {\n                var result = this.parseTag(nestingLevel, parentArgType);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n            else {\n                var result = this.parseLiteral(nestingLevel, parentArgType);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n        }\n        return { val: elements, err: null };\n    };\n    /**\n     * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n     * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n     * are accepted:\n     *\n     * ```\n     * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n     * tagName ::= [a-z] (PENChar)*\n     * PENChar ::=\n     *     \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n     *     [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n     *     [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n     * ```\n     *\n     * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n     * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n     * since other tag-based engines like React allow it\n     */\n    Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n        var startPosition = this.clonePosition();\n        this.bump(); // `<`\n        var tagName = this.parseTagName();\n        this.bumpSpace();\n        if (this.bumpIf('/>')) {\n            // Self closing tag\n            return {\n                val: {\n                    type: TYPE.literal,\n                    value: \"<\".concat(tagName, \"/>\"),\n                    location: createLocation(startPosition, this.clonePosition()),\n                },\n                err: null,\n            };\n        }\n        else if (this.bumpIf('>')) {\n            var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n            if (childrenResult.err) {\n                return childrenResult;\n            }\n            var children = childrenResult.val;\n            // Expecting a close tag\n            var endTagStartPosition = this.clonePosition();\n            if (this.bumpIf('</')) {\n                if (this.isEOF() || !_isAlpha(this.char())) {\n                    return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n                }\n                var closingTagNameStartPosition = this.clonePosition();\n                var closingTagName = this.parseTagName();\n                if (tagName !== closingTagName) {\n                    return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n                }\n                this.bumpSpace();\n                if (!this.bumpIf('>')) {\n                    return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n                }\n                return {\n                    val: {\n                        type: TYPE.tag,\n                        value: tagName,\n                        children: children,\n                        location: createLocation(startPosition, this.clonePosition()),\n                    },\n                    err: null,\n                };\n            }\n            else {\n                return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n            }\n        }\n        else {\n            return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n        }\n    };\n    /**\n     * This method assumes that the caller has peeked ahead for the first tag character.\n     */\n    Parser.prototype.parseTagName = function () {\n        var startOffset = this.offset();\n        this.bump(); // the first tag name character\n        while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n            this.bump();\n        }\n        return this.message.slice(startOffset, this.offset());\n    };\n    Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n        var start = this.clonePosition();\n        var value = '';\n        while (true) {\n            var parseQuoteResult = this.tryParseQuote(parentArgType);\n            if (parseQuoteResult) {\n                value += parseQuoteResult;\n                continue;\n            }\n            var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n            if (parseUnquotedResult) {\n                value += parseUnquotedResult;\n                continue;\n            }\n            var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n            if (parseLeftAngleResult) {\n                value += parseLeftAngleResult;\n                continue;\n            }\n            break;\n        }\n        var location = createLocation(start, this.clonePosition());\n        return {\n            val: { type: TYPE.literal, value: value, location: location },\n            err: null,\n        };\n    };\n    Parser.prototype.tryParseLeftAngleBracket = function () {\n        if (!this.isEOF() &&\n            this.char() === 60 /* `<` */ &&\n            (this.ignoreTag ||\n                // If at the opening tag or closing tag position, bail.\n                !_isAlphaOrSlash(this.peek() || 0))) {\n            this.bump(); // `<`\n            return '<';\n        }\n        return null;\n    };\n    /**\n     * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n     * a character that requires quoting (that is, \"only where needed\"), and works the same in\n     * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n     */\n    Parser.prototype.tryParseQuote = function (parentArgType) {\n        if (this.isEOF() || this.char() !== 39 /* `'` */) {\n            return null;\n        }\n        // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n        // Check if is valid escaped character\n        switch (this.peek()) {\n            case 39 /* `'` */:\n                // double quote, should return as a single quote.\n                this.bump();\n                this.bump();\n                return \"'\";\n            // '{', '<', '>', '}'\n            case 123:\n            case 60:\n            case 62:\n            case 125:\n                break;\n            case 35: // '#'\n                if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n                    break;\n                }\n                return null;\n            default:\n                return null;\n        }\n        this.bump(); // apostrophe\n        var codePoints = [this.char()]; // escaped char\n        this.bump();\n        // read chars until the optional closing apostrophe is found\n        while (!this.isEOF()) {\n            var ch = this.char();\n            if (ch === 39 /* `'` */) {\n                if (this.peek() === 39 /* `'` */) {\n                    codePoints.push(39);\n                    // Bump one more time because we need to skip 2 characters.\n                    this.bump();\n                }\n                else {\n                    // Optional closing apostrophe.\n                    this.bump();\n                    break;\n                }\n            }\n            else {\n                codePoints.push(ch);\n            }\n            this.bump();\n        }\n        return fromCodePoint.apply(void 0, codePoints);\n    };\n    Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n        if (this.isEOF()) {\n            return null;\n        }\n        var ch = this.char();\n        if (ch === 60 /* `<` */ ||\n            ch === 123 /* `{` */ ||\n            (ch === 35 /* `#` */ &&\n                (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n            (ch === 125 /* `}` */ && nestingLevel > 0)) {\n            return null;\n        }\n        else {\n            this.bump();\n            return fromCodePoint(ch);\n        }\n    };\n    Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n        var openingBracePosition = this.clonePosition();\n        this.bump(); // `{`\n        this.bumpSpace();\n        if (this.isEOF()) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        if (this.char() === 125 /* `}` */) {\n            this.bump();\n            return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        // argument name\n        var value = this.parseIdentifierIfPossible().value;\n        if (!value) {\n            return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        this.bumpSpace();\n        if (this.isEOF()) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        switch (this.char()) {\n            // Simple argument: `{name}`\n            case 125 /* `}` */: {\n                this.bump(); // `}`\n                return {\n                    val: {\n                        type: TYPE.argument,\n                        // value does not include the opening and closing braces.\n                        value: value,\n                        location: createLocation(openingBracePosition, this.clonePosition()),\n                    },\n                    err: null,\n                };\n            }\n            // Argument with options: `{name, format, ...}`\n            case 44 /* `,` */: {\n                this.bump(); // `,`\n                this.bumpSpace();\n                if (this.isEOF()) {\n                    return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n                }\n                return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n            }\n            default:\n                return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n    };\n    /**\n     * Advance the parser until the end of the identifier, if it is currently on\n     * an identifier character. Return an empty string otherwise.\n     */\n    Parser.prototype.parseIdentifierIfPossible = function () {\n        var startingPosition = this.clonePosition();\n        var startOffset = this.offset();\n        var value = matchIdentifierAtIndex(this.message, startOffset);\n        var endOffset = startOffset + value.length;\n        this.bumpTo(endOffset);\n        var endPosition = this.clonePosition();\n        var location = createLocation(startingPosition, endPosition);\n        return { value: value, location: location };\n    };\n    Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n        var _a;\n        // Parse this range:\n        // {name, type, style}\n        //        ^---^\n        var typeStartPosition = this.clonePosition();\n        var argType = this.parseIdentifierIfPossible().value;\n        var typeEndPosition = this.clonePosition();\n        switch (argType) {\n            case '':\n                // Expecting a style string number, date, time, plural, selectordinal, or select.\n                return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n            case 'number':\n            case 'date':\n            case 'time': {\n                // Parse this range:\n                // {name, number, style}\n                //              ^-------^\n                this.bumpSpace();\n                var styleAndLocation = null;\n                if (this.bumpIf(',')) {\n                    this.bumpSpace();\n                    var styleStartPosition = this.clonePosition();\n                    var result = this.parseSimpleArgStyleIfPossible();\n                    if (result.err) {\n                        return result;\n                    }\n                    var style = trimEnd(result.val);\n                    if (style.length === 0) {\n                        return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n                    }\n                    var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n                    styleAndLocation = { style: style, styleLocation: styleLocation };\n                }\n                var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n                if (argCloseResult.err) {\n                    return argCloseResult;\n                }\n                var location_1 = createLocation(openingBracePosition, this.clonePosition());\n                // Extract style or skeleton\n                if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n                    // Skeleton starts with `::`.\n                    var skeleton = trimStart(styleAndLocation.style.slice(2));\n                    if (argType === 'number') {\n                        var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n                        if (result.err) {\n                            return result;\n                        }\n                        return {\n                            val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n                            err: null,\n                        };\n                    }\n                    else {\n                        if (skeleton.length === 0) {\n                            return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n                        }\n                        var dateTimePattern = skeleton;\n                        // Get \"best match\" pattern only if locale is passed, if not, let it\n                        // pass as-is where `parseDateTimeSkeleton()` will throw an error\n                        // for unsupported patterns.\n                        if (this.locale) {\n                            dateTimePattern = getBestPattern(skeleton, this.locale);\n                        }\n                        var style = {\n                            type: SKELETON_TYPE.dateTime,\n                            pattern: dateTimePattern,\n                            location: styleAndLocation.styleLocation,\n                            parsedOptions: this.shouldParseSkeletons\n                                ? parseDateTimeSkeleton(dateTimePattern)\n                                : {},\n                        };\n                        var type = argType === 'date' ? TYPE.date : TYPE.time;\n                        return {\n                            val: { type: type, value: value, location: location_1, style: style },\n                            err: null,\n                        };\n                    }\n                }\n                // Regular style or no style.\n                return {\n                    val: {\n                        type: argType === 'number'\n                            ? TYPE.number\n                            : argType === 'date'\n                                ? TYPE.date\n                                : TYPE.time,\n                        value: value,\n                        location: location_1,\n                        style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n                    },\n                    err: null,\n                };\n            }\n            case 'plural':\n            case 'selectordinal':\n            case 'select': {\n                // Parse this range:\n                // {name, plural, options}\n                //              ^---------^\n                var typeEndPosition_1 = this.clonePosition();\n                this.bumpSpace();\n                if (!this.bumpIf(',')) {\n                    return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n                }\n                this.bumpSpace();\n                // Parse offset:\n                // {name, plural, offset:1, options}\n                //                ^-----^\n                //\n                // or the first option:\n                //\n                // {name, plural, one {...} other {...}}\n                //                ^--^\n                var identifierAndLocation = this.parseIdentifierIfPossible();\n                var pluralOffset = 0;\n                if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n                    if (!this.bumpIf(':')) {\n                        return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n                    }\n                    this.bumpSpace();\n                    var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n                    if (result.err) {\n                        return result;\n                    }\n                    // Parse another identifier for option parsing\n                    this.bumpSpace();\n                    identifierAndLocation = this.parseIdentifierIfPossible();\n                    pluralOffset = result.val;\n                }\n                var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n                if (optionsResult.err) {\n                    return optionsResult;\n                }\n                var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n                if (argCloseResult.err) {\n                    return argCloseResult;\n                }\n                var location_2 = createLocation(openingBracePosition, this.clonePosition());\n                if (argType === 'select') {\n                    return {\n                        val: {\n                            type: TYPE.select,\n                            value: value,\n                            options: fromEntries(optionsResult.val),\n                            location: location_2,\n                        },\n                        err: null,\n                    };\n                }\n                else {\n                    return {\n                        val: {\n                            type: TYPE.plural,\n                            value: value,\n                            options: fromEntries(optionsResult.val),\n                            offset: pluralOffset,\n                            pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n                            location: location_2,\n                        },\n                        err: null,\n                    };\n                }\n            }\n            default:\n                return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n        }\n    };\n    Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n        // Parse: {value, number, ::currency/GBP }\n        //\n        if (this.isEOF() || this.char() !== 125 /* `}` */) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        this.bump(); // `}`\n        return { val: true, err: null };\n    };\n    /**\n     * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n     */\n    Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n        var nestedBraces = 0;\n        var startPosition = this.clonePosition();\n        while (!this.isEOF()) {\n            var ch = this.char();\n            switch (ch) {\n                case 39 /* `'` */: {\n                    // Treat apostrophe as quoting but include it in the style part.\n                    // Find the end of the quoted literal text.\n                    this.bump();\n                    var apostrophePosition = this.clonePosition();\n                    if (!this.bumpUntil(\"'\")) {\n                        return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n                    }\n                    this.bump();\n                    break;\n                }\n                case 123 /* `{` */: {\n                    nestedBraces += 1;\n                    this.bump();\n                    break;\n                }\n                case 125 /* `}` */: {\n                    if (nestedBraces > 0) {\n                        nestedBraces -= 1;\n                    }\n                    else {\n                        return {\n                            val: this.message.slice(startPosition.offset, this.offset()),\n                            err: null,\n                        };\n                    }\n                    break;\n                }\n                default:\n                    this.bump();\n                    break;\n            }\n        }\n        return {\n            val: this.message.slice(startPosition.offset, this.offset()),\n            err: null,\n        };\n    };\n    Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n        var tokens = [];\n        try {\n            tokens = parseNumberSkeletonFromString(skeleton);\n        }\n        catch (e) {\n            return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n        }\n        return {\n            val: {\n                type: SKELETON_TYPE.number,\n                tokens: tokens,\n                location: location,\n                parsedOptions: this.shouldParseSkeletons\n                    ? parseNumberSkeleton(tokens)\n                    : {},\n            },\n            err: null,\n        };\n    };\n    /**\n     * @param nesting_level The current nesting level of messages.\n     *     This can be positive when parsing message fragment in select or plural argument options.\n     * @param parent_arg_type The parent argument's type.\n     * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n     *     the argument. It is a by-product of a previous parsing attempt.\n     * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n     *     between a pair of opening and closing tags. The nested message will not parse beyond\n     *     the closing tag boundary.\n     */\n    Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n        var _a;\n        var hasOtherClause = false;\n        var options = [];\n        var parsedSelectors = new Set();\n        var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n        // Parse:\n        // one {one apple}\n        // ^--^\n        while (true) {\n            if (selector.length === 0) {\n                var startPosition = this.clonePosition();\n                if (parentArgType !== 'select' && this.bumpIf('=')) {\n                    // Try parse `={number}` selector\n                    var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n                    if (result.err) {\n                        return result;\n                    }\n                    selectorLocation = createLocation(startPosition, this.clonePosition());\n                    selector = this.message.slice(startPosition.offset, this.offset());\n                }\n                else {\n                    break;\n                }\n            }\n            // Duplicate selector clauses\n            if (parsedSelectors.has(selector)) {\n                return this.error(parentArgType === 'select'\n                    ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n                    : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n            }\n            if (selector === 'other') {\n                hasOtherClause = true;\n            }\n            // Parse:\n            // one {one apple}\n            //     ^----------^\n            this.bumpSpace();\n            var openingBracePosition = this.clonePosition();\n            if (!this.bumpIf('{')) {\n                return this.error(parentArgType === 'select'\n                    ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n                    : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n            }\n            var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n            if (fragmentResult.err) {\n                return fragmentResult;\n            }\n            var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n            if (argCloseResult.err) {\n                return argCloseResult;\n            }\n            options.push([\n                selector,\n                {\n                    value: fragmentResult.val,\n                    location: createLocation(openingBracePosition, this.clonePosition()),\n                },\n            ]);\n            // Keep track of the existing selectors\n            parsedSelectors.add(selector);\n            // Prep next selector clause.\n            this.bumpSpace();\n            (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n        }\n        if (options.length === 0) {\n            return this.error(parentArgType === 'select'\n                ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n                : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n        }\n        if (this.requiresOtherClause && !hasOtherClause) {\n            return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n        }\n        return { val: options, err: null };\n    };\n    Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n        var sign = 1;\n        var startingPosition = this.clonePosition();\n        if (this.bumpIf('+')) {\n        }\n        else if (this.bumpIf('-')) {\n            sign = -1;\n        }\n        var hasDigits = false;\n        var decimal = 0;\n        while (!this.isEOF()) {\n            var ch = this.char();\n            if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n                hasDigits = true;\n                decimal = decimal * 10 + (ch - 48);\n                this.bump();\n            }\n            else {\n                break;\n            }\n        }\n        var location = createLocation(startingPosition, this.clonePosition());\n        if (!hasDigits) {\n            return this.error(expectNumberError, location);\n        }\n        decimal *= sign;\n        if (!isSafeInteger(decimal)) {\n            return this.error(invalidNumberError, location);\n        }\n        return { val: decimal, err: null };\n    };\n    Parser.prototype.offset = function () {\n        return this.position.offset;\n    };\n    Parser.prototype.isEOF = function () {\n        return this.offset() === this.message.length;\n    };\n    Parser.prototype.clonePosition = function () {\n        // This is much faster than `Object.assign` or spread.\n        return {\n            offset: this.position.offset,\n            line: this.position.line,\n            column: this.position.column,\n        };\n    };\n    /**\n     * Return the code point at the current position of the parser.\n     * Throws if the index is out of bound.\n     */\n    Parser.prototype.char = function () {\n        var offset = this.position.offset;\n        if (offset >= this.message.length) {\n            throw Error('out of bound');\n        }\n        var code = codePointAt(this.message, offset);\n        if (code === undefined) {\n            throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n        }\n        return code;\n    };\n    Parser.prototype.error = function (kind, location) {\n        return {\n            val: null,\n            err: {\n                kind: kind,\n                message: this.message,\n                location: location,\n            },\n        };\n    };\n    /** Bump the parser to the next UTF-16 code unit. */\n    Parser.prototype.bump = function () {\n        if (this.isEOF()) {\n            return;\n        }\n        var code = this.char();\n        if (code === 10 /* '\\n' */) {\n            this.position.line += 1;\n            this.position.column = 1;\n            this.position.offset += 1;\n        }\n        else {\n            this.position.column += 1;\n            // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n            this.position.offset += code < 0x10000 ? 1 : 2;\n        }\n    };\n    /**\n     * If the substring starting at the current position of the parser has\n     * the given prefix, then bump the parser to the character immediately\n     * following the prefix and return true. Otherwise, don't bump the parser\n     * and return false.\n     */\n    Parser.prototype.bumpIf = function (prefix) {\n        if (startsWith(this.message, prefix, this.offset())) {\n            for (var i = 0; i < prefix.length; i++) {\n                this.bump();\n            }\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Bump the parser until the pattern character is found and return `true`.\n     * Otherwise bump to the end of the file and return `false`.\n     */\n    Parser.prototype.bumpUntil = function (pattern) {\n        var currentOffset = this.offset();\n        var index = this.message.indexOf(pattern, currentOffset);\n        if (index >= 0) {\n            this.bumpTo(index);\n            return true;\n        }\n        else {\n            this.bumpTo(this.message.length);\n            return false;\n        }\n    };\n    /**\n     * Bump the parser to the target offset.\n     * If target offset is beyond the end of the input, bump the parser to the end of the input.\n     */\n    Parser.prototype.bumpTo = function (targetOffset) {\n        if (this.offset() > targetOffset) {\n            throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n        }\n        targetOffset = Math.min(targetOffset, this.message.length);\n        while (true) {\n            var offset = this.offset();\n            if (offset === targetOffset) {\n                break;\n            }\n            if (offset > targetOffset) {\n                throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n            }\n            this.bump();\n            if (this.isEOF()) {\n                break;\n            }\n        }\n    };\n    /** advance the parser through all whitespace to the next non-whitespace code unit. */\n    Parser.prototype.bumpSpace = function () {\n        while (!this.isEOF() && _isWhiteSpace(this.char())) {\n            this.bump();\n        }\n    };\n    /**\n     * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n     * If the input has been exhausted, then this returns null.\n     */\n    Parser.prototype.peek = function () {\n        if (this.isEOF()) {\n            return null;\n        }\n        var code = this.char();\n        var offset = this.offset();\n        var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n        return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n    };\n    return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n    return ((codepoint >= 97 && codepoint <= 122) ||\n        (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n    return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n    return (c === 45 /* '-' */ ||\n        c === 46 /* '.' */ ||\n        (c >= 48 && c <= 57) /* 0..9 */ ||\n        c === 95 /* '_' */ ||\n        (c >= 97 && c <= 122) /** a..z */ ||\n        (c >= 65 && c <= 90) /* A..Z */ ||\n        c == 0xb7 ||\n        (c >= 0xc0 && c <= 0xd6) ||\n        (c >= 0xd8 && c <= 0xf6) ||\n        (c >= 0xf8 && c <= 0x37d) ||\n        (c >= 0x37f && c <= 0x1fff) ||\n        (c >= 0x200c && c <= 0x200d) ||\n        (c >= 0x203f && c <= 0x2040) ||\n        (c >= 0x2070 && c <= 0x218f) ||\n        (c >= 0x2c00 && c <= 0x2fef) ||\n        (c >= 0x3001 && c <= 0xd7ff) ||\n        (c >= 0xf900 && c <= 0xfdcf) ||\n        (c >= 0xfdf0 && c <= 0xfffd) ||\n        (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n    return ((c >= 0x0009 && c <= 0x000d) ||\n        c === 0x0020 ||\n        c === 0x0085 ||\n        (c >= 0x200e && c <= 0x200f) ||\n        c === 0x2028 ||\n        c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n    return ((c >= 0x0021 && c <= 0x0023) ||\n        c === 0x0024 ||\n        (c >= 0x0025 && c <= 0x0027) ||\n        c === 0x0028 ||\n        c === 0x0029 ||\n        c === 0x002a ||\n        c === 0x002b ||\n        c === 0x002c ||\n        c === 0x002d ||\n        (c >= 0x002e && c <= 0x002f) ||\n        (c >= 0x003a && c <= 0x003b) ||\n        (c >= 0x003c && c <= 0x003e) ||\n        (c >= 0x003f && c <= 0x0040) ||\n        c === 0x005b ||\n        c === 0x005c ||\n        c === 0x005d ||\n        c === 0x005e ||\n        c === 0x0060 ||\n        c === 0x007b ||\n        c === 0x007c ||\n        c === 0x007d ||\n        c === 0x007e ||\n        c === 0x00a1 ||\n        (c >= 0x00a2 && c <= 0x00a5) ||\n        c === 0x00a6 ||\n        c === 0x00a7 ||\n        c === 0x00a9 ||\n        c === 0x00ab ||\n        c === 0x00ac ||\n        c === 0x00ae ||\n        c === 0x00b0 ||\n        c === 0x00b1 ||\n        c === 0x00b6 ||\n        c === 0x00bb ||\n        c === 0x00bf ||\n        c === 0x00d7 ||\n        c === 0x00f7 ||\n        (c >= 0x2010 && c <= 0x2015) ||\n        (c >= 0x2016 && c <= 0x2017) ||\n        c === 0x2018 ||\n        c === 0x2019 ||\n        c === 0x201a ||\n        (c >= 0x201b && c <= 0x201c) ||\n        c === 0x201d ||\n        c === 0x201e ||\n        c === 0x201f ||\n        (c >= 0x2020 && c <= 0x2027) ||\n        (c >= 0x2030 && c <= 0x2038) ||\n        c === 0x2039 ||\n        c === 0x203a ||\n        (c >= 0x203b && c <= 0x203e) ||\n        (c >= 0x2041 && c <= 0x2043) ||\n        c === 0x2044 ||\n        c === 0x2045 ||\n        c === 0x2046 ||\n        (c >= 0x2047 && c <= 0x2051) ||\n        c === 0x2052 ||\n        c === 0x2053 ||\n        (c >= 0x2055 && c <= 0x205e) ||\n        (c >= 0x2190 && c <= 0x2194) ||\n        (c >= 0x2195 && c <= 0x2199) ||\n        (c >= 0x219a && c <= 0x219b) ||\n        (c >= 0x219c && c <= 0x219f) ||\n        c === 0x21a0 ||\n        (c >= 0x21a1 && c <= 0x21a2) ||\n        c === 0x21a3 ||\n        (c >= 0x21a4 && c <= 0x21a5) ||\n        c === 0x21a6 ||\n        (c >= 0x21a7 && c <= 0x21ad) ||\n        c === 0x21ae ||\n        (c >= 0x21af && c <= 0x21cd) ||\n        (c >= 0x21ce && c <= 0x21cf) ||\n        (c >= 0x21d0 && c <= 0x21d1) ||\n        c === 0x21d2 ||\n        c === 0x21d3 ||\n        c === 0x21d4 ||\n        (c >= 0x21d5 && c <= 0x21f3) ||\n        (c >= 0x21f4 && c <= 0x22ff) ||\n        (c >= 0x2300 && c <= 0x2307) ||\n        c === 0x2308 ||\n        c === 0x2309 ||\n        c === 0x230a ||\n        c === 0x230b ||\n        (c >= 0x230c && c <= 0x231f) ||\n        (c >= 0x2320 && c <= 0x2321) ||\n        (c >= 0x2322 && c <= 0x2328) ||\n        c === 0x2329 ||\n        c === 0x232a ||\n        (c >= 0x232b && c <= 0x237b) ||\n        c === 0x237c ||\n        (c >= 0x237d && c <= 0x239a) ||\n        (c >= 0x239b && c <= 0x23b3) ||\n        (c >= 0x23b4 && c <= 0x23db) ||\n        (c >= 0x23dc && c <= 0x23e1) ||\n        (c >= 0x23e2 && c <= 0x2426) ||\n        (c >= 0x2427 && c <= 0x243f) ||\n        (c >= 0x2440 && c <= 0x244a) ||\n        (c >= 0x244b && c <= 0x245f) ||\n        (c >= 0x2500 && c <= 0x25b6) ||\n        c === 0x25b7 ||\n        (c >= 0x25b8 && c <= 0x25c0) ||\n        c === 0x25c1 ||\n        (c >= 0x25c2 && c <= 0x25f7) ||\n        (c >= 0x25f8 && c <= 0x25ff) ||\n        (c >= 0x2600 && c <= 0x266e) ||\n        c === 0x266f ||\n        (c >= 0x2670 && c <= 0x2767) ||\n        c === 0x2768 ||\n        c === 0x2769 ||\n        c === 0x276a ||\n        c === 0x276b ||\n        c === 0x276c ||\n        c === 0x276d ||\n        c === 0x276e ||\n        c === 0x276f ||\n        c === 0x2770 ||\n        c === 0x2771 ||\n        c === 0x2772 ||\n        c === 0x2773 ||\n        c === 0x2774 ||\n        c === 0x2775 ||\n        (c >= 0x2794 && c <= 0x27bf) ||\n        (c >= 0x27c0 && c <= 0x27c4) ||\n        c === 0x27c5 ||\n        c === 0x27c6 ||\n        (c >= 0x27c7 && c <= 0x27e5) ||\n        c === 0x27e6 ||\n        c === 0x27e7 ||\n        c === 0x27e8 ||\n        c === 0x27e9 ||\n        c === 0x27ea ||\n        c === 0x27eb ||\n        c === 0x27ec ||\n        c === 0x27ed ||\n        c === 0x27ee ||\n        c === 0x27ef ||\n        (c >= 0x27f0 && c <= 0x27ff) ||\n        (c >= 0x2800 && c <= 0x28ff) ||\n        (c >= 0x2900 && c <= 0x2982) ||\n        c === 0x2983 ||\n        c === 0x2984 ||\n        c === 0x2985 ||\n        c === 0x2986 ||\n        c === 0x2987 ||\n        c === 0x2988 ||\n        c === 0x2989 ||\n        c === 0x298a ||\n        c === 0x298b ||\n        c === 0x298c ||\n        c === 0x298d ||\n        c === 0x298e ||\n        c === 0x298f ||\n        c === 0x2990 ||\n        c === 0x2991 ||\n        c === 0x2992 ||\n        c === 0x2993 ||\n        c === 0x2994 ||\n        c === 0x2995 ||\n        c === 0x2996 ||\n        c === 0x2997 ||\n        c === 0x2998 ||\n        (c >= 0x2999 && c <= 0x29d7) ||\n        c === 0x29d8 ||\n        c === 0x29d9 ||\n        c === 0x29da ||\n        c === 0x29db ||\n        (c >= 0x29dc && c <= 0x29fb) ||\n        c === 0x29fc ||\n        c === 0x29fd ||\n        (c >= 0x29fe && c <= 0x2aff) ||\n        (c >= 0x2b00 && c <= 0x2b2f) ||\n        (c >= 0x2b30 && c <= 0x2b44) ||\n        (c >= 0x2b45 && c <= 0x2b46) ||\n        (c >= 0x2b47 && c <= 0x2b4c) ||\n        (c >= 0x2b4d && c <= 0x2b73) ||\n        (c >= 0x2b74 && c <= 0x2b75) ||\n        (c >= 0x2b76 && c <= 0x2b95) ||\n        c === 0x2b96 ||\n        (c >= 0x2b97 && c <= 0x2bff) ||\n        (c >= 0x2e00 && c <= 0x2e01) ||\n        c === 0x2e02 ||\n        c === 0x2e03 ||\n        c === 0x2e04 ||\n        c === 0x2e05 ||\n        (c >= 0x2e06 && c <= 0x2e08) ||\n        c === 0x2e09 ||\n        c === 0x2e0a ||\n        c === 0x2e0b ||\n        c === 0x2e0c ||\n        c === 0x2e0d ||\n        (c >= 0x2e0e && c <= 0x2e16) ||\n        c === 0x2e17 ||\n        (c >= 0x2e18 && c <= 0x2e19) ||\n        c === 0x2e1a ||\n        c === 0x2e1b ||\n        c === 0x2e1c ||\n        c === 0x2e1d ||\n        (c >= 0x2e1e && c <= 0x2e1f) ||\n        c === 0x2e20 ||\n        c === 0x2e21 ||\n        c === 0x2e22 ||\n        c === 0x2e23 ||\n        c === 0x2e24 ||\n        c === 0x2e25 ||\n        c === 0x2e26 ||\n        c === 0x2e27 ||\n        c === 0x2e28 ||\n        c === 0x2e29 ||\n        (c >= 0x2e2a && c <= 0x2e2e) ||\n        c === 0x2e2f ||\n        (c >= 0x2e30 && c <= 0x2e39) ||\n        (c >= 0x2e3a && c <= 0x2e3b) ||\n        (c >= 0x2e3c && c <= 0x2e3f) ||\n        c === 0x2e40 ||\n        c === 0x2e41 ||\n        c === 0x2e42 ||\n        (c >= 0x2e43 && c <= 0x2e4f) ||\n        (c >= 0x2e50 && c <= 0x2e51) ||\n        c === 0x2e52 ||\n        (c >= 0x2e53 && c <= 0x2e7f) ||\n        (c >= 0x3001 && c <= 0x3003) ||\n        c === 0x3008 ||\n        c === 0x3009 ||\n        c === 0x300a ||\n        c === 0x300b ||\n        c === 0x300c ||\n        c === 0x300d ||\n        c === 0x300e ||\n        c === 0x300f ||\n        c === 0x3010 ||\n        c === 0x3011 ||\n        (c >= 0x3012 && c <= 0x3013) ||\n        c === 0x3014 ||\n        c === 0x3015 ||\n        c === 0x3016 ||\n        c === 0x3017 ||\n        c === 0x3018 ||\n        c === 0x3019 ||\n        c === 0x301a ||\n        c === 0x301b ||\n        c === 0x301c ||\n        c === 0x301d ||\n        (c >= 0x301e && c <= 0x301f) ||\n        c === 0x3020 ||\n        c === 0x3030 ||\n        c === 0xfd3e ||\n        c === 0xfd3f ||\n        (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n    els.forEach(function (el) {\n        delete el.location;\n        if (isSelectElement(el) || isPluralElement(el)) {\n            for (var k in el.options) {\n                delete el.options[k].location;\n                pruneLocation(el.options[k].value);\n            }\n        }\n        else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n            delete el.style.location;\n        }\n        else if ((isDateElement(el) || isTimeElement(el)) &&\n            isDateTimeSkeleton(el.style)) {\n            delete el.style.location;\n        }\n        else if (isTagElement(el)) {\n            pruneLocation(el.children);\n        }\n    });\n}\nexport function parse(message, opts) {\n    if (opts === void 0) { opts = {}; }\n    opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n    var result = new Parser(message, opts).parse();\n    if (result.err) {\n        var error = SyntaxError(ErrorKind[result.err.kind]);\n        // @ts-expect-error Assign to error object\n        error.location = result.err.location;\n        // @ts-expect-error Assign to error object\n        error.originalMessage = result.err.message;\n        throw error;\n    }\n    if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n        pruneLocation(result.val);\n    }\n    return result.val;\n}\nexport * from './types';\n","//\n// Main\n//\nexport default function memoize(fn, options) {\n    var cache = options && options.cache ? options.cache : cacheDefault;\n    var serializer = options && options.serializer ? options.serializer : serializerDefault;\n    var strategy = options && options.strategy ? options.strategy : strategyDefault;\n    return strategy(fn, {\n        cache: cache,\n        serializer: serializer,\n    });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n    return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n    var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n    var computedValue = cache.get(cacheKey);\n    if (typeof computedValue === 'undefined') {\n        computedValue = fn.call(this, arg);\n        cache.set(cacheKey, computedValue);\n    }\n    return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n    var args = Array.prototype.slice.call(arguments, 3);\n    var cacheKey = serializer(args);\n    var computedValue = cache.get(cacheKey);\n    if (typeof computedValue === 'undefined') {\n        computedValue = fn.apply(this, args);\n        cache.set(cacheKey, computedValue);\n    }\n    return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n    return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n    var strategy = fn.length === 1 ? monadic : variadic;\n    return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n    return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n    return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n    return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n    this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n    return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n    this.cache[key] = value;\n};\nvar cacheDefault = {\n    create: function create() {\n        // @ts-ignore\n        return new ObjectWithoutPrototypeCache();\n    },\n};\nexport var strategies = {\n    variadic: strategyVariadic,\n    monadic: strategyMonadic,\n};\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n    // When we have a placeholder but no value to format\n    ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n    // When value supplied is invalid\n    ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n    // When we need specific Intl API but it's not available\n    ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n    __extends(FormatError, _super);\n    function FormatError(msg, code, originalMessage) {\n        var _this = _super.call(this, msg) || this;\n        _this.code = code;\n        _this.originalMessage = originalMessage;\n        return _this;\n    }\n    FormatError.prototype.toString = function () {\n        return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n    };\n    return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n    __extends(InvalidValueError, _super);\n    function InvalidValueError(variableId, value, options, originalMessage) {\n        return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n    }\n    return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n    __extends(InvalidValueTypeError, _super);\n    function InvalidValueTypeError(value, type, originalMessage) {\n        return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n    }\n    return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n    __extends(MissingValueError, _super);\n    function MissingValueError(variableId, originalMessage) {\n        return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n    }\n    return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n    PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n    PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n    if (parts.length < 2) {\n        return parts;\n    }\n    return parts.reduce(function (all, part) {\n        var lastPart = all[all.length - 1];\n        if (!lastPart ||\n            lastPart.type !== PART_TYPE.literal ||\n            part.type !== PART_TYPE.literal) {\n            all.push(part);\n        }\n        else {\n            lastPart.value += part.value;\n        }\n        return all;\n    }, []);\n}\nexport function isFormatXMLElementFn(el) {\n    return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n    // Hot path for straight simple msg translations\n    if (els.length === 1 && isLiteralElement(els[0])) {\n        return [\n            {\n                type: PART_TYPE.literal,\n                value: els[0].value,\n            },\n        ];\n    }\n    var result = [];\n    for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n        var el = els_1[_i];\n        // Exit early for string parts.\n        if (isLiteralElement(el)) {\n            result.push({\n                type: PART_TYPE.literal,\n                value: el.value,\n            });\n            continue;\n        }\n        // TODO: should this part be literal type?\n        // Replace `#` in plural rules with the actual numeric value.\n        if (isPoundElement(el)) {\n            if (typeof currentPluralValue === 'number') {\n                result.push({\n                    type: PART_TYPE.literal,\n                    value: formatters.getNumberFormat(locales).format(currentPluralValue),\n                });\n            }\n            continue;\n        }\n        var varName = el.value;\n        // Enforce that all required values are provided by the caller.\n        if (!(values && varName in values)) {\n            throw new MissingValueError(varName, originalMessage);\n        }\n        var value = values[varName];\n        if (isArgumentElement(el)) {\n            if (!value || typeof value === 'string' || typeof value === 'number') {\n                value =\n                    typeof value === 'string' || typeof value === 'number'\n                        ? String(value)\n                        : '';\n            }\n            result.push({\n                type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n                value: value,\n            });\n            continue;\n        }\n        // Recursively format plural and select parts' option — which can be a\n        // nested pattern structure. The choosing of the option to use is\n        // abstracted-by and delegated-to the part helper object.\n        if (isDateElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.date[el.style]\n                : isDateTimeSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : undefined;\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getDateTimeFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isTimeElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.time[el.style]\n                : isDateTimeSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : formats.time.medium;\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getDateTimeFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isNumberElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.number[el.style]\n                : isNumberSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : undefined;\n            if (style && style.scale) {\n                value =\n                    value *\n                        (style.scale || 1);\n            }\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getNumberFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isTagElement(el)) {\n            var children = el.children, value_1 = el.value;\n            var formatFn = values[value_1];\n            if (!isFormatXMLElementFn(formatFn)) {\n                throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n            }\n            var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n            var chunks = formatFn(parts.map(function (p) { return p.value; }));\n            if (!Array.isArray(chunks)) {\n                chunks = [chunks];\n            }\n            result.push.apply(result, chunks.map(function (c) {\n                return {\n                    type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n                    value: c,\n                };\n            }));\n        }\n        if (isSelectElement(el)) {\n            var opt = el.options[value] || el.options.other;\n            if (!opt) {\n                throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n            }\n            result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n            continue;\n        }\n        if (isPluralElement(el)) {\n            var opt = el.options[\"=\".concat(value)];\n            if (!opt) {\n                if (!Intl.PluralRules) {\n                    throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n                }\n                var rule = formatters\n                    .getPluralRules(locales, { type: el.pluralType })\n                    .select(value - (el.offset || 0));\n                opt = el.options[rule] || el.options.other;\n            }\n            if (!opt) {\n                throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n            }\n            result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n            continue;\n        }\n    }\n    return mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n    if (!c2) {\n        return c1;\n    }\n    return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n        all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n        return all;\n    }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n    if (!configs) {\n        return defaultConfig;\n    }\n    return Object.keys(defaultConfig).reduce(function (all, k) {\n        all[k] = mergeConfig(defaultConfig[k], configs[k]);\n        return all;\n    }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n    return {\n        create: function () {\n            return {\n                get: function (key) {\n                    return store[key];\n                },\n                set: function (key, value) {\n                    store[key] = value;\n                },\n            };\n        },\n    };\n}\nfunction createDefaultFormatters(cache) {\n    if (cache === void 0) { cache = {\n        number: {},\n        dateTime: {},\n        pluralRules: {},\n    }; }\n    return {\n        getNumberFormat: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.number),\n            strategy: strategies.variadic,\n        }),\n        getDateTimeFormat: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.dateTime),\n            strategy: strategies.variadic,\n        }),\n        getPluralRules: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.pluralRules),\n            strategy: strategies.variadic,\n        }),\n    };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n    function IntlMessageFormat(message, locales, overrideFormats, opts) {\n        var _this = this;\n        if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n        this.formatterCache = {\n            number: {},\n            dateTime: {},\n            pluralRules: {},\n        };\n        this.format = function (values) {\n            var parts = _this.formatToParts(values);\n            // Hot path for straight simple msg translations\n            if (parts.length === 1) {\n                return parts[0].value;\n            }\n            var result = parts.reduce(function (all, part) {\n                if (!all.length ||\n                    part.type !== PART_TYPE.literal ||\n                    typeof all[all.length - 1] !== 'string') {\n                    all.push(part.value);\n                }\n                else {\n                    all[all.length - 1] += part.value;\n                }\n                return all;\n            }, []);\n            if (result.length <= 1) {\n                return result[0] || '';\n            }\n            return result;\n        };\n        this.formatToParts = function (values) {\n            return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n        };\n        this.resolvedOptions = function () { return ({\n            locale: _this.resolvedLocale.toString(),\n        }); };\n        this.getAst = function () { return _this.ast; };\n        // Defined first because it's used to build the format pattern.\n        this.locales = locales;\n        this.resolvedLocale = IntlMessageFormat.resolveLocale(locales);\n        if (typeof message === 'string') {\n            this.message = message;\n            if (!IntlMessageFormat.__parse) {\n                throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n            }\n            // Parse string messages into an AST.\n            this.ast = IntlMessageFormat.__parse(message, {\n                ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n                locale: this.resolvedLocale,\n            });\n        }\n        else {\n            this.ast = message;\n        }\n        if (!Array.isArray(this.ast)) {\n            throw new TypeError('A message must be provided as a String or AST.');\n        }\n        // Creates a new object with the specified `formats` merged with the default\n        // formats.\n        this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n        this.formatters =\n            (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n    }\n    Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n        get: function () {\n            if (!IntlMessageFormat.memoizedDefaultLocale) {\n                IntlMessageFormat.memoizedDefaultLocale =\n                    new Intl.NumberFormat().resolvedOptions().locale;\n            }\n            return IntlMessageFormat.memoizedDefaultLocale;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    IntlMessageFormat.memoizedDefaultLocale = null;\n    IntlMessageFormat.resolveLocale = function (locales) {\n        var supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);\n        if (supportedLocales.length > 0) {\n            return new Intl.Locale(supportedLocales[0]);\n        }\n        return new Intl.Locale(typeof locales === 'string' ? locales : locales[0]);\n    };\n    IntlMessageFormat.__parse = parse;\n    // Default format options used as the prototype of the `formats` provided to the\n    // constructor. These are used when constructing the internal Intl.NumberFormat\n    // and Intl.DateTimeFormat instances.\n    IntlMessageFormat.formats = {\n        number: {\n            integer: {\n                maximumFractionDigits: 0,\n            },\n            currency: {\n                style: 'currency',\n            },\n            percent: {\n                style: 'percent',\n            },\n        },\n        date: {\n            short: {\n                month: 'numeric',\n                day: 'numeric',\n                year: '2-digit',\n            },\n            medium: {\n                month: 'short',\n                day: 'numeric',\n                year: 'numeric',\n            },\n            long: {\n                month: 'long',\n                day: 'numeric',\n                year: 'numeric',\n            },\n            full: {\n                weekday: 'long',\n                month: 'long',\n                day: 'numeric',\n                year: 'numeric',\n            },\n        },\n        time: {\n            short: {\n                hour: 'numeric',\n                minute: 'numeric',\n            },\n            medium: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n            },\n            long: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n                timeZoneName: 'short',\n            },\n            full: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n                timeZoneName: 'short',\n            },\n        },\n    };\n    return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","import logger from \"./logger\";\nimport {\n  IPublicTypeRootSchema,\n  IPublicTypeNodeSchema,\n  IPublicTypeJSSlot,\n} from \"@yuntoo/page-types\";\nimport { isI18nData, isJSExpression } from \"@yuntoo/page-utils\";\nimport { isEmpty } from \"lodash\";\nimport IntlMessageFormat from \"intl-messageformat\";\n\n// 使用在构建时注入的版本号或硬编码版本号\n(window as any).sdkVersion = process.env.PACKAGE_VERSION || \"1.0.0\";\n\nexport {\n  pick,\n  isEqualWith as deepEqual,\n  cloneDeep as clone,\n  isEmpty,\n  throttle,\n  debounce,\n} from \"lodash\";\n\nconst EXPRESSION_TYPE = {\n  JSEXPRESSION: \"JSExpression\",\n  JSFUNCTION: \"JSFunction\",\n  JSSLOT: \"JSSlot\",\n  JSBLOCK: \"JSBlock\",\n  I18N: \"i18n\",\n};\n\n/**\n * check if schema passed in is a valid schema\n * @name isSchema\n * @returns boolean\n */\nexport function isSchema(schema: any): schema is IPublicTypeNodeSchema {\n  if (isEmpty(schema)) {\n    return false;\n  }\n  // Leaf and Slot should be valid\n  if (schema.componentName === \"Leaf\" || schema.componentName === \"Slot\") {\n    return true;\n  }\n  if (Array.isArray(schema)) {\n    return schema.every((item) => isSchema(item));\n  }\n  // check if props is valid\n  const isValidProps = (props: any) => {\n    if (!props) {\n      return false;\n    }\n    if (isJSExpression(props)) {\n      return true;\n    }\n    return typeof schema.props === \"object\" && !Array.isArray(props);\n  };\n  return !!(schema.componentName && isValidProps(schema.props));\n}\n\n/**\n * check if schema passed in is a container type, including : Component Block Page\n * @param schema\n * @returns boolean\n */\nexport function isFileSchema(\n  schema: IPublicTypeNodeSchema,\n): schema is IPublicTypeRootSchema {\n  if (!isSchema(schema)) {\n    return false;\n  }\n  return [\"Page\", \"Block\", \"Component\"].includes(schema.componentName);\n}\n\n/**\n * check if current page is nested within another page with same host\n * @returns boolean\n */\nexport function inSameDomain() {\n  try {\n    return (\n      window.parent !== window &&\n      window.parent.location.host === window.location.host\n    );\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * get css styled name from schema`s fileName\n * FileName -> lce-file-name\n * @returns string\n */\nexport function getFileCssName(fileName: string) {\n  if (!fileName) {\n    return;\n  }\n  const name = fileName.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n  return `lce-${name}`\n    .split(\"-\")\n    .filter((p) => !!p)\n    .join(\"-\");\n}\n\n/**\n * check if a object is type of JSSlot\n * @returns string\n */\nexport function isJSSlot(obj: any): obj is IPublicTypeJSSlot {\n  if (!obj) {\n    return false;\n  }\n  if (typeof obj !== \"object\" || Array.isArray(obj)) {\n    return false;\n  }\n\n  // Compatible with the old protocol JSBlock\n  return [EXPRESSION_TYPE.JSSLOT, EXPRESSION_TYPE.JSBLOCK].includes(obj.type);\n}\n\n/**\n * get value from an object\n * @returns string\n */\nexport function getValue(obj: any, path: string, defaultValue = {}) {\n  // array is not valid type, return default value\n  if (Array.isArray(obj)) {\n    return defaultValue;\n  }\n\n  if (isEmpty(obj) || typeof obj !== \"object\") {\n    return defaultValue;\n  }\n\n  const res = path.split(\".\").reduce((pre, cur) => {\n    return pre && pre[cur];\n  }, obj);\n  if (res === undefined) {\n    return defaultValue;\n  }\n  return res;\n}\n\n/**\n * 用于处理国际化字符串\n * @param {*} key 语料标识\n * @param {*} values 字符串模版变量\n * @param {*} locale 国际化标识，例如 zh-CN、en-US\n * @param {*} messages 国际化语言包\n */\nexport function getI18n(\n  key: string,\n  values = {},\n  locale = \"zh-CN\",\n  messages: Record<string, any> = {},\n) {\n  if (!messages || !messages[locale] || !messages[locale][key]) {\n    return \"\";\n  }\n  const formater = new IntlMessageFormat(messages[locale][key], locale);\n  return formater.format(values);\n}\n\n/**\n * 判断当前组件是否能够设置ref\n * @param {*} Comp 需要判断的组件\n */\nexport function canAcceptsRef(Comp: any) {\n  const hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n  const REACT_FORWARD_REF_TYPE = hasSymbol\n    ? Symbol.for(\"react.forward_ref\")\n    : 0xead0;\n  return (\n    Comp?.$$typeof === REACT_FORWARD_REF_TYPE ||\n    Comp?.prototype?.isReactComponent ||\n    Comp?.prototype?.setState ||\n    Comp._forwardRef\n  );\n}\n\n/**\n * transform array to a object\n * @param arr array to be transformed\n * @param key key of array item, which`s value will be used as key in result map\n * @param overwrite overwrite existing item in result or not\n * @returns object result map\n */\nexport function transformArrayToMap(arr: any[], key: string, overwrite = true) {\n  if (isEmpty(arr) || !Array.isArray(arr)) {\n    return {};\n  }\n  const res: any = {};\n  arr.forEach((item) => {\n    const curKey = item[key];\n    if (item[key] === undefined) {\n      return;\n    }\n    if (res[curKey] && !overwrite) {\n      return;\n    }\n    res[curKey] = item;\n  });\n  return res;\n}\n\n/**\n * transform string to a function\n * @param str function in string form\n * @returns funtion\n */\nexport function transformStringToFunction(str: string) {\n  if (typeof str !== \"string\") {\n    return str;\n  }\n  if (inSameDomain() && (window.parent as any).__newFunc) {\n    return (window.parent as any).__newFunc(`\"use strict\"; return ${str}`)();\n  } else {\n    return new Function(`\"use strict\"; return ${str}`)();\n  }\n}\n\n/**\n * 对象类型JSExpression，支持省略this\n * @param str expression in string form\n * @param self scope object\n * @returns funtion\n */\n\nfunction parseExpression(options: {\n  str: any;\n  self: any;\n  thisRequired?: boolean;\n  logScope?: string;\n}): any;\nfunction parseExpression(str: any, self: any, thisRequired?: boolean): any;\nfunction parseExpression(a: any, b?: any, c = false) {\n  let str;\n  let self;\n  let thisRequired;\n  let logScope;\n  if (typeof a === \"object\" && b === undefined) {\n    str = a.str;\n    self = a.self;\n    thisRequired = a.thisRequired;\n    logScope = a.logScope;\n  } else {\n    str = a;\n    self = b;\n    thisRequired = c;\n  }\n  try {\n    const contextArr = ['\"use strict\";', \"var __self = arguments[0];\"];\n    contextArr.push(\"return \");\n    let tarStr: string;\n\n    tarStr = (str.value || \"\").trim();\n\n    // NOTE: use __self replace 'this' in the original function str\n    // may be wrong in extreme case which contains '__self' already\n    tarStr = tarStr.replace(/this(\\W|$)/g, (_a: any, b: any) => `__self${b}`);\n    tarStr = contextArr.join(\"\\n\") + tarStr;\n\n    // 默认调用顶层窗口的parseObj, 保障new Function的window对象是顶层的window对象\n    if (inSameDomain() && (window.parent as any).__newFunc) {\n      return (window.parent as any).__newFunc(tarStr)(self);\n    }\n    const code = `with(${thisRequired ? \"{}\" : \"$scope || {}\"}) { ${tarStr} }`;\n    return new Function(\"$scope\", code)(self);\n  } catch (err) {\n    logger.error(\n      `${logScope || \"\"} parseExpression.error`,\n      err,\n      str,\n      self?.__self ?? self,\n    );\n    return undefined;\n  }\n}\n\nexport { parseExpression };\n\nexport function parseThisRequiredExpression(str: any, self: any) {\n  return parseExpression(str, self, true);\n}\n\n/**\n * capitalize first letter\n * @param word string to be proccessed\n * @returns string capitalized string\n */\nexport function capitalizeFirstLetter(word: string) {\n  if (!word || !isString(word) || word.length === 0) {\n    return word;\n  }\n  return word[0].toUpperCase() + word.slice(1);\n}\n\n/**\n * check str passed in is a string type of not\n * @param str obj to be checked\n * @returns boolean\n */\nexport function isString(str: any): boolean {\n  return {}.toString.call(str) === \"[object String]\";\n}\n\n/**\n * check if obj is type of variable structure\n * @param obj object to be checked\n * @returns boolean\n */\nexport function isVariable(obj: any) {\n  if (!obj || Array.isArray(obj)) {\n    return false;\n  }\n  return typeof obj === \"object\" && obj?.type === \"variable\";\n}\n\n/**\n * 将 i18n 结构，降级解释为对 i18n 接口的调用\n * @param i18nInfo object\n * @param self context\n */\nexport function parseI18n(i18nInfo: any, self: any) {\n  return parseExpression(\n    {\n      type: EXPRESSION_TYPE.JSEXPRESSION,\n      value: `this.i18n('${i18nInfo.key}')`,\n    },\n    self,\n  );\n}\n\n/**\n * for each key in targetObj, run fn with the value of the value, and the context paased in.\n * @param targetObj object that keys will be for each\n * @param fn function that process each item\n * @param context\n */\nexport function forEach(targetObj: any, fn: any, context?: any) {\n  if (\n    !targetObj ||\n    Array.isArray(targetObj) ||\n    isString(targetObj) ||\n    typeof targetObj !== \"object\"\n  ) {\n    return;\n  }\n\n  Object.keys(targetObj).forEach((key) =>\n    fn.call(context, targetObj[key], key),\n  );\n}\n\ninterface IParseOptions {\n  thisRequiredInJSE?: boolean;\n  logScope?: string;\n}\n\nexport function parseData(\n  schema: unknown,\n  self: any,\n  options: IParseOptions = {},\n): any {\n  if (isJSExpression(schema)) {\n    return parseExpression({\n      str: schema,\n      self,\n      thisRequired: options.thisRequiredInJSE,\n      logScope: options.logScope,\n    });\n  } else if (isI18nData(schema)) {\n    return parseI18n(schema, self);\n  } else if (typeof schema === \"string\") {\n    return schema.trim();\n  } else if (Array.isArray(schema)) {\n    return schema.map((item) => parseData(item, self, options));\n  } else if (typeof schema === \"function\") {\n    return schema.bind(self);\n  } else if (typeof schema === \"object\") {\n    // 对于undefined及null直接返回\n    if (!schema) {\n      return schema;\n    }\n    const res: any = {};\n    forEach(schema, (val: any, key: string) => {\n      if (key.startsWith(\"__\")) {\n        return;\n      }\n      res[key] = parseData(val, self, options);\n    });\n    return res;\n  }\n  return schema;\n}\n\n/**\n * process params for using in a url query\n * @param obj params to be processed\n * @returns string\n */\nexport function serializeParams(obj: any) {\n  let result: any = [];\n  forEach(obj, (val: any, key: any) => {\n    if (val === null || val === undefined || val === \"\") {\n      return;\n    }\n    if (typeof val === \"object\") {\n      result.push(`${key}=${encodeURIComponent(JSON.stringify(val))}`);\n    } else {\n      result.push(`${key}=${encodeURIComponent(val)}`);\n    }\n  });\n  return result.join(\"&\");\n}\n","/* eslint-disable no-prototype-builtins */\nvar g =\n  (typeof globalThis !== 'undefined' && globalThis) ||\n  (typeof self !== 'undefined' && self) ||\n  // eslint-disable-next-line no-undef\n  (typeof global !== 'undefined' && global) ||\n  {}\n\nvar support = {\n  searchParams: 'URLSearchParams' in g,\n  iterable: 'Symbol' in g && 'iterator' in Symbol,\n  blob:\n    'FileReader' in g &&\n    'Blob' in g &&\n    (function() {\n      try {\n        new Blob()\n        return true\n      } catch (e) {\n        return false\n      }\n    })(),\n  formData: 'FormData' in g,\n  arrayBuffer: 'ArrayBuffer' in g\n}\n\nfunction isDataView(obj) {\n  return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n  var viewClasses = [\n    '[object Int8Array]',\n    '[object Uint8Array]',\n    '[object Uint8ClampedArray]',\n    '[object Int16Array]',\n    '[object Uint16Array]',\n    '[object Int32Array]',\n    '[object Uint32Array]',\n    '[object Float32Array]',\n    '[object Float64Array]'\n  ]\n\n  var isArrayBufferView =\n    ArrayBuffer.isView ||\n    function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n}\n\nfunction normalizeName(name) {\n  if (typeof name !== 'string') {\n    name = String(name)\n  }\n  if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n    throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n  }\n  return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n  if (typeof value !== 'string') {\n    value = String(value)\n  }\n  return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n  var iterator = {\n    next: function() {\n      var value = items.shift()\n      return {done: value === undefined, value: value}\n    }\n  }\n\n  if (support.iterable) {\n    iterator[Symbol.iterator] = function() {\n      return iterator\n    }\n  }\n\n  return iterator\n}\n\nexport function Headers(headers) {\n  this.map = {}\n\n  if (headers instanceof Headers) {\n    headers.forEach(function(value, name) {\n      this.append(name, value)\n    }, this)\n  } else if (Array.isArray(headers)) {\n    headers.forEach(function(header) {\n      if (header.length != 2) {\n        throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n      }\n      this.append(header[0], header[1])\n    }, this)\n  } else if (headers) {\n    Object.getOwnPropertyNames(headers).forEach(function(name) {\n      this.append(name, headers[name])\n    }, this)\n  }\n}\n\nHeaders.prototype.append = function(name, value) {\n  name = normalizeName(name)\n  value = normalizeValue(value)\n  var oldValue = this.map[name]\n  this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n  delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n  name = normalizeName(name)\n  return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n  return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n  this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n  for (var name in this.map) {\n    if (this.map.hasOwnProperty(name)) {\n      callback.call(thisArg, this.map[name], name, this)\n    }\n  }\n}\n\nHeaders.prototype.keys = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push(name)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n  var items = []\n  this.forEach(function(value) {\n    items.push(value)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push([name, value])\n  })\n  return iteratorFor(items)\n}\n\nif (support.iterable) {\n  Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n  if (body._noBody) return\n  if (body.bodyUsed) {\n    return Promise.reject(new TypeError('Already read'))\n  }\n  body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n  return new Promise(function(resolve, reject) {\n    reader.onload = function() {\n      resolve(reader.result)\n    }\n    reader.onerror = function() {\n      reject(reader.error)\n    }\n  })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsArrayBuffer(blob)\n  return promise\n}\n\nfunction readBlobAsText(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type)\n  var encoding = match ? match[1] : 'utf-8'\n  reader.readAsText(blob, encoding)\n  return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n  var view = new Uint8Array(buf)\n  var chars = new Array(view.length)\n\n  for (var i = 0; i < view.length; i++) {\n    chars[i] = String.fromCharCode(view[i])\n  }\n  return chars.join('')\n}\n\nfunction bufferClone(buf) {\n  if (buf.slice) {\n    return buf.slice(0)\n  } else {\n    var view = new Uint8Array(buf.byteLength)\n    view.set(new Uint8Array(buf))\n    return view.buffer\n  }\n}\n\nfunction Body() {\n  this.bodyUsed = false\n\n  this._initBody = function(body) {\n    /*\n      fetch-mock wraps the Response object in an ES6 Proxy to\n      provide useful test harness features such as flush. However, on\n      ES5 browsers without fetch or Proxy support pollyfills must be used;\n      the proxy-pollyfill is unable to proxy an attribute unless it exists\n      on the object before the Proxy is created. This change ensures\n      Response.bodyUsed exists on the instance, while maintaining the\n      semantic of setting Request.bodyUsed in the constructor before\n      _initBody is called.\n    */\n    // eslint-disable-next-line no-self-assign\n    this.bodyUsed = this.bodyUsed\n    this._bodyInit = body\n    if (!body) {\n      this._noBody = true;\n      this._bodyText = ''\n    } else if (typeof body === 'string') {\n      this._bodyText = body\n    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n      this._bodyBlob = body\n    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n      this._bodyFormData = body\n    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n      this._bodyText = body.toString()\n    } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n      this._bodyArrayBuffer = bufferClone(body.buffer)\n      // IE 10-11 can't handle a DataView body.\n      this._bodyInit = new Blob([this._bodyArrayBuffer])\n    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n      this._bodyArrayBuffer = bufferClone(body)\n    } else {\n      this._bodyText = body = Object.prototype.toString.call(body)\n    }\n\n    if (!this.headers.get('content-type')) {\n      if (typeof body === 'string') {\n        this.headers.set('content-type', 'text/plain;charset=UTF-8')\n      } else if (this._bodyBlob && this._bodyBlob.type) {\n        this.headers.set('content-type', this._bodyBlob.type)\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n      }\n    }\n  }\n\n  if (support.blob) {\n    this.blob = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return Promise.resolve(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as blob')\n      } else {\n        return Promise.resolve(new Blob([this._bodyText]))\n      }\n    }\n  }\n\n  this.arrayBuffer = function() {\n    if (this._bodyArrayBuffer) {\n      var isConsumed = consumed(this)\n      if (isConsumed) {\n        return isConsumed\n      } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n        return Promise.resolve(\n          this._bodyArrayBuffer.buffer.slice(\n            this._bodyArrayBuffer.byteOffset,\n            this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n          )\n        )\n      } else {\n        return Promise.resolve(this._bodyArrayBuffer)\n      }\n    } else if (support.blob) {\n      return this.blob().then(readBlobAsArrayBuffer)\n    } else {\n      throw new Error('could not read as ArrayBuffer')\n    }\n  }\n\n  this.text = function() {\n    var rejected = consumed(this)\n    if (rejected) {\n      return rejected\n    }\n\n    if (this._bodyBlob) {\n      return readBlobAsText(this._bodyBlob)\n    } else if (this._bodyArrayBuffer) {\n      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n    } else if (this._bodyFormData) {\n      throw new Error('could not read FormData body as text')\n    } else {\n      return Promise.resolve(this._bodyText)\n    }\n  }\n\n  if (support.formData) {\n    this.formData = function() {\n      return this.text().then(decode)\n    }\n  }\n\n  this.json = function() {\n    return this.text().then(JSON.parse)\n  }\n\n  return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE']\n\nfunction normalizeMethod(method) {\n  var upcased = method.toUpperCase()\n  return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n  if (!(this instanceof Request)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n\n  options = options || {}\n  var body = options.body\n\n  if (input instanceof Request) {\n    if (input.bodyUsed) {\n      throw new TypeError('Already read')\n    }\n    this.url = input.url\n    this.credentials = input.credentials\n    if (!options.headers) {\n      this.headers = new Headers(input.headers)\n    }\n    this.method = input.method\n    this.mode = input.mode\n    this.signal = input.signal\n    if (!body && input._bodyInit != null) {\n      body = input._bodyInit\n      input.bodyUsed = true\n    }\n  } else {\n    this.url = String(input)\n  }\n\n  this.credentials = options.credentials || this.credentials || 'same-origin'\n  if (options.headers || !this.headers) {\n    this.headers = new Headers(options.headers)\n  }\n  this.method = normalizeMethod(options.method || this.method || 'GET')\n  this.mode = options.mode || this.mode || null\n  this.signal = options.signal || this.signal || (function () {\n    if ('AbortController' in g) {\n      var ctrl = new AbortController();\n      return ctrl.signal;\n    }\n  }());\n  this.referrer = null\n\n  if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n    throw new TypeError('Body not allowed for GET or HEAD requests')\n  }\n  this._initBody(body)\n\n  if (this.method === 'GET' || this.method === 'HEAD') {\n    if (options.cache === 'no-store' || options.cache === 'no-cache') {\n      // Search for a '_' parameter in the query string\n      var reParamSearch = /([?&])_=[^&]*/\n      if (reParamSearch.test(this.url)) {\n        // If it already exists then set the value with the current time\n        this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n      } else {\n        // Otherwise add a new '_' parameter to the end with the current time\n        var reQueryString = /\\?/\n        this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n      }\n    }\n  }\n}\n\nRequest.prototype.clone = function() {\n  return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n  var form = new FormData()\n  body\n    .trim()\n    .split('&')\n    .forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n  return form\n}\n\nfunction parseHeaders(rawHeaders) {\n  var headers = new Headers()\n  // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n  // https://tools.ietf.org/html/rfc7230#section-3.2\n  var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n  // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n  // https://github.com/github/fetch/issues/748\n  // https://github.com/zloirock/core-js/issues/751\n  preProcessedHeaders\n    .split('\\r')\n    .map(function(header) {\n      return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n    })\n    .forEach(function(line) {\n      var parts = line.split(':')\n      var key = parts.shift().trim()\n      if (key) {\n        var value = parts.join(':').trim()\n        try {\n          headers.append(key, value)\n        } catch (error) {\n          console.warn('Response ' + error.message)\n        }\n      }\n    })\n  return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n  if (!(this instanceof Response)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n  }\n  if (!options) {\n    options = {}\n  }\n\n  this.type = 'default'\n  this.status = options.status === undefined ? 200 : options.status\n  if (this.status < 200 || this.status > 599) {\n    throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n  }\n  this.ok = this.status >= 200 && this.status < 300\n  this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n  this.headers = new Headers(options.headers)\n  this.url = options.url || ''\n  this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n  return new Response(this._bodyInit, {\n    status: this.status,\n    statusText: this.statusText,\n    headers: new Headers(this.headers),\n    url: this.url\n  })\n}\n\nResponse.error = function() {\n  var response = new Response(null, {status: 200, statusText: ''})\n  response.ok = false\n  response.status = 0\n  response.type = 'error'\n  return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n  if (redirectStatuses.indexOf(status) === -1) {\n    throw new RangeError('Invalid status code')\n  }\n\n  return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = g.DOMException\ntry {\n  new DOMException()\n} catch (err) {\n  DOMException = function(message, name) {\n    this.message = message\n    this.name = name\n    var error = Error(message)\n    this.stack = error.stack\n  }\n  DOMException.prototype = Object.create(Error.prototype)\n  DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n  return new Promise(function(resolve, reject) {\n    var request = new Request(input, init)\n\n    if (request.signal && request.signal.aborted) {\n      return reject(new DOMException('Aborted', 'AbortError'))\n    }\n\n    var xhr = new XMLHttpRequest()\n\n    function abortXhr() {\n      xhr.abort()\n    }\n\n    xhr.onload = function() {\n      var options = {\n        statusText: xhr.statusText,\n        headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n      }\n      // This check if specifically for when a user fetches a file locally from the file system\n      // Only if the status is out of a normal range\n      if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n        options.status = 200;\n      } else {\n        options.status = xhr.status;\n      }\n      options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n      var body = 'response' in xhr ? xhr.response : xhr.responseText\n      setTimeout(function() {\n        resolve(new Response(body, options))\n      }, 0)\n    }\n\n    xhr.onerror = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request failed'))\n      }, 0)\n    }\n\n    xhr.ontimeout = function() {\n      setTimeout(function() {\n        reject(new TypeError('Network request timed out'))\n      }, 0)\n    }\n\n    xhr.onabort = function() {\n      setTimeout(function() {\n        reject(new DOMException('Aborted', 'AbortError'))\n      }, 0)\n    }\n\n    function fixUrl(url) {\n      try {\n        return url === '' && g.location.href ? g.location.href : url\n      } catch (e) {\n        return url\n      }\n    }\n\n    xhr.open(request.method, fixUrl(request.url), true)\n\n    if (request.credentials === 'include') {\n      xhr.withCredentials = true\n    } else if (request.credentials === 'omit') {\n      xhr.withCredentials = false\n    }\n\n    if ('responseType' in xhr) {\n      if (support.blob) {\n        xhr.responseType = 'blob'\n      } else if (\n        support.arrayBuffer\n      ) {\n        xhr.responseType = 'arraybuffer'\n      }\n    }\n\n    if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n      var names = [];\n      Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n        names.push(normalizeName(name))\n        xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n      })\n      request.headers.forEach(function(value, name) {\n        if (names.indexOf(name) === -1) {\n          xhr.setRequestHeader(name, value)\n        }\n      })\n    } else {\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value)\n      })\n    }\n\n    if (request.signal) {\n      request.signal.addEventListener('abort', abortXhr)\n\n      xhr.onreadystatechange = function() {\n        // DONE (success or failure)\n        if (xhr.readyState === 4) {\n          request.signal.removeEventListener('abort', abortXhr)\n        }\n      }\n    }\n\n    xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n  })\n}\n\nfetch.polyfill = true\n\nif (!g.fetch) {\n  g.fetch = fetch\n  g.Headers = Headers\n  g.Request = Request\n  g.Response = Response\n}\n","(function (global, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(['exports', 'module'], factory);\n  } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {\n    factory(exports, module);\n  } else {\n    var mod = {\n      exports: {}\n    };\n    factory(mod.exports, mod);\n    global.fetchJsonp = mod.exports;\n  }\n})(this, function (exports, module) {\n  'use strict';\n\n  var defaultOptions = {\n    timeout: 5000,\n    jsonpCallback: 'callback',\n    jsonpCallbackFunction: null\n  };\n\n  function generateCallbackFunction() {\n    return 'jsonp_' + Date.now() + '_' + Math.ceil(Math.random() * 100000);\n  }\n\n  function clearFunction(functionName) {\n    // IE8 throws an exception when you try to delete a property on window\n    // http://stackoverflow.com/a/1824228/751089\n    try {\n      delete window[functionName];\n    } catch (e) {\n      window[functionName] = undefined;\n    }\n  }\n\n  function removeScript(scriptId) {\n    var script = document.getElementById(scriptId);\n    if (script) {\n      document.getElementsByTagName('head')[0].removeChild(script);\n    }\n  }\n\n  function fetchJsonp(_url) {\n    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    // to avoid param reassign\n    var url = _url;\n    var timeout = options.timeout || defaultOptions.timeout;\n    var jsonpCallback = options.jsonpCallback || defaultOptions.jsonpCallback;\n\n    var timeoutId = undefined;\n\n    return new Promise(function (resolve, reject) {\n      var callbackFunction = options.jsonpCallbackFunction || generateCallbackFunction();\n      var scriptId = jsonpCallback + '_' + callbackFunction;\n\n      window[callbackFunction] = function (response) {\n        resolve({\n          ok: true,\n          // keep consistent with fetch API\n          json: function json() {\n            return Promise.resolve(response);\n          }\n        });\n\n        if (timeoutId) clearTimeout(timeoutId);\n\n        removeScript(scriptId);\n\n        clearFunction(callbackFunction);\n      };\n\n      // Check if the user set their own params, and if not add a ? to start a list of params\n      url += url.indexOf('?') === -1 ? '?' : '&';\n\n      var jsonpScript = document.createElement('script');\n      jsonpScript.setAttribute('src', '' + url + jsonpCallback + '=' + callbackFunction);\n      if (options.charset) {\n        jsonpScript.setAttribute('charset', options.charset);\n      }\n      if (options.nonce) {\n        jsonpScript.setAttribute('nonce', options.nonce);\n      }\n      if (options.referrerPolicy) {\n        jsonpScript.setAttribute('referrerPolicy', options.referrerPolicy);\n      }\n      if (options.crossorigin) {\n        jsonpScript.setAttribute('crossorigin', 'true');\n      }\n      jsonpScript.id = scriptId;\n      document.getElementsByTagName('head')[0].appendChild(jsonpScript);\n\n      timeoutId = setTimeout(function () {\n        reject(new Error('JSONP request to ' + _url + ' timed out'));\n\n        clearFunction(callbackFunction);\n        removeScript(scriptId);\n        window[callbackFunction] = function () {\n          clearFunction(callbackFunction);\n        };\n      }, timeout);\n\n      // Caught if got 404/500\n      jsonpScript.onerror = function () {\n        reject(new Error('JSONP request to ' + _url + ' failed'));\n\n        clearFunction(callbackFunction);\n        removeScript(scriptId);\n        if (timeoutId) clearTimeout(timeoutId);\n      };\n    });\n  }\n\n  // export as global function\n  /*\n  let local;\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n  local.fetchJsonp = fetchJsonp;\n  */\n\n  module.exports = fetchJsonp;\n});","/**\n * 全局实例注册表，用于管理多个 BaseRenderer 实例的跨实例通信\n */\n\n// 事件类型定义\nexport interface IInstanceEvent {\n  type: string;\n  payload?: any;\n  sourceInstanceId?: string;\n  targetInstanceId?: string;\n}\n\n// 事件监听器类型\nexport type IInstanceEventListener = (event: IInstanceEvent) => void;\n\n// 实例信息接口\nexport interface IRendererInstanceInfo {\n  id: string;\n  instance: any;\n  namespace?: string;\n  metadata?: Record<string, any>;\n  registeredAt: number;\n}\n\n/**\n * 全局渲染器实例注册表\n */\nclass RendererInstanceRegistry {\n  private instances = new Map<string, IRendererInstanceInfo>();\n  private eventListeners = new Map<string, Set<IInstanceEventListener>>();\n  private globalListeners = new Set<IInstanceEventListener>();\n\n  /**\n   * 注册实例\n   * @param instanceId 实例唯一标识\n   * @param instance 实例引用\n   * @param options 可选的元数据\n   */\n  register(\n    instanceId: string,\n    instance: any,\n    options: {\n      namespace?: string;\n      metadata?: Record<string, any>;\n    } = {},\n  ): void {\n    if (this.instances.has(instanceId)) {\n      console.warn(`实例 ${instanceId} 已存在，将被覆盖`);\n    }\n\n    const instanceInfo: IRendererInstanceInfo = {\n      id: instanceId,\n      instance,\n      namespace: options.namespace,\n      metadata: options.metadata || {},\n      registeredAt: Date.now(),\n    };\n\n    this.instances.set(instanceId, instanceInfo);\n\n    // 触发实例注册事件\n    this.emit(\"instance:registered\", {\n      instanceId,\n      instanceInfo,\n    });\n  }\n\n  /**\n   * 注销实例\n   * @param instanceId 实例标识\n   */\n  unregister(instanceId: string): void {\n    const instanceInfo = this.instances.get(instanceId);\n    if (instanceInfo) {\n      this.instances.delete(instanceId);\n\n      // 触发实例注销事件\n      this.emit(\"instance:unregistered\", {\n        instanceId,\n        instanceInfo,\n      });\n    }\n  }\n\n  /**\n   * 获取实例\n   * @param instanceId 实例标识\n   */\n  getInstance(instanceId: string): any {\n    const instanceInfo = this.instances.get(instanceId);\n    return instanceInfo?.instance;\n  }\n\n  /**\n   * 获取实例信息\n   * @param instanceId 实例标识\n   */\n  getInstanceInfo(instanceId: string): IRendererInstanceInfo | undefined {\n    return this.instances.get(instanceId);\n  }\n\n  /**\n   * 获取所有实例\n   */\n  getAllInstances(): IRendererInstanceInfo[] {\n    return Array.from(this.instances.values());\n  }\n\n  /**\n   * 根据条件查找实例\n   * @param predicate 查找条件\n   */\n  findInstances(\n    predicate: (instanceInfo: IRendererInstanceInfo) => boolean,\n  ): IRendererInstanceInfo[] {\n    return this.getAllInstances().filter(predicate);\n  }\n\n  /**\n   * 根据命名空间查找实例\n   * @param namespace 命名空间\n   */\n  findInstancesByNamespace(namespace: string): IRendererInstanceInfo[] {\n    return this.findInstances((info) => info.namespace === namespace);\n  }\n\n  /**\n   * 调用指定实例的方法\n   * @param instanceId 目标实例标识\n   * @param methodName 方法名\n   * @param args 方法参数\n   */\n  async callInstanceMethod(\n    instanceId: string,\n    methodName: string,\n    ...args: any[]\n  ): Promise<any> {\n    const instance = this.getInstance(instanceId);\n    if (!instance) {\n      throw new Error(`实例 ${instanceId} 不存在`);\n    }\n\n    if (typeof instance[methodName] !== \"function\") {\n      throw new Error(`实例 ${instanceId} 不存在方法 ${methodName}`);\n    }\n\n    try {\n      const result = await instance[methodName](...args);\n      return result;\n    } catch (error) {\n      throw error;\n    }\n  }\n\n  /**\n   * 批量调用多个实例的方法\n   * @param instanceIds 目标实例标识数组\n   * @param methodName 方法名\n   * @param args 方法参数\n   */\n  async callMultipleInstanceMethods(\n    instanceIds: string[],\n    methodName: string,\n    ...args: any[]\n  ): Promise<Record<string, any>> {\n    const results: Record<string, any> = {};\n\n    await Promise.allSettled(\n      instanceIds.map(async (instanceId) => {\n        try {\n          results[instanceId] = await this.callInstanceMethod(\n            instanceId,\n            methodName,\n            ...args,\n          );\n        } catch (error) {\n          results[instanceId] = { error: error.message };\n        }\n      }),\n    );\n\n    return results;\n  }\n\n  /**\n   * 广播调用所有实例的方法\n   * @param methodName 方法名\n   * @param args 方法参数\n   * @param filter 可选的过滤条件\n   */\n  async broadcastInstanceMethod(\n    methodName: string,\n    args: any[] = [],\n    filter?: (instanceInfo: IRendererInstanceInfo) => boolean,\n  ): Promise<Record<string, any>> {\n    let targetInstances = this.getAllInstances();\n\n    if (filter) {\n      targetInstances = targetInstances.filter(filter);\n    }\n\n    const instanceIds = targetInstances.map((info) => info.id);\n    return this.callMultipleInstanceMethods(instanceIds, methodName, ...args);\n  }\n\n  /**\n   * 添加事件监听器\n   * @param eventType 事件类型，为 '*' 时监听所有事件\n   * @param listener 监听器函数\n   */\n  on(eventType: string, listener: IInstanceEventListener): void {\n    if (eventType === \"*\") {\n      this.globalListeners.add(listener);\n    } else {\n      if (!this.eventListeners.has(eventType)) {\n        this.eventListeners.set(eventType, new Set());\n      }\n      this.eventListeners.get(eventType)!.add(listener);\n    }\n  }\n\n  /**\n   * 移除事件监听器\n   * @param eventType 事件类型\n   * @param listener 监听器函数\n   */\n  off(eventType: string, listener: IInstanceEventListener): void {\n    if (eventType === \"*\") {\n      this.globalListeners.delete(listener);\n    } else {\n      const listeners = this.eventListeners.get(eventType);\n      if (listeners) {\n        listeners.delete(listener);\n        if (listeners.size === 0) {\n          this.eventListeners.delete(eventType);\n        }\n      }\n    }\n  }\n\n  /**\n   * 触发事件\n   * @param eventType 事件类型\n   * @param payload 事件数据\n   * @param sourceInstanceId 事件源实例ID\n   * @param targetInstanceId 目标实例ID（可选，用于点对点通信）\n   */\n  emit(\n    eventType: string,\n    payload?: any,\n    sourceInstanceId?: string,\n    targetInstanceId?: string,\n  ): void {\n    const event: IInstanceEvent = {\n      type: eventType,\n      payload,\n      sourceInstanceId,\n      targetInstanceId,\n    };\n\n    // 触发全局监听器\n    this.globalListeners.forEach((listener) => {\n      try {\n        listener(event);\n      } catch (error) {\n        console.error(`[InstanceRegistry] 全局事件监听器执行失败:`, error);\n      }\n    });\n\n    // 触发特定事件监听器\n    const listeners = this.eventListeners.get(eventType);\n    if (listeners) {\n      listeners.forEach((listener) => {\n        try {\n          listener(event);\n        } catch (error) {\n          console.error(`[InstanceRegistry] 事件监听器执行失败:`, error);\n        }\n      });\n    }\n  }\n\n  /**\n   * 发送消息给指定实例\n   * @param targetInstanceId 目标实例ID\n   * @param messageType 消息类型\n   * @param payload 消息内容\n   * @param sourceInstanceId 源实例ID\n   */\n  sendMessage(\n    targetInstanceId: string,\n    messageType: string,\n    payload?: any,\n    sourceInstanceId?: string,\n  ): void {\n    const targetInstance = this.getInstance(targetInstanceId);\n    if (!targetInstance) {\n      console.warn(`[InstanceRegistry] 目标实例 ${targetInstanceId} 不存在`);\n      return;\n    }\n\n    // 如果目标实例有 onMessage 方法，直接调用\n    if (typeof targetInstance.onMessage === \"function\") {\n      try {\n        targetInstance.onMessage({\n          type: messageType,\n          payload,\n          sourceInstanceId,\n        });\n      } catch (error) {\n        console.error(`[InstanceRegistry] 发送消息失败:`, error);\n      }\n    }\n\n    // 同时触发事件\n    this.emit(\n      `message:${messageType}`,\n      payload,\n      sourceInstanceId,\n      targetInstanceId,\n    );\n  }\n\n  /**\n   * 清空所有实例和监听器\n   */\n  clear(): void {\n    this.instances.clear();\n    this.eventListeners.clear();\n    this.globalListeners.clear();\n    console.log(\"[InstanceRegistry] 已清空所有实例和监听器\");\n  }\n\n  /**\n   * 获取注册表状态信息\n   */\n  getStatus(): {\n    instanceCount: number;\n    instances: string[];\n    eventTypes: string[];\n    globalListenerCount: number;\n  } {\n    return {\n      instanceCount: this.instances.size,\n      instances: Array.from(this.instances.keys()),\n      eventTypes: Array.from(this.eventListeners.keys()),\n      globalListenerCount: this.globalListeners.size,\n    };\n  }\n}\n\n// 创建全局单例\nconst rendererInstanceRegistry = new RendererInstanceRegistry();\n\n// 在全局对象上暴露注册表（用于调试）\nif (typeof window !== \"undefined\") {\n  (window as any).__rendererInstanceRegistry = rendererInstanceRegistry;\n}\n\nexport default rendererInstanceRegistry;\nexport { RendererInstanceRegistry };\n","import { cloneEnumerableProperty } from \"@yuntoo/page-utils\";\nimport adapter from \"../adapter\";\nimport { IBaseRendererInstance, IRendererProps } from \"../types\";\n\ninterface Options {\n  baseRenderer: IBaseRendererInstance;\n  schema: any;\n}\n\nfunction patchDidCatch(Comp: any, { baseRenderer, schema }: Options) {\n  if (Comp.patchedCatch) {\n    return;\n  }\n  Comp.patchedCatch = true;\n  const { PureComponent } = adapter.getRuntime();\n  // Rax 的 getDerivedStateFromError 有 BUG，这里先用 componentDidCatch 来替代\n  // @see https://github.com/alibaba/rax/issues/2211\n  const originalDidCatch = Comp.prototype.componentDidCatch;\n  Comp.prototype.componentDidCatch = function didCatch(\n    this: any,\n    error: Error,\n    errorInfo: any,\n  ) {\n    this.setState({ engineRenderError: true, error });\n    if (originalDidCatch && typeof originalDidCatch === \"function\") {\n      originalDidCatch.call(this, error, errorInfo);\n    }\n  };\n\n  const { engine } = baseRenderer.context;\n  const originRender = Comp.prototype.render;\n  Comp.prototype.render = function () {\n    if (this.state && this.state.engineRenderError) {\n      this.state.engineRenderError = false;\n      return engine.createElement(engine.getFaultComponent(), {\n        ...this.props,\n        schema,\n        error: this.state.error,\n        componentName: this.props._componentName,\n      });\n    }\n    return originRender.call(this);\n  };\n  if (!(Comp.prototype instanceof PureComponent)) {\n    const originShouldComponentUpdate = Comp.prototype.shouldComponentUpdate;\n    Comp.prototype.shouldComponentUpdate = function (\n      nextProps: IRendererProps,\n      nextState: any,\n    ) {\n      if (nextState && nextState.engineRenderError) {\n        return true;\n      }\n      return originShouldComponentUpdate\n        ? originShouldComponentUpdate.call(this, nextProps, nextState)\n        : true;\n    };\n  }\n}\n\nconst cache = new Map<string, { Comp: any; WrapperComponent: any }>();\n\nexport function compWrapper(Comp: any, options: Options) {\n  const { createElement, Component, forwardRef } = adapter.getRuntime();\n  if (\n    Comp?.prototype?.isReactComponent || // react\n    Comp?.prototype?.setState || // rax\n    Comp?.prototype instanceof Component\n  ) {\n    patchDidCatch(Comp, options);\n    return Comp;\n  }\n\n  if (\n    cache.has(options.schema.id) &&\n    cache.get(options.schema.id)?.Comp === Comp\n  ) {\n    return cache.get(options.schema.id)?.WrapperComponent;\n  }\n\n  class Wrapper extends Component {\n    render() {\n      return createElement(Comp, { ...this.props, ref: this.props.forwardRef });\n    }\n  }\n  (Wrapper as any).displayName = Comp.displayName;\n\n  patchDidCatch(Wrapper, options);\n\n  const WrapperComponent = cloneEnumerableProperty(\n    forwardRef((props: any, ref: any) => {\n      return createElement(Wrapper, { ...props, forwardRef: ref });\n    }),\n    Comp,\n  );\n\n  cache.set(options.schema.id, { WrapperComponent, Comp });\n\n  return WrapperComponent;\n}\n","import { INode, IPublicTypePropChangeOptions } from \"@yuntoo/page-designer\";\nimport {\n  GlobalEvent,\n  IPublicTypeNodeSchema,\n  IPublicTypeEngineOptions,\n} from \"@yuntoo/page-types\";\nimport { IPublicEnumTransformStage } from \"@yuntoo/page-shared\";\nimport { isReactComponent, cloneEnumerableProperty } from \"@yuntoo/page-utils\";\nimport { debounce } from \"../utils/common\";\nimport adapter from \"../adapter\";\nimport * as types from \"../types/index\";\nimport logger from \"../utils/logger\";\n\nexport interface IComponentHocInfo {\n  schema: any;\n  baseRenderer: types.IBaseRendererInstance;\n  componentInfo: any;\n  scope: any;\n}\n\nexport interface IComponentHocProps {\n  __tag: any;\n  componentId: any;\n  _leaf: any;\n  forwardedRef?: any;\n}\n\nexport interface IComponentHocState {\n  childrenInState: boolean;\n  nodeChildren: any;\n  nodeCacheProps: any;\n\n  /** 控制是否显示隐藏 */\n  visible: boolean;\n\n  /** 控制是否渲染 */\n  condition: boolean;\n  nodeProps: any;\n}\n\ntype DesignMode = Pick<IPublicTypeEngineOptions, \"designMode\">[\"designMode\"];\n\nexport interface IComponentHoc {\n  designMode: DesignMode | DesignMode[];\n  hoc: IComponentConstruct;\n}\n\nexport type IComponentConstruct = (\n  Comp: types.IBaseRenderComponent,\n  info: IComponentHocInfo,\n) => types.IGeneralConstructor;\n\ninterface IProps {\n  _leaf: INode | undefined;\n\n  visible: boolean;\n\n  componentId: number;\n\n  children?: INode[];\n\n  __tag: number;\n\n  forwardedRef?: any;\n}\n\nenum RerenderType {\n  All = \"All\",\n  ChildChanged = \"ChildChanged\",\n  PropsChanged = \"PropsChanged\",\n  VisibleChanged = \"VisibleChanged\",\n  MinimalRenderUnit = \"MinimalRenderUnit\",\n}\n\n// 缓存 Leaf 层组件，防止重新渲染问题\nclass LeafCache {\n  /** 组件缓存 */\n  component = new Map();\n\n  /**\n   * 状态缓存，场景：属性变化后，改组件被销毁，state 为空，没有展示修改后的属性\n   */\n  state = new Map();\n\n  /**\n   * 订阅事件缓存，导致 rerender 的订阅事件\n   */\n  event = new Map();\n\n  ref = new Map();\n\n  constructor(\n    public documentId: string,\n    public device: string,\n  ) {}\n}\n\nlet cache: LeafCache;\n\n/** 部分没有渲染的 node 节点进行兜底处理 or 渲染方式没有渲染 LeafWrapper */\nfunction initRerenderEvent({ schema, __debug, container, getNode }: any) {\n  const leaf = getNode?.(schema.id);\n  if (\n    !leaf ||\n    cache.event.get(schema.id)?.clear ||\n    leaf === cache.event.get(schema.id)\n  ) {\n    return;\n  }\n  cache.event\n    .get(schema.id)\n    ?.dispose.forEach((disposeFn: any) => disposeFn && disposeFn());\n  const debounceRerender = debounce(() => {\n    container.rerender();\n  }, 20);\n  cache.event.set(schema.id, {\n    clear: false,\n    leaf,\n    dispose: [\n      leaf?.onPropChange?.(() => {\n        if (!container.autoRepaintNode) {\n          return;\n        }\n        __debug(\n          `${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onPropsChange make rerender`,\n        );\n        debounceRerender();\n      }),\n      leaf?.onChildrenChange?.(() => {\n        if (!container.autoRepaintNode) {\n          return;\n        }\n        __debug(\n          `${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onChildrenChange make rerender`,\n        );\n        debounceRerender();\n      }) as Function,\n      leaf?.onVisibleChange?.(() => {\n        if (!container.autoRepaintNode) {\n          return;\n        }\n        __debug(\n          `${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onVisibleChange make rerender`,\n        );\n        debounceRerender();\n      }),\n    ],\n  });\n}\n\n/** 渲染的 node 节点全局注册事件清除 */\nfunction clearRerenderEvent(id: string): void {\n  if (cache.event.get(id)?.clear) {\n    return;\n  }\n  cache.event\n    .get(id)\n    ?.dispose?.forEach((disposeFn: any) => disposeFn && disposeFn());\n  cache.event.set(id, {\n    clear: true,\n    dispose: [],\n  });\n}\n\n// 给每个组件包裹一个 HOC Leaf，支持组件内部属性变化，自响应渲染\nexport function leafWrapper(\n  Comp: types.IBaseRenderComponent,\n  { schema, baseRenderer, componentInfo, scope }: IComponentHocInfo,\n) {\n  const {\n    __debug,\n    __getComponentProps: getProps,\n    __getSchemaChildrenVirtualDom: getChildren,\n    __parseData,\n  } = baseRenderer;\n  const { engine } = baseRenderer.context;\n  const host = baseRenderer.props?.__host;\n  const curDocumentId = baseRenderer.props?.documentId ?? \"\";\n  const curDevice = baseRenderer.props?.device ?? \"\";\n  const getNode = baseRenderer.props?.getNode;\n  const container = baseRenderer.props?.__container;\n  const setSchemaChangedSymbol = baseRenderer.props?.setSchemaChangedSymbol;\n  const editor = host?.designer?.editor;\n  const runtime = adapter.getRuntime();\n  const { forwardRef, createElement } = runtime;\n  const Component = runtime.Component as types.IGeneralConstructor<\n    IComponentHocProps,\n    IComponentHocState\n  >;\n\n  const componentCacheId = schema.id;\n\n  if (\n    !cache ||\n    (curDocumentId && curDocumentId !== cache.documentId) ||\n    (curDevice && curDevice !== cache.device)\n  ) {\n    cache?.event.forEach((event) => {\n      event.dispose?.forEach((disposeFn: any) => disposeFn && disposeFn());\n    });\n    cache = new LeafCache(curDocumentId, curDevice);\n  }\n\n  if (!isReactComponent(Comp)) {\n    logger.error(`${schema.componentName} component may be has errors: `, Comp);\n  }\n\n  initRerenderEvent({\n    schema,\n    __debug,\n    container,\n    getNode,\n  });\n\n  if (\n    curDocumentId &&\n    cache.component.has(componentCacheId) &&\n    cache.component.get(componentCacheId).Comp === Comp\n  ) {\n    return cache.component.get(componentCacheId).LeafWrapper;\n  }\n\n  class LeafHoc extends Component {\n    recordInfo: {\n      startTime?: number | null;\n      type?: string;\n      node?: INode;\n    } = {};\n\n    private curEventLeaf: INode | undefined;\n\n    static displayName = schema.componentName;\n\n    disposeFunctions: Array<(() => void) | Function> = [];\n\n    __component_tag = \"leafWrapper\";\n\n    renderUnitInfo: {\n      minimalUnitId?: string;\n      minimalUnitName?: string;\n      singleRender?: boolean;\n    };\n\n    // 最小渲染单元做防抖处理\n    makeUnitRenderDebounced = debounce(() => {\n      this.beforeRender(RerenderType.MinimalRenderUnit);\n      const schema = this.leaf?.export?.(IPublicEnumTransformStage.Render);\n      if (!schema) {\n        return;\n      }\n      const nextProps = getProps(schema, scope, Comp, componentInfo);\n      const children = getChildren(schema, scope, Comp);\n      const nextState = {\n        nodeProps: nextProps,\n        nodeChildren: children,\n        childrenInState: true,\n      };\n      if (\"children\" in nextProps) {\n        nextState.nodeChildren = nextProps.children;\n      }\n\n      __debug(\n        `${this.leaf?.componentName}(${this.props.componentId}) MinimalRenderUnit Render!`,\n      );\n      this.setState(nextState);\n    }, 20);\n\n    constructor(props: IProps, context: any) {\n      super(props, context);\n      // 监听以下事件，当变化时更新自己\n      __debug(\n        `${schema.componentName}[${this.props.componentId}] leaf render in SimulatorRendererView`,\n      );\n      clearRerenderEvent(componentCacheId);\n      this.curEventLeaf = this.leaf;\n\n      cache.ref.set(componentCacheId, {\n        makeUnitRender: this.makeUnitRender,\n      });\n\n      let cacheState = cache.state.get(componentCacheId);\n      if (!cacheState || cacheState.__tag !== props.__tag) {\n        cacheState = this.getDefaultState(props);\n      }\n\n      this.state = cacheState;\n    }\n\n    recordTime = () => {\n      if (!this.recordInfo.startTime) {\n        return;\n      }\n      const endTime = Date.now();\n      const nodeCount = host?.designer?.[\"currentDocument\"]?.getNodeCount?.();\n      const componentName =\n        this.recordInfo.node?.componentName ||\n        this.leaf?.componentName ||\n        \"UnknownComponent\";\n      editor?.eventBus.emit(GlobalEvent.Node.Rerender, {\n        componentName,\n        time: endTime - this.recordInfo.startTime,\n        type: this.recordInfo.type,\n        nodeCount,\n      });\n      this.recordInfo.startTime = null;\n    };\n\n    makeUnitRender = () => {\n      this.makeUnitRenderDebounced();\n    };\n\n    get autoRepaintNode() {\n      return container?.autoRepaintNode;\n    }\n\n    componentDidUpdate() {\n      this.recordTime();\n    }\n\n    componentDidMount() {\n      const _leaf = this.leaf;\n      this.initOnPropsChangeEvent(_leaf);\n      this.initOnChildrenChangeEvent(_leaf);\n      this.initOnVisibleChangeEvent(_leaf);\n      this.recordTime();\n    }\n\n    getDefaultState(nextProps: any) {\n      const { hidden = false, condition = true } =\n        nextProps.__inner__ ||\n        this.leaf?.export?.(IPublicEnumTransformStage.Render) ||\n        {};\n      return {\n        nodeChildren: null,\n        childrenInState: false,\n        visible: !hidden,\n        condition: __parseData?.(condition, scope),\n        nodeCacheProps: {},\n        nodeProps: {},\n      };\n    }\n\n    setState(state: any) {\n      cache.state.set(componentCacheId, {\n        ...this.state,\n        ...state,\n        __tag: this.props.__tag,\n      });\n      super.setState(state);\n    }\n\n    /** 由于内部属性变化，在触发渲染前，会执行该函数 */\n    beforeRender(type: string, node?: INode): void {\n      this.recordInfo.startTime = Date.now();\n      this.recordInfo.type = type;\n      this.recordInfo.node = node;\n      setSchemaChangedSymbol?.(true);\n    }\n\n    judgeMiniUnitRender() {\n      if (!this.renderUnitInfo) {\n        this.getRenderUnitInfo();\n      }\n\n      const renderUnitInfo = this.renderUnitInfo || {\n        singleRender: true,\n      };\n\n      if (renderUnitInfo.singleRender) {\n        return;\n      }\n\n      const ref = cache.ref.get(renderUnitInfo.minimalUnitId);\n\n      if (!ref) {\n        __debug(\"Cant find minimalRenderUnit ref! This make rerender!\");\n        container?.rerender();\n        return;\n      }\n      __debug(\n        `${this.leaf?.componentName}(${this.props.componentId}) need render, make its minimalRenderUnit ${renderUnitInfo.minimalUnitName}(${renderUnitInfo.minimalUnitId})`,\n      );\n      ref.makeUnitRender();\n    }\n\n    getRenderUnitInfo(leaf = this.leaf) {\n      // leaf 在低代码组件中存在 mock 的情况，退出最小渲染单元判断\n      if (!leaf || typeof leaf.isRoot !== \"function\") {\n        return;\n      }\n\n      if (leaf.isRootNode) {\n        this.renderUnitInfo = {\n          singleRender: true,\n          ...(this.renderUnitInfo || {}),\n        };\n      }\n      if (leaf.componentMeta.isMinimalRenderUnit) {\n        this.renderUnitInfo = {\n          minimalUnitId: leaf.id,\n          minimalUnitName: leaf.componentName,\n          singleRender: false,\n        };\n      }\n      if (leaf.hasLoop()) {\n        // 含有循环配置的元素，父元素是最小渲染单元\n        this.renderUnitInfo = {\n          minimalUnitId: leaf?.parent?.id,\n          minimalUnitName: leaf?.parent?.componentName,\n          singleRender: false,\n        };\n      }\n      if (leaf.parent) {\n        this.getRenderUnitInfo(leaf.parent);\n      }\n    }\n\n    componentWillReceiveProps(nextProps: any) {\n      let { componentId } = nextProps;\n      if (nextProps.__tag === this.props.__tag) {\n        return null;\n      }\n\n      const _leaf = getNode?.(componentId);\n      if (_leaf && this.curEventLeaf && _leaf !== this.curEventLeaf) {\n        this.disposeFunctions.forEach((fn) => fn());\n        this.disposeFunctions = [];\n        this.initOnChildrenChangeEvent(_leaf);\n        this.initOnPropsChangeEvent(_leaf);\n        this.initOnVisibleChangeEvent(_leaf);\n        this.curEventLeaf = _leaf;\n      }\n\n      const { visible, ...resetState } = this.getDefaultState(nextProps);\n      this.setState(resetState);\n    }\n\n    /** 监听参数变化 */\n    initOnPropsChangeEvent(leaf = this.leaf): void {\n      const handlePropsChange = debounce(\n        (propChangeInfo: IPublicTypePropChangeOptions) => {\n          const { key, newValue = null } = propChangeInfo;\n          const node = leaf;\n\n          if (key === \"___condition___\") {\n            const { condition = true } =\n              this.leaf?.export(IPublicEnumTransformStage.Render) || {};\n            const conditionValue = __parseData?.(condition, scope);\n            __debug(\n              `key is ___condition___, change condition value to [${condition}]`,\n            );\n            // 条件表达式改变\n            this.setState({\n              condition: conditionValue,\n            });\n            return;\n          }\n\n          // 如果循坏条件变化，从根节点重新渲染\n          // 目前多层循坏无法判断需要从哪一层开始渲染，故先粗暴解决\n          if (key === \"___loop___\") {\n            __debug(\"key is ___loop___, render a page!\");\n            container?.rerender();\n            // 由于 scope 变化，需要清空缓存，使用新的 scope\n            cache.component.delete(componentCacheId);\n            return;\n          }\n          this.beforeRender(RerenderType.PropsChanged);\n          const { state } = this;\n          const { nodeCacheProps } = state;\n          const nodeProps = getProps(\n            node?.export?.(\n              IPublicEnumTransformStage.Render,\n            ) as IPublicTypeNodeSchema,\n            scope,\n            Comp,\n            componentInfo,\n          );\n          if (key && !(key in nodeProps) && key in this.props) {\n            // 当 key 在 this.props 中时，且不存在在计算值中，需要用 newValue 覆盖掉 this.props 的取值\n            nodeCacheProps[key] = newValue;\n          }\n          __debug(\n            `${leaf?.componentName}[${this.props.componentId}] component trigger onPropsChange!`,\n            nodeProps,\n            nodeCacheProps,\n            key,\n            newValue,\n          );\n          this.setState(\n            \"children\" in nodeProps\n              ? {\n                  nodeChildren: nodeProps.children,\n                  nodeProps,\n                  childrenInState: true,\n                  nodeCacheProps,\n                }\n              : {\n                  nodeProps,\n                  nodeCacheProps,\n                },\n          );\n\n          this.judgeMiniUnitRender();\n        },\n      );\n      const dispose = leaf?.onPropChange?.(\n        (propChangeInfo: IPublicTypePropChangeOptions) => {\n          if (!this.autoRepaintNode) {\n            return;\n          }\n          handlePropsChange(propChangeInfo);\n        },\n      );\n\n      dispose && this.disposeFunctions.push(dispose);\n    }\n\n    /**\n     * 监听显隐变化\n     */\n    initOnVisibleChangeEvent(leaf = this.leaf) {\n      const dispose = leaf?.onVisibleChange?.((flag: boolean) => {\n        if (!this.autoRepaintNode) {\n          return;\n        }\n        if (this.state.visible === flag) {\n          return;\n        }\n\n        __debug(\n          `${leaf?.componentName}[${this.props.componentId}] component trigger onVisibleChange(${flag}) event`,\n        );\n        this.beforeRender(RerenderType.VisibleChanged);\n        this.setState({\n          visible: flag,\n        });\n        this.judgeMiniUnitRender();\n      });\n\n      dispose && this.disposeFunctions.push(dispose);\n    }\n\n    /**\n     * 监听子元素变化（拖拽，删除...）\n     */\n    initOnChildrenChangeEvent(leaf = this.leaf) {\n      const dispose = leaf?.onChildrenChange?.((param): void => {\n        if (!this.autoRepaintNode) {\n          return;\n        }\n        const { type, node } = param || {};\n        this.beforeRender(`${RerenderType.ChildChanged}-${type}`, node);\n        // TODO: 缓存同级其他元素的 children。\n        // 缓存二级 children Next 查询筛选组件有问题\n        // 缓存一级 children Next Tab 组件有问题\n        const nextChild = getChildren(\n          leaf?.export?.(IPublicEnumTransformStage.Render) as types.ISchema,\n          scope,\n          Comp,\n        );\n        __debug(\n          `${schema.componentName}[${this.props.componentId}] component trigger onChildrenChange event`,\n          nextChild,\n        );\n        this.setState({\n          nodeChildren: nextChild,\n          childrenInState: true,\n        });\n        this.judgeMiniUnitRender();\n      });\n      dispose && this.disposeFunctions.push(dispose);\n    }\n\n    componentWillUnmount() {\n      this.disposeFunctions.forEach((fn) => fn());\n    }\n\n    get hasChildren(): boolean {\n      if (!this.state.childrenInState) {\n        return \"children\" in this.props;\n      }\n\n      return true;\n    }\n\n    get children(): any {\n      if (this.state.childrenInState) {\n        return this.state.nodeChildren;\n      }\n      if (this.props.children && !Array.isArray(this.props.children)) {\n        return [this.props.children];\n      }\n      if (this.props.children && this.props.children.length) {\n        return this.props.children;\n      }\n      return this.props.children;\n    }\n\n    get leaf(): INode | undefined {\n      if (this.props._leaf?.isMock) {\n        // 低代码组件作为一个整体更新，其内部的组件不需要监听相关事件\n        return undefined;\n      }\n\n      return getNode?.(componentCacheId);\n    }\n\n    render() {\n      if (!this.state.visible || !this.state.condition) {\n        return null;\n      }\n\n      const { forwardedRef, ...rest } = this.props;\n\n      const compProps = {\n        ...rest,\n        ...(this.state.nodeCacheProps || {}),\n        ...(this.state.nodeProps || {}),\n        children: [],\n        __id: this.props.componentId,\n        ref: forwardedRef,\n      };\n\n      delete compProps.__inner__;\n\n      if (this.hasChildren) {\n        return engine.createElement(Comp, compProps, this.children);\n      }\n\n      return engine.createElement(Comp, compProps);\n    }\n  }\n\n  let LeafWrapper = forwardRef((props: any, ref: any) => {\n    return createElement(LeafHoc, {\n      ...props,\n      forwardedRef: ref,\n    });\n  });\n\n  LeafWrapper = cloneEnumerableProperty(LeafWrapper, Comp);\n\n  LeafWrapper.displayName = (Comp as any).displayName;\n\n  cache.component.set(componentCacheId, {\n    LeafWrapper,\n    Comp,\n  });\n\n  return LeafWrapper;\n}\n","import { IPublicTypeJSExpression } from \"@yuntoo/page-types\";\nimport { isJSExpression } from \"@yuntoo/page-utils\";\n\n// 1.渲染模式下，loop 是数组，则按照数组长度渲染组件\n// 2.设计模式下，loop 需要长度大于 0，按照循环模式渲染，防止无法设计的情况\nexport default function isUseLoop(\n  loop: null | any[] | IPublicTypeJSExpression,\n  isDesignMode: boolean,\n): boolean {\n  if (isJSExpression(loop)) {\n    return true;\n  }\n\n  if (!isDesignMode) {\n    return true;\n  }\n\n  if (!Array.isArray(loop)) {\n    return false;\n  }\n\n  return loop.length > 0;\n}\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","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 { isPlainObject, isArray, uniq } from \"lodash\";\nimport { executeFunction } from \"./utils\";\n\n// 获取业务组件列表\nexport function getBizComponentNameList() {\n  let result = [];\n  const components = window.YUNTOO_ANTD_LOWCODE?.components;\n  if (isArray(components)) {\n    result = components.map((comp) => comp.componentName);\n  }\n  return result;\n}\n\nfunction condition(prop, type, primaryKey) {\n  return prop?.parent?.parent?.getPropValue?.(primaryKey) === type;\n}\n\n/**\n * 处理原型列表中的条件函数\n * @param {Array} prototypeList - 原型配置项列表，默认为空数组\n * @param {string} componentName - 组件名称\n * @param {string} primaryKey - 主键标识\n * @returns {Array} 处理后的原型列表\n */\nexport function handlePrototypeCondition(\n  prototypeList = [],\n  componentName,\n  primaryKey,\n) {\n  // 检查原型列表是否有内容\n  if (prototypeList?.length > 0) {\n    // 遍历并处理列表中的每一项\n    return prototypeList.map((item) => {\n      let newItem = item;\n      // 如果当前项是普通对象，创建副本并添加组件类型标记\n      if (isPlainObject(item)) {\n        newItem = { ...item };\n        newItem.__optType = componentName;\n      }\n\n      // 处理条件函数\n      if (!newItem?.condition) {\n        // 如果项目没有条件函数，添加一个默认的条件函数\n        newItem.condition = function (prop) {\n          return condition(prop, componentName, primaryKey);\n        };\n      } else {\n        // 如果项目已有条件函数，创建代理包装原有函数\n        // 确保在执行原条件函数前先通过公共条件检查\n        const wrapCondition = new Proxy(newItem.condition, {\n          apply: (target, object, args) => {\n            return (\n              condition(args[0], componentName, primaryKey) && target(...args)\n            );\n          },\n        });\n        newItem.condition = wrapCondition;\n      }\n      return newItem;\n    });\n  }\n  // 如果原型列表为空，直接返回\n  return prototypeList;\n}\n\nexport function getItem(\n  componentMap,\n  position,\n  componentName,\n  propKey,\n  extraQueryParams,\n) {\n  let result;\n  if (componentName) {\n    let item = componentMap[componentName];\n    if (typeof item === \"function\") {\n      item = executeFunction(item, { position });\n    }\n    let flag = true;\n    if (!(item && item.position && item.position.includes(position))) {\n      flag = false;\n    }\n    if (isPlainObject(extraQueryParams)) {\n      for (const key in extraQueryParams) {\n        if (key && Array.isArray(item?.[key])) {\n          if (!item[key].includes(extraQueryParams[key])) {\n            flag = false;\n          }\n        }\n      }\n    }\n    if (flag) {\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\nexport function getItemListByPosition(config) {\n  const { position, componentMap, extraQueryParams } = config;\n  const result = [];\n  const defaultList = Object.keys(componentMap);\n  const bizComponentNameList = getBizComponentNameList();\n  const allComponentList = uniq([...defaultList, ...bizComponentNameList]);\n  allComponentList.forEach((name) => {\n    const component = getItem(\n      componentMap,\n      position,\n      name,\n      null,\n      extraQueryParams,\n    );\n    if (component) {\n      const { bizInfo = [] } = component;\n      if (bizInfo.length > 0) {\n        bizInfo.forEach((item) => {\n          const { label, value } = item;\n          const existGroup = result.find((item2) => item2.value === value);\n          if (existGroup) {\n            existGroup?.children.push(component);\n          } else {\n            result.push({\n              title: label,\n              value,\n              children: [component],\n            });\n          }\n        });\n        return;\n      }\n      result.push(component);\n    }\n  });\n  return result;\n}\n","export function getSelectDialogSnippet(config = {}) {\n  return {\n    title: \"关联弹窗\",\n    name: \"_bindDialog\",\n    setter(prop) {\n      const options: { label: string; value: string }[] = [];\n      prop?.getNode?.()?.document?.nodesMap?.forEach((item) => {\n        if (\n          item.componentName === \"YtModal\" ||\n          item.componentName === \"YtDrawer\"\n        ) {\n          const id = item.id || \"\";\n          // 二次确认\n          const dialogNode = prop.getNode?.()?.document?.nodesMap?.get(id);\n          if (dialogNode) {\n            const title = getDialogTitle(dialogNode);\n            options.push({\n              label: title,\n              value: dialogNode?.getPropValue?.(\"_uniqueId\"),\n            });\n          }\n        }\n      });\n\n      return {\n        componentName: \"SelectSetter\",\n        props: {\n          options: [...options],\n          selectProps: {\n            hasClear: true,\n            autoWidth: true,\n          },\n        },\n      };\n    },\n    ...config,\n  };\n}\n\nconst getDialogTitle = (node: any) => {\n  const { propsData, componentName } = node || {};\n\n  const { title, titleDescription } = propsData || {};\n  if (![\"YtModal\", \"YtDrawer\"].includes(componentName)) {\n    return title;\n  }\n\n  let dialogTitle = componentName === \"YtModal\" ? \"对话框_\" : \"抽屉_\";\n  if (title) {\n    dialogTitle += title;\n  }\n  if (titleDescription) {\n    dialogTitle += ` (${titleDescription})`;\n  }\n\n  return dialogTitle;\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","import { getSelectDialogSnippet } from \"../../_setter-snippet/dialog\";\n\nexport const prototypeConfig = {\n  title: \"打开弹窗\",\n  getPrototypeList: (position) => {\n    const result = [getSelectDialogSnippet()];\n    return result;\n  },\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","import { getSelectDialogSnippet } from \"../../_setter-snippet/dialog\";\n\nexport const prototypeConfig = {\n  title: \"关闭弹窗\",\n  getPrototypeList: (position) => {\n    const result = [getSelectDialogSnippet()];\n    return result;\n  },\n};\n","import React, { useState, useEffect, Component } from \"react\";\n// setter使用@alifd/next，和编辑器保持一致\nimport { Input, Icon as NextIcon, Radio, Balloon, Search } from \"@alifd/next\";\nimport { get } from \"lodash\";\nimport \"./style.less\";\n\ntype IconGroup = \"outlined\" | \"filled\" | \"two-tone\" | \"iconfont\";\nconst IconGroupNameMap: Record<IconGroup, string> = {\n  outlined: \"线框风格\",\n  filled: \"实底风格\",\n  \"two-tone\": \"双色风格\",\n  iconfont: \"Iconfont\",\n};\n\nfunction getIconfontIconList() {\n  const iframe = document.querySelector<HTMLIFrameElement>(\n    \"iframe.lc-simulator-content-frame\",\n  )!;\n  const antdIcons = get(iframe, \"contentWindow.icons\", {}) as Record<\n    string,\n    any\n  >;\n  // iconfont的js会在页面中添加svg元素\n  const symbols = Array.prototype.slice.call(\n    iframe.contentDocument!.querySelectorAll(\n      'svg[style=\"position: absolute; width: 0px; height: 0px; overflow: hidden;\"][aria-hidden=\"true\"] > symbol',\n    ),\n  );\n\n  const Icon = antdIcons.createFromIconfontCN();\n\n  return symbols.map((symbol) => {\n    const { id } = symbol;\n    return {\n      name: id,\n      group: \"iconfont\",\n      icon: (props: any) => (\n        <span role=\"img\" className=\"anticon\">\n          <svg\n            viewBox=\"64 64 896 896\"\n            width=\"1em\"\n            height=\"1em\"\n            fill=\"currentColor\"\n            dangerouslySetInnerHTML={{ __html: symbol.innerHTML }}\n          />\n        </span>\n      ),\n    };\n  });\n}\n\nfunction getAntdIconList() {\n  const iframe = document.querySelector<HTMLIFrameElement>(\n    \"iframe.lc-simulator-content-frame\",\n  );\n\n  const icons: Record<string, any> = {};\n\n  // document.querySelectorAll('svg[style=\"position: absolute; width: 0px; height: 0px; overflow: hidden;\"][aria-hidden=\"true\"]')\n  const antdIcons = get(iframe, \"contentWindow.icons\", {}) as Record<\n    string,\n    any\n  >;\n\n  return Object.keys(antdIcons)\n    .map((key) => {\n      const item = (antdIcons as any)[key];\n\n      if (typeof item !== \"object\") {\n        return null;\n      }\n\n      const name = item?.displayName ?? item?.render?.displayName ?? key;\n      let group: IconGroup = \"outlined\";\n\n      const lowercaseName = name.toLowerCase();\n\n      if (/outlined$/.test(lowercaseName)) {\n        group = \"outlined\";\n      } else if (/filled$/.test(lowercaseName)) {\n        group = \"filled\";\n      } else if (/twotone$/.test(lowercaseName)) {\n        group = \"two-tone\";\n      } else {\n        return null;\n      }\n\n      return {\n        name,\n        group,\n        icon: item,\n      };\n    })\n    .filter(Boolean);\n}\n\nfunction getIconList() {\n  const iconfontIconList = getIconfontIconList();\n  const antdIconList = getAntdIconList();\n\n  return [...antdIconList, ...iconfontIconList];\n}\n\nconst Icon = (props: any) => {\n  const { type, icons = {}, ...rest } = props;\n  const Comp = icons[type];\n  if (!Comp) return null;\n  return <Comp {...rest} />;\n};\n\ninterface AntdIconSetterProps {\n  value: string;\n  type: string;\n  defaultValue: string;\n  placeholder: string;\n  hasClear: boolean;\n  onChange: (icon: string | object) => undefined;\n  icons: string[];\n}\n\nconst Tooltip = Balloon.Tooltip;\n\nconst AntdIconSetter = (props: AntdIconSetterProps) => {\n  const [search, setSearch] = useState(\"\");\n  const [icons, setIcons] = useState<Record<string, any>>({});\n  const [groups, setGroups] = useState<{ group: IconGroup; list: any[] }[]>([]);\n  const [selectedGroup, setSelectedGroup] = useState<IconGroup>(\"outlined\");\n  const [firstLoad, setFirstLoad] = useState(true);\n  const [list, setList] = useState<any[]>([]);\n\n  const { value, defaultValue, type, onChange, placeholder, hasClear } = props;\n\n  const _value =\n    typeof value === \"object\" ? (value as any)?.props?.type : value;\n  if (firstLoad && defaultValue && typeof value === \"undefined\") {\n    onChange(defaultValue);\n    setFirstLoad(false);\n  }\n\n  const handleChange = (icon: string) => {\n    if (type === \"string\") {\n      onChange(icon);\n    } else if (type === \"node\") {\n      onChange({\n        componentName: \"Icon\",\n        props: {\n          type: icon,\n        },\n      });\n    }\n  };\n\n  useEffect(() => {\n    const iconList = getIconList();\n\n    const groups: { group: IconGroup; list: any[] }[] = [];\n    const icons: any = {};\n\n    iconList.forEach((item) => {\n      const { group, name, icon } = item!;\n      if (groups.every((item) => item.group !== group)) {\n        groups.push({ group: group as IconGroup, list: [] });\n      }\n      const target = groups.find((item) => item.group === group)!;\n      target.list.push(item);\n      icons[item!.name] = item?.icon;\n    });\n\n    setIcons(icons);\n    setGroups(groups);\n    setSelectedGroup(groups[0]?.group);\n  }, []);\n\n  useEffect(() => {\n    const currentGroup = groups.find((item) => item.group === selectedGroup);\n    setList(\n      (currentGroup?.list ?? []).filter((item) => {\n        return search\n          ? item.name.toLowerCase().indexOf(search.toLowerCase()) > -1\n          : true;\n      }),\n    );\n  }, [selectedGroup, search, groups]);\n\n  const currentIcon = (\n    <Icon type={_value} icons={icons} style={{ fontSize: 16 }} />\n  );\n  const clearIcon = hasClear && (\n    <NextIcon\n      size=\"xs\"\n      id=\"icon-clear\"\n      type=\"delete-filling\"\n      onClick={(e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        handleChange(\"\");\n      }}\n    />\n  );\n\n  const triggerNode = (\n    <div>\n      <Input\n        placeholder={placeholder}\n        addonTextBefore={currentIcon}\n        onChange={handleChange}\n        value={_value}\n        defaultValue={defaultValue}\n        readOnly\n        addonTextAfter={clearIcon}\n      />\n    </div>\n  );\n\n  return (\n    <div className=\"lc-antd-icon-setter\">\n      <Balloon\n        className=\"lc-antd-icon-setter-balloon\"\n        v2\n        followTrigger\n        trigger={triggerNode}\n        triggerType=\"click\"\n        closable={false}\n        // alignEdge\n        // popupContainer={document.querySelector('body')}\n        align=\"b\"\n        offset={[-22, 0]}\n        style={{ width: 300 }}\n      >\n        <div className=\"lc-antd-icon-setter-header\">\n          <Radio.Group\n            className=\"lc-antd-icon-setter-header-style\"\n            shape=\"button\"\n            value={selectedGroup}\n            onChange={(value) => setSelectedGroup(value as any)}\n          >\n            {groups.map((item) => (\n              <Radio key={item.group} value={item.group}>\n                {IconGroupNameMap[item.group]}\n              </Radio>\n            ))}\n          </Radio.Group>\n          <Search\n            className=\"lc-antd-icon-setter-header-search\"\n            size=\"medium\"\n            shape=\"simple\"\n            onChange={setSearch}\n          />\n        </div>\n        <div className=\"lc-antd-icon-setter-content\">\n          <ul className=\"lc-antd-icon-setter-list\">\n            {list.map((item) => (\n              <li\n                key={item.name}\n                className=\"lc-antd-icon-setter-list-item\"\n                onClick={() => handleChange(item.name)}\n              >\n                <Tooltip\n                  v2\n                  trigger={<Icon type={item.name} icons={icons} />}\n                  popupStyle={{ backgroundColor: \"#fff\" }}\n                >\n                  {item.name}\n                </Tooltip>\n              </li>\n            ))}\n          </ul>\n        </div>\n      </Balloon>\n    </div>\n  );\n};\n\nAntdIconSetter.defaultProps = {\n  value: undefined,\n  type: \"string\",\n  defaultValue: \"\",\n  hasClear: false,\n  placeholder: \"请点击选择 Icon\",\n  onChange: () => undefined,\n};\n\n// 因为下面这个问题，setter必须使用class组件\n// http://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine/issues/109046\nexport default class extends Component<AntdIconSetterProps> {\n  render() {\n    return <AntdIconSetter {...this.props} />;\n  }\n}\n","import {\n  ButtonPosition,\n  ALL_BUTTON_POSITION_LIST,\n} from \"../_position/button-position\";\nimport { AntdIconSetter } from \"../_setters\";\n\nconst type = {\n  name: \"type\",\n  title: \"按钮类型\",\n  display: \"inline\",\n  position: ALL_BUTTON_POSITION_LIST,\n  setter: {\n    componentName: \"MixedSetter\",\n    props: {\n      setters: [\n        {\n          title: \"选择\",\n          componentName: \"SelectSetter\",\n          props: {\n            options: [\n              {\n                title: \"次按钮\",\n                value: \"default\",\n              },\n              {\n                title: \"主按钮\",\n                value: \"primary\",\n              },\n              {\n                title: \"文本按钮\",\n                value: \"text\",\n              },\n            ],\n          },\n        },\n        {\n          title: \"JS代码\",\n          componentName: \"ActionSetter\",\n          props: {\n            supportTypes: [\"page\"],\n            defaultCode:\n              \"\\nfunction button_type(arg, state){\\n  // primary: 主按钮；secondary: 次按钮；normal: 普通按钮\\n  // return 'primary';\\n}\\n\",\n            defaultActionName: \"button_type\",\n          },\n        },\n      ],\n    },\n  },\n};\n\nconst size = {\n  name: \"size\",\n  title: \"按钮尺寸\",\n  display: \"inline\",\n  position: ALL_BUTTON_POSITION_LIST,\n  setter: {\n    componentName: \"RadioGroupSetter\",\n    props: {\n      options: [\n        { title: \"大\", value: \"large\" },\n        { title: \"中\", value: \"medium\" },\n        { title: \"小\", value: \"small\" },\n      ],\n    },\n  },\n};\n\nconst hidden = {\n  name: \"hidden\",\n  title: \"隐藏\",\n  display: \"inline\",\n  setter: \"BoolSetter\",\n};\n\nconst icon = {\n  name: \"icon\",\n  title: \"按钮图标\",\n  position: ALL_BUTTON_POSITION_LIST,\n  display: \"inline\",\n  setter: {\n    componentName: \"MixedSetter\",\n    props: {\n      setters: [\n        {\n          title: \"选择图标\",\n          componentName: AntdIconSetter,\n        },\n      ],\n    },\n  },\n};\n\nconst allStyleMap = {\n  type,\n  size,\n  hidden,\n  icon,\n};\n\n// 注册样式\nexport function registerStyle(plugin) {\n  const { name } = plugin || {};\n  if (name) {\n    allStyleMap[name] = plugin;\n  }\n}\n\n// 获取样式列表\nexport function getStyleListByPosition(position) {\n  const defaultStyleList = Object.keys(allStyleMap);\n  const result = [];\n  if (position !== undefined) {\n    defaultStyleList.forEach((name) => {\n      let item = allStyleMap[name];\n      if (typeof item === \"function\") {\n        item = item(position);\n      }\n      if (item && item.position && item.position.includes(position)) {\n        result.push(item);\n      }\n    });\n  }\n  return result;\n}\n","import {\n  getActionListByPosition,\n  getActionPrototypeListByPosition,\n  getItemDefaultProps,\n} from \"../_action/prototype-index\";\nimport { getStyleListByPosition } from \"./common-style\";\n\ninterface buttonListSetterProps {\n  position: string;\n  additionalPosition?: string;\n  extraInitialValues?: Record<string, unknown>;\n  excludeButtonList?: string[];\n}\n\nexport const createButtonListSetters = (config: buttonListSetterProps) => {\n  const { position, additionalPosition, extraInitialValues } = config || {};\n  const tempButtonList = getActionListByPosition(position);\n\n  const configure = [\n    {\n      name: \"primaryKey\",\n      title: \"唯一标识\",\n      condition: {\n        type: \"JSFunction\",\n        value: \"() => false\",\n      },\n      initialValue: {\n        type: \"JSFunction\",\n        value:\n          \"val => {\\n                        if (val) return val;\\n                        return String(Math.floor(Math.random() * 10000));\\n                      }\",\n      },\n      setter: \"StringSetter\",\n    },\n    {\n      name: \"title\",\n      isRequired: true,\n      title: \"标题\",\n      setter: {\n        componentName: \"MixedSetter\",\n        props: {\n          setters: [\n            {\n              componentName: \"StringSetter\",\n              title: \"文本输入\",\n            },\n          ],\n        },\n      },\n    },\n    {\n      name: \"optType\",\n      title: \"按钮功能\",\n      isRequired: true,\n      display: \"inline\",\n      extraProps: {\n        setValue(target, value) {\n          const currentRowValue = target?.parent?.getValue();\n          const newButtonInitialValue = getItemDefaultProps(position, value);\n          target?.parent.setValue({\n            ...currentRowValue,\n            optType: value,\n            options: newButtonInitialValue,\n          });\n        },\n      },\n      editable: true,\n      setter: {\n        componentName: \"SelectSetter\",\n        props: () => {\n          return {\n            options: getActionListByPosition(position),\n            selectProps: {\n              showSearch: true,\n            },\n          };\n        },\n      },\n    },\n    {\n      name: \"options\",\n      display: \"block\",\n      title: \"按钮配置项\",\n      setter: {\n        componentName: \"ObjectSetter\",\n        props: () => {\n          return {\n            config: {\n              items: [\n                ...getActionPrototypeListByPosition(position, {\n                  additionalPosition,\n                }),\n              ],\n            },\n          };\n        },\n      },\n    },\n  ];\n\n  const styleList = getStyleListByPosition(position);\n  if (styleList?.length > 0) {\n    configure.push({\n      title: \"样式\",\n      type: \"group\",\n      display: \"accordion\",\n      items: styleList,\n    });\n  }\n\n  const buttonInitialValue = getItemDefaultProps(\n    position,\n    tempButtonList[0]?.value,\n  );\n\n  const defaultSetter = [\n    {\n      componentName: \"ArraySetter\",\n      title: \"按钮列表\",\n      props: {\n        mode: \"list\",\n        useQuickAdd: {\n          optionKey: \"optType\",\n        },\n        itemSetter: {\n          componentName: \"ObjectSetter\",\n          initialValue() {\n            return {\n              // primaryKey: uuid(6),\n              title: \"按钮\",\n              options: buttonInitialValue,\n              type: \"default\",\n              size: \"medium\",\n              ...extraInitialValues,\n            };\n          },\n          props: {\n            config: {\n              items: configure,\n            },\n          },\n        },\n      },\n    },\n    {\n      componentName: \"SlotSetter\",\n      title: \"插槽\",\n      initialValue: {\n        type: \"JSSlot\",\n        value: [],\n      },\n    },\n  ];\n\n  if (defaultSetter?.length === 1) {\n    return defaultSetter[0];\n  } else {\n    return {\n      componentName: \"MixedSetter\",\n      props: {\n        setters: defaultSetter,\n      },\n    };\n  }\n};\n\nexport const getActionInterventionSetter = () => {\n  return [\n    {\n      name: \"interventionType\",\n      display: \"inline\",\n      title: \"动作干预\",\n      condition: (props: any) => {\n        const eventType = props?.parent?.getPropValue(\"name\");\n        return eventType === \"onFieldInputValueChange\";\n      },\n      defaultValue: \"none\",\n      setter: {\n        componentName: \"RadioGroupSetter\",\n        props: {\n          options: [\n            {\n              label: \"不干预\",\n              value: \"none\",\n            },\n            {\n              label: \"防抖\",\n              value: \"debounce\",\n            },\n          ],\n        },\n      },\n    },\n    {\n      name: \"intervalTime\",\n      display: \"inline\",\n      title: \"时间间隔(ms)\",\n      condition: (props: any) => {\n        const eventType = props?.parent?.getPropValue(\"name\");\n        const interventionType =\n          props?.parent?.getPropValue(\"interventionType\");\n        return (\n          eventType === \"onFieldInputValueChange\" &&\n          interventionType === \"debounce\"\n        );\n      },\n      defaultValue: 300,\n      setter: {\n        componentName: \"NumberSetter\",\n        props: {\n          step: 1,\n        },\n      },\n    },\n  ];\n};\n\nexport const createFlowListSetters = (config) => {\n  const { position, activeSetter } = config || {};\n  return {\n    componentName: \"ArraySetter\",\n    props: {\n      mode: \"list\",\n      useQuickAdd: {\n        optionKey: \"optType\",\n      },\n      itemSetter: {\n        componentName: \"ObjectSetter\",\n        initialValue: {\n          active: true,\n        },\n        props: {\n          config: {\n            items: [\n              {\n                name: \"optType\",\n                display: \"inline\",\n                title: \"动作类型\",\n                isRequired: true,\n                setter: {\n                  componentName: \"SelectSetter\",\n                  props: () => {\n                    return {\n                      options: getActionListByPosition(position),\n                      selectProps: {\n                        showSearch: true,\n                      },\n                    };\n                  },\n                },\n              },\n              {\n                name: \"active\",\n                display: \"inline\",\n                title: \"启用\",\n                isRequired: true,\n                setter: activeSetter || {\n                  componentName: \"BoolSetter\",\n                  title: \"启用/禁用\",\n                },\n              },\n              {\n                name: \"options\",\n                display: \"plain\",\n                title: \"动作配置项\",\n                extraProps: {\n                  defaultCollapsed: false,\n                },\n                setter: {\n                  componentName: \"ObjectSetter\",\n                  props: (field) => {\n                    const flowList = field?.parent?.parent?.getValue?.();\n                    const index = field?.parent?.name;\n                    return {\n                      config: {\n                        items: [\n                          ...getActionPrototypeListByPosition(position, {\n                            flowList,\n                            currentFlowIndex: index,\n                          }),\n                        ],\n                      },\n                    };\n                  },\n                },\n              },\n            ],\n          },\n        },\n      },\n    },\n  };\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","import { createFlowListSetters } from \"../../_setter-snippet/button\";\n\nexport const prototypeConfig = {\n  title: \"动作编排\",\n  getPrototypeList: (position) => {\n    return [\n      {\n        name: \"flowList\",\n        title: \"动作编排\",\n        display: \"plain\",\n        setter: createFlowListSetters({\n          position,\n        }),\n      },\n    ];\n  },\n};\n","export function createMessageSetters({ position, config }) {\n  const configure = [\n    {\n      name: \"type\",\n      title: \"提示类型\",\n      display: \"inline\",\n      setter: {\n        componentName: \"MixedSetter\",\n        props: {\n          setters: [\n            {\n              componentName: \"SelectSetter\",\n              props: {\n                options: [\n                  {\n                    label: \"成功\",\n                    value: \"success\",\n                  },\n                  {\n                    label: \"警告\",\n                    value: \"warning\",\n                  },\n                  {\n                    label: \"错误\",\n                    value: \"error\",\n                  },\n                  {\n                    label: \"通知\",\n                    value: \"info\",\n                  },\n                  {\n                    label: \"loading\",\n                    value: \"loading\",\n                  },\n                ],\n              },\n            },\n          ],\n        },\n      },\n    },\n    {\n      name: \"content\",\n      display: \"inline\",\n      title: \"内容\",\n      setter: {\n        componentName: \"StringSetter\",\n      },\n    },\n    {\n      name: \"duration\",\n      title: \"自动关闭的延时(单位秒)\",\n      setter: \"NumberSetter\",\n      display: \"inline\",\n    },\n  ];\n\n  return configure;\n}\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","import { createMessageSetters } from \"../../_setter-snippet/message\";\n\nexport const prototypeConfig = {\n  title: \"提示信息（toast）\",\n  getPrototypeList: (position, config) => {\n    return createMessageSetters({ position, config });\n  },\n};\n","export function getSelectDataSourceSnippet(config = {}) {\n  return [\n    {\n      title: \"关联数据源\",\n      name: \"_bindDataSource\",\n      setter(prop) {\n        const options = window.AliLowCodeEngine?.project\n          ?.exportSchema?.()\n          ?.componentsTree?.[0]?.dataSource?.list.map((item) => {\n            return {\n              label: item?.id,\n              value: item?.id,\n            };\n          });\n\n        return {\n          componentName: \"SelectSetter\",\n          props: {\n            options: [...options],\n            selectProps: {\n              hasClear: true,\n              autoWidth: true,\n            },\n          },\n        };\n      },\n      ...config,\n    },\n    {\n      title: \"是否自动携带传入参数\",\n      name: \"_autoBindDataSourceParams\",\n      setter: \"BoolSetter\",\n      defaultValue: false,\n    },\n    {\n      title: \"自定义携带传入参数\",\n      name: \"_bindDataSourceParams\",\n      setter: \"FunctionSetter\",\n      props: {\n        // 提供参数处理函数模板，方便用户自定义参数逻辑\n        template: \"onParams(extraParams) {\\n  // 处理参数\\n  return {};\\n}\",\n      },\n      condition: (prop) => {\n        return !prop?.parent?.getPropValue?.(\"_autoBindDataSourceParams\");\n      },\n    },\n  ];\n}\n","import { getSelectDataSourceSnippet } from \"./data-source\";\n\nexport const dialogTypeOptions = [\n  {\n    title: \"轻询问\",\n    value: \"confirm\",\n  },\n  {\n    title: \"警告\",\n    value: \"warning\",\n  },\n];\n\nconst createDoubleConfirmConfig = () => {\n  return [\n    {\n      title: \"二次确认配置\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"confirmConfig.enable\",\n          title: \"开启二次确认\",\n          display: \"inline\",\n          setter: \"BoolSetter\",\n        },\n        {\n          name: \"confirmConfig.type\",\n          title: \"类型\",\n          display: \"inline\",\n          defaultValue: \"confirm\",\n          setter: {\n            componentName: \"RadioGroupSetter\",\n            props: {\n              options: dialogTypeOptions,\n            },\n          },\n          condition: (prop) => {\n            return !!prop?.parent?.parent?.getPropValue?.(\n              \"confirmConfig.enable\",\n            );\n          },\n        },\n        {\n          name: \"confirmConfig.title\",\n          title: \"标题\",\n          display: \"inline\",\n          defaultValue: \"确认操作\",\n          setter: \"StringSetter\",\n          condition: (prop) => {\n            return !!prop?.parent?.parent?.getPropValue?.(\n              \"confirmConfig.enable\",\n            );\n          },\n        },\n        {\n          name: \"confirmConfig.content\",\n          title: \"内容\",\n          display: \"inline\",\n          defaultValue:\n            \"您即将执行此操作。请再次确认，操作后将无法撤销，确定继续吗？\",\n          setter: \"TextAreaSetter\",\n          condition: (prop) => {\n            return !!prop?.parent?.parent?.getPropValue?.(\n              \"confirmConfig.enable\",\n            );\n          },\n        },\n      ],\n    },\n  ];\n};\n\nconst createResponseConfig = () => {\n  return [\n    {\n      title: \"请求结果配置\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"responseConfig.enableSuccessToast\",\n          title: \"成功提示\",\n          display: \"inline\",\n          setter: \"BoolSetter\",\n        },\n        {\n          name: \"responseConfig.successToastMsg\",\n          title: \"成功提示内容\",\n          display: \"inline\",\n          defaultValue: () => {\n            return \"操作成功！\";\n          },\n          setter: \"TextAreaSetter\",\n          condition: (prop) => {\n            return !!prop?.parent?.parent?.getPropValue?.(\n              \"responseConfig.enableSuccessToast\",\n            );\n          },\n        },\n        {\n          name: \"responseConfig.enableErrorToast\",\n          title: \"失败提示\",\n          display: \"inline\",\n          setter: \"BoolSetter\",\n        },\n        {\n          name: \"responseConfig.errorToastMsg\",\n          title: \"失败提示内容\",\n          display: \"inline\",\n          defaultValue: () => {\n            return \"请求失败\";\n          },\n          setter: \"TextAreaSetter\",\n          condition: (prop) => {\n            return !!prop?.parent?.parent?.getPropValue?.(\n              \"responseConfig.enableErrorToast\",\n            );\n          },\n        },\n      ],\n    },\n  ];\n};\n\nexport const createServiceSelectPrototype = (config: any) => {\n  const { optType, position } = config || {};\n  const configure = [\n    ...getSelectDataSourceSnippet({\n      position,\n    }),\n    ...createDoubleConfirmConfig(),\n    ...createResponseConfig(),\n  ];\n\n  return configure;\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","import { createServiceSelectPrototype } from \"../../_setter-snippet/request\";\n\nexport const prototypeConfig = {\n  title: \"发请求\",\n  getPrototypeList: (position, config) => {\n    return createServiceSelectPrototype({ position });\n  },\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","export const prototypeConfig = {\n  title: \"跳转链接\",\n  getDefaultProps: () => {\n    return {\n      redirectType: \"open\",\n      routerType: \"location\",\n    };\n  },\n  getPrototypeList: (position, config) => {\n    const paramSetter = \"StringSetter\";\n    const urlSetter = \"StringSetter\";\n\n    return [\n      {\n        title: \"链接地址\",\n        name: \"url\",\n        setter: urlSetter,\n      },\n      {\n        title: \"跳转方式\",\n        name: \"redirectType\",\n        setter: {\n          componentName: \"RadioGroupSetter\",\n          initialValue: \"current\",\n          props: {\n            options: [\n              {\n                title: \"当前页面\",\n                value: \"current\",\n              },\n              {\n                title: \"新开页面\",\n                value: \"open\",\n              },\n              {\n                title: \"返回上一页\",\n                value: \"back\",\n              },\n            ],\n          },\n        },\n      },\n      {\n        title: \"url参数\",\n        name: \"urlParams\",\n        setter: {\n          componentName: \"ArraySetter\",\n          props: {\n            mode: \"list\",\n            itemSetter: {\n              componentName: \"ObjectSetter\",\n              initialValue: {\n                label: \"param\",\n              },\n              props: {\n                config: {\n                  items: [\n                    {\n                      title: \"参数名\",\n                      name: \"label\",\n                      isRequired: true,\n                      setter: \"StringSetter\",\n                    },\n                    {\n                      title: \"参数值\",\n                      name: \"value\",\n                      isRequired: true,\n                      setter: paramSetter,\n                    },\n                  ],\n                },\n              },\n            },\n          },\n        },\n      },\n    ];\n  },\n};\n","export function getSelectFormSnippet(config = {}) {\n  return {\n    title: \"关联表单\",\n    name: \"_bindForm\",\n    setter(prop) {\n      const options: { label: string; value: string }[] = [];\n      prop?.getNode?.()?.document?.nodesMap?.forEach((item) => {\n        if (item.componentName === \"YtForm\") {\n          const id = item.id || \"\";\n          // 二次确认\n          const formNode = prop.getNode?.()?.document?.nodesMap?.get(id);\n          if (formNode) {\n            const title = getFormTitle(formNode);\n            options.push({\n              label: title,\n              value: formNode?.getPropValue?.(\"_uniqueId\"),\n            });\n          }\n        }\n      });\n\n      return {\n        componentName: \"SelectSetter\",\n        props: {\n          options: [...options],\n          selectProps: {\n            hasClear: true,\n            autoWidth: true,\n          },\n        },\n      };\n    },\n    ...config,\n  };\n}\n\nconst getFormTitle = (node: any) => {\n  const { propsData, componentName } = node || {};\n\n  const title = propsData?.title || propsData?._uniqueId;\n\n  if (![\"YtForm\"].includes(componentName)) {\n    return title;\n  }\n\n  let compTitle = \"表单_\";\n\n  if (title) {\n    compTitle += title;\n  }\n\n  return compTitle;\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","import { getSelectFormSnippet } from \"../../_setter-snippet/form\";\n\nexport const prototypeConfig = {\n  title: \"重置表单\",\n  getPrototypeList: (position) => {\n    return [getSelectFormSnippet()];\n  },\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","import { getSelectFormSnippet } from \"../../_setter-snippet/form\";\nimport { createServiceSelectPrototype } from \"../../_setter-snippet/request\";\n\nexport const prototypeConfig = {\n  title: \"提交表单\",\n  getPrototypeList: (position) => {\n    return [\n      getSelectFormSnippet(),\n      ...createServiceSelectPrototype({ position }),\n    ];\n  },\n};\n","import { prototypeConfig } from \"./prototype-config\";\nimport { config } from \"./view\";\n\nexport default {\n  ...config,\n  ...prototypeConfig,\n};\n","export const prototypeConfig = {\n  title: \"JS脚本\",\n  getPrototypeList: (position) => {\n    // TODO: 不同的组件应当提供不同的函数模板\n    const result = [\n      {\n        title: \"自定义脚本\",\n        name: \"jsFunction\",\n        propType: \"func\",\n        setter: [\n          {\n            componentName: \"FunctionSetter\",\n            props: {\n              template: `\n  jsFunction(actionConfig){\n    // ===== 参数说明 =====\n    // actionConfig 包含以下参数：\n    // \n    // 基础参数：\n    // - __lc_as_item_id__: 动作项的唯一标识符\n    // - position: 动作执行位置（如 'BUTTON_POSITION_FORM_FOOTER'）\n    // - active: 动作是否激活状态\n    // \n    // 动作配置：\n    // - options: 动作的选项配置对象\n    // - optType: 动作类型（如 'jsAction'）\n    //\n    // 流程相关（仅在流程中执行时）：\n    // - getFlowActionInfo: 获取流程信息的函数\n    //   - getFlowActionInfo().currentFlowIndex: 当前流程索引\n    //   - getFlowActionInfo().flowList: 整个流程列表\n    \n    console.log('===== jsAction 执行开始 =====');\n    console.log('完整 actionConfig 对象:', actionConfig);\n    console.log('动作ID:', actionConfig.__lc_as_item_id__);\n    console.log('执行位置:', actionConfig.position);\n    console.log('是否激活:', actionConfig.active);\n    console.log('动作类型:', actionConfig.optType);\n    console.log('动作选项:', actionConfig.options);\n    \n    // 示例：访问动作选项\n    if (actionConfig.options) {\n      console.log('动作选项详情:', actionConfig.options);\n    }\n    \n    // 示例：根据执行位置进行不同处理\n    switch (actionConfig.position) {\n      case 'BUTTON_POSITION_FORM_FOOTER':\n        console.log('在表单底部按钮位置执行');\n        break;\n      case 'BUTTON_POSITION_FORM_HEADER':\n        console.log('在表单头部按钮位置执行');\n        break;\n      default:\n        console.log('在其他位置执行:', actionConfig.position);\n    }\n    \n    // 此处编写业务逻辑\n    // 例如：修改状态、调用API、显示消息等\n    \n    console.log('===== jsAction 执行完成 =====');\n    return 'jsAction 执行完成';\n  }\n`,\n            },\n          },\n        ],\n      },\n    ];\n    return result;\n  },\n};\n","/**\n * @file 动作设计态主入口\n * @description 该文件是平台所有\"动作\"在设计器（编辑态）的配置中心。\n * 它负责提供动作的列表、属性设置器（prototype/setter）的 schema，以及动作的默认值，\n * 以便在可视化编辑器中对动作进行配置。\n * 对应的\"运行时\"逻辑在同级的 `index.tsx` 文件中。\n */\n\n// ------------------- 导入依赖模块 -------------------\nimport { uniq } from \"lodash\";\nimport { getActionItemFunc } from \"../_utils/utils\";\nimport {\n  getBizComponentNameList,\n  handlePrototypeCondition,\n} from \"../_utils/prototype-utils\";\n\n// ------------------- 导入内置动作的设计态配置 -------------------\n// 每个 prototype 文件定义了动作在设计器中的展现和配置项\nimport dialog from \"./dialog/prototype\";\nimport closeDialog from \"./close-dialog/prototype\";\nimport flowAction from \"./flow-action/prototype\";\nimport message from \"./message/prototype\";\nimport request from \"./request/prototype\";\nimport link from \"./link/prototype\";\nimport reset from \"./reset/prototype\";\nimport submit from \"./submit/prototype\";\nimport jsAction from \"./js-action/prototype\";\n\n// ------------------- 动作设计态配置注册与管理 -------------------\n\n/**\n * 动作设计态配置注册表\n * @description 存储所有动作的设计态配置，键为动作名称，值为其 prototype 定义。\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 获取具体动作 prototype 属性的函数\n */\nexport const getActionItem = getActionItemFunc({ actionMap });\n\n/**\n * 根据位置获取可用动作的列表 (用于设计器选择器)\n * @description 整合内置动作和业务自定义动作，生成一个用于在设计器下拉菜单中展示的列表。\n * @param {string} position - 动作配置的位置 (e.g., 'event-editor')，用于过滤和适配不同场景下的动作列表\n * @returns {Array<object>} - 返回一个供给设计器渲染的动作列表，支持分组显示\n */\nexport function getActionListByPosition(position) {\n  const defaultList = Object.keys(actionMap);\n  const bizComponentNameList = getBizComponentNameList(); // 获取业务自定义动作列表\n  const allComponentList = uniq([...defaultList, ...bizComponentNameList]);\n  const result = [];\n\n  if (position === undefined) {\n    return result;\n  }\n\n  allComponentList.forEach((name) => {\n    const component = getActionItem({ position, actionName: name });\n    if (component) {\n      // 处理带分组信息的动作 (bizInfo)\n      const { bizInfo = [] } = component;\n      if (bizInfo.length > 0) {\n        bizInfo.forEach((item) => {\n          const { label, value } = item;\n          const existGroup = result.find((item2) => item2.value === value);\n          if (existGroup) {\n            existGroup?.children.push(component);\n          } else {\n            result.push({\n              title: label,\n              value,\n              children: [component],\n            });\n          }\n        });\n        return;\n      }\n      // 不带分组的直接推入\n      result.push(component);\n    }\n  });\n\n  return result;\n}\n\n/**\n * 根据位置获取所有可用动作的原型配置 (用于生成属性面板)\n * @description 收集所有可用动作的属性设置器（setter）配置，用于在设计器中渲染完整的属性配置面板。\n * @param {string} position - 动作配置的位置\n * @param {object} config - 额外的配置信息\n * @returns {Array<object>} - 返回一个包含所有 setter 配置的数组\n */\nexport function getActionPrototypeListByPosition(position, config) {\n  const defaultList = Object.keys(actionMap);\n  const bizComponentNameList = getBizComponentNameList();\n  const allComponentList = uniq([...defaultList, ...bizComponentNameList]);\n  let prototypeList = [];\n\n  if (position === undefined) {\n    return prototypeList;\n  }\n\n  allComponentList.forEach((name) => {\n    const item = getActionItem({ position, actionName: name }) || {};\n    const { getPrototypeList, configure = [] } = item;\n    let temp;\n\n    if (typeof getPrototypeList === \"function\") {\n      // 优先使用 getPrototypeList 动态生成配置\n      temp = getPrototypeList(position, config);\n    } else if (configure?.length > 0) {\n      // 其次使用静态的 configure 数组\n      temp = configure;\n    }\n\n    if (temp && temp.length > 0) {\n      // handlePrototypeCondition 用于处理通用逻辑，如添加唯一标识\n      prototypeList = [\n        ...prototypeList,\n        ...handlePrototypeCondition(temp, name, \"optType\"),\n      ];\n    }\n  });\n\n  return prototypeList;\n}\n\n/**\n * 获取指定动作类型的默认属性\n * @description 当用户在设计器中添加一个新的动作时，调用此函数获取该动作的初始默认值。\n * @param {string} position - 动作配置的位置\n * @param {string} actionName - 动作的名称\n * @returns {object | undefined} - 返回一个包含默认属性的对象\n */\nexport function getItemDefaultProps(position, actionName) {\n  const func = getActionItem({\n    position,\n    actionName,\n    propKey: \"getDefaultProps\",\n  });\n  if (typeof func === \"function\") {\n    return func();\n  }\n}\n","import { ButtonPosition } from \"../_position/button-position\";\nimport {\n  getActionListByPosition,\n  getActionPrototypeListByPosition,\n} from \"../_action/prototype-index\";\nimport { getActionInterventionSetter } from \"../_setter-snippet/button\";\nimport { getItemListByPosition } from \"../_utils/prototype-utils\";\nimport { executeFunction } from \"../_utils/utils\";\nimport { type ButtonPositionValue } from \"../_position/button-position\";\n\nconst onSearch = {\n  title: \"点击查询按钮时\",\n  value: \"onSearch\",\n  position: [ButtonPosition.FILTER_EVENT],\n};\n\nconst onDefaultValueFinished = {\n  title: \"设置默认值完成后\",\n  value: \"onDefaultValueFinished\",\n  position: [ButtonPosition.FILTER_EVENT, ButtonPosition.FORM_EVENT],\n};\n\nconst onTablePageChange = {\n  title: \"表格分页切换时\",\n  value: \"onTablePageChange\",\n  position: [ButtonPosition.FILTER_EVENT],\n};\n\nconst onTableRemoteDataChange = {\n  title: \"表格远程请求成功\",\n  value: \"onTableRemoteDataChange\",\n  position: [ButtonPosition.FILTER_EVENT],\n};\n\nconst onTableRemoteError = {\n  title: \"表格请求失败后\",\n  value: \"onTableRemoteError\",\n  position: [ButtonPosition.FILTER_EVENT],\n};\n\nconst onTableRowDoubleClick = {\n  title: \"表格行双击时\",\n  value: \"onTableRowDoubleClick\",\n  position: [ButtonPosition.FILTER_EVENT],\n};\n\nconst onDialogClose = {\n  title: \"弹窗关闭时\",\n  value: \"onDialogClose\",\n  position: [ButtonPosition.FORM_EVENT],\n};\n\nexport const eventMap = {\n  onSearch,\n  onDefaultValueFinished,\n  onTablePageChange,\n  onTableRemoteDataChange,\n  onTableRemoteError,\n  onTableRowDoubleClick,\n  onDialogClose,\n};\n\ninterface CreateEventSettersConfig {\n  position: ButtonPositionValue; // Or ButtonPositionValue[] if it can be multiple\n  initialValue?: Record<string, any>;\n  title?: string;\n  handleList?: (eventList: any[]) => any[]; // Define more specific types for eventList if possible\n  extraConfig?: Record<string, any>;\n}\n\nexport function createEventSetters(config: CreateEventSettersConfig) {\n  const { position, initialValue, title, handleList, extraConfig } = config;\n  let eventList = getItemListByPosition({\n    position,\n    componentMap: eventMap,\n  });\n  if (typeof handleList === \"function\") {\n    eventList = executeFunction(handleList, eventList);\n  }\n  if (eventList?.length === 0) {\n    return [];\n  }\n  return [\n    {\n      name: \"events\",\n      title: title || \"配置字段的回调事件\",\n      display: \"accordion\",\n      collapsed: true,\n      setter: {\n        componentName: \"ArraySetter\",\n        props: {\n          mode: \"list\",\n          itemSetter: {\n            componentName: \"ObjectSetter\",\n            initialValue: initialValue || {\n              optType: \"flowAction\",\n            },\n            props: (field) => {\n              const configure = [\n                ...getActionPrototypeListByPosition(position, {\n                  __field: field,\n                }),\n              ];\n\n              let defaultButtonList = [\n                {\n                  label: \"动作编排\",\n                  value: \"flowAction\",\n                },\n              ];\n\n              if (\n                [\n                  ButtonPosition.FILTER_EVENT,\n                  ButtonPosition.FORM_EVENT,\n                ].includes(position)\n              ) {\n                const buttonList = getActionListByPosition({ position });\n                if (Array.isArray(buttonList) && buttonList.length > 0) {\n                  const extraButtonList = buttonList\n                    .filter((item) => {\n                      return (\n                        item?.value !== \"jsAction\" &&\n                        item?.value !== \"flowAction\"\n                      );\n                    })\n                    .map((item) => ({ label: item.title, value: item.value }));\n                  defaultButtonList = [\n                    ...extraButtonList,\n                    ...defaultButtonList,\n                  ];\n                }\n              }\n              if (Array.isArray(configure)) {\n                configure.forEach((item) => {\n                  if (item) {\n                    item.condition = function (prop) {\n                      if (item?.__optType) {\n                        const tempResult =\n                          item?.__optType ===\n                          prop?.parent?.getValue?.()?.optType;\n                        // FIXME：此处用originalCondition覆盖了condition，会导致一级子setter的condition失效\n                        if (typeof item?.originalCondition === \"function\") {\n                          return tempResult && item?.originalCondition(prop);\n                        }\n                        return tempResult;\n                      }\n                    };\n                  }\n                });\n              }\n              // FIXME: 事件类型需要禁用已经配置过的选项\n              return {\n                config: {\n                  items: [\n                    {\n                      name: \"name\",\n                      display: \"inline\",\n                      title: \"事件类型\",\n                      isRequired: true,\n                      setter: {\n                        componentName: \"SelectSetter\",\n                        props: {\n                          options: eventList,\n                        },\n                      },\n                    },\n                    {\n                      name: \"optType\",\n                      title: \"动作类型\",\n                      isRequired: true,\n                      setter: {\n                        componentName: \"SelectSetter\",\n                        props: {\n                          options: defaultButtonList,\n                          selectProps: {\n                            showSearch: true,\n                          },\n                        },\n                      },\n                    },\n                    ...getActionInterventionSetter(),\n                    ...configure,\n                  ],\n                },\n              };\n            },\n          },\n        },\n      },\n      ...extraConfig,\n    },\n  ];\n}\n\n// 注册事件\nexport function registerEvent(name, event) {\n  if (name && event) {\n    eventMap[name] = event;\n  }\n}\n","export default [\n  {\n    title: \"表格\",\n    screenshot: \"https://i.lovrabet.com/c/AZlf-D1-cACdKDAw0F_B6g.png\",\n    schema: {\n      componentName: \"YtTable\",\n      props: {\n        dataSource: {\n          paging: {\n            total: 100,\n            currentPage: 1,\n            pageSize: 10,\n          },\n          tableData: [\n            {\n              id: \"60e0fad7-531e-4be3-88ec-458e54d52932\",\n              policyNumber: \"P100002025\",\n              policyholder: {\n                name: \"张三\",\n                age: 35,\n                gender: \"男\",\n                idNumber: \"110101198505153317\",\n                phone: \"13800138000\",\n                email: \"zhangsan@example.com\",\n                address: \"北京市朝阳区建国路88号\",\n              },\n              insured: {\n                name: \"李四\",\n                age: 42,\n                gender: \"男\",\n                idNumber: \"310101197901014433\",\n                phone: \"13900139000\",\n                email: \"lisi@example.com\",\n                address: \"上海市浦东新区陆家嘴金融中心\",\n              },\n              product: {\n                code: \"LIFE001\",\n                name: \"长期人寿保险\",\n                type: \"人寿保险\",\n                description: \"提供长期人寿保障，包含身故保险金和全残保险金\",\n              },\n              coverageAmount: 910000,\n              premium: 24494,\n              effectiveDate: 1733193078905,\n              expiryDate: 1890873078905,\n              status: \"生效中\",\n              createdAt: 1744943478905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"36fd4e97-1e5b-4173-bd21-5da30dc3bddb\",\n              policyNumber: \"P100012025\",\n              policyholder: {\n                name: \"李四\",\n                age: 42,\n                gender: \"男\",\n                idNumber: \"310101197901014433\",\n                phone: \"13900139000\",\n                email: \"lisi@example.com\",\n                address: \"上海市浦东新区陆家嘴金融中心\",\n              },\n              insured: {\n                name: \"李四\",\n                age: 42,\n                gender: \"男\",\n                idNumber: \"310101197901014433\",\n                phone: \"13900139000\",\n                email: \"lisi@example.com\",\n                address: \"上海市浦东新区陆家嘴金融中心\",\n              },\n              product: {\n                code: \"HEALTH001\",\n                name: \"综合医疗保险\",\n                type: \"健康保险\",\n                description: \"报销住院医疗费用，包含重大疾病保障\",\n              },\n              coverageAmount: 120000,\n              premium: 4624,\n              effectiveDate: 1745116278905,\n              expiryDate: 1902796278905,\n              status: \"已过期\",\n              createdAt: 1744511478905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"8a5cba52-44f3-4092-bcf3-e1e177f7c64b\",\n              policyNumber: \"P100022025\",\n              policyholder: {\n                name: \"王五\",\n                age: 28,\n                gender: \"女\",\n                idNumber: \"440101199301015566\",\n                phone: \"13700137000\",\n                email: \"wangwu@example.com\",\n                address: \"广州市天河区珠江新城\",\n              },\n              insured: {\n                name: \"王五\",\n                age: 28,\n                gender: \"女\",\n                idNumber: \"440101199301015566\",\n                phone: \"13700137000\",\n                email: \"wangwu@example.com\",\n                address: \"广州市天河区珠江新城\",\n              },\n              product: {\n                code: \"AUTO001\",\n                name: \"全车保障险\",\n                type: \"车险\",\n                description: \"提供车辆损失、第三者责任、盗抢等全方位保障\",\n              },\n              coverageAmount: 310000,\n              premium: 14327,\n              effectiveDate: 1731119478905,\n              expiryDate: 1762655478905,\n              status: \"已理赔\",\n              createdAt: 1744684278905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"579dc29c-4a26-4b4b-95df-0605e857a4a6\",\n              policyNumber: \"P100032025\",\n              policyholder: {\n                name: \"赵六\",\n                age: 50,\n                gender: \"男\",\n                idNumber: \"510101197201018899\",\n                phone: \"13600136000\",\n                email: \"zhaoliu@example.com\",\n                address: \"成都市锦江区红星路\",\n              },\n              insured: {\n                name: \"钱七\",\n                age: 32,\n                gender: \"女\",\n                idNumber: \"330101199001012233\",\n                phone: \"13500135000\",\n                email: \"qianqi@example.com\",\n                address: \"杭州市西湖区文三路\",\n              },\n              product: {\n                code: \"PROPERTY001\",\n                name: \"家庭财产保险\",\n                type: \"财产保险\",\n                description: \"保障家庭财产因自然灾害或意外事故造成的损失\",\n              },\n              coverageAmount: 660000,\n              premium: 17298,\n              effectiveDate: 1724812278905,\n              expiryDate: 1977100278905,\n              status: \"已取消\",\n              createdAt: 1743561078905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"fc81d42f-03d2-4476-b49b-603d545ec10f\",\n              policyNumber: \"P100042025\",\n              policyholder: {\n                name: \"钱七\",\n                age: 32,\n                gender: \"女\",\n                idNumber: \"330101199001012233\",\n                phone: \"13500135000\",\n                email: \"qianqi@example.com\",\n                address: \"杭州市西湖区文三路\",\n              },\n              insured: {\n                name: \"钱七\",\n                age: 32,\n                gender: \"女\",\n                idNumber: \"330101199001012233\",\n                phone: \"13500135000\",\n                email: \"qianqi@example.com\",\n                address: \"杭州市西湖区文三路\",\n              },\n              product: {\n                code: \"TRAVEL001\",\n                name: \"境外旅行保险\",\n                type: \"旅游保险\",\n                description: \"提供境外旅行医疗、行李丢失、航班延误等保障\",\n              },\n              coverageAmount: 970000,\n              premium: 38248,\n              effectiveDate: 1717468278905,\n              expiryDate: 1749004278905,\n              status: \"生效中\",\n              createdAt: 1745202678905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"ccd3a27f-e577-48ca-881c-5de3fa697a68\",\n              policyNumber: \"P100052025\",\n              policyholder: {\n                name: \"张三\",\n                age: 35,\n                gender: \"男\",\n                idNumber: \"110101198505153317\",\n                phone: \"13800138000\",\n                email: \"zhangsan@example.com\",\n                address: \"北京市朝阳区建国路88号\",\n              },\n              insured: {\n                name: \"张三\",\n                age: 35,\n                gender: \"男\",\n                idNumber: \"110101198505153317\",\n                phone: \"13800138000\",\n                email: \"zhangsan@example.com\",\n                address: \"北京市朝阳区建国路88号\",\n              },\n              product: {\n                code: \"LIFE001\",\n                name: \"长期人寿保险\",\n                type: \"人寿保险\",\n                description: \"提供长期人寿保障，包含身故保险金和全残保险金\",\n              },\n              coverageAmount: 860000,\n              premium: 33783,\n              effectiveDate: 1716345078905,\n              expiryDate: 1842489078905,\n              status: \"已过期\",\n              createdAt: 1744511478905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"b7cd7617-6646-45ba-a837-3e057cf82b2a\",\n              policyNumber: \"P100062025\",\n              policyholder: {\n                name: \"李四\",\n                age: 42,\n                gender: \"男\",\n                idNumber: \"310101197901014433\",\n                phone: \"13900139000\",\n                email: \"lisi@example.com\",\n                address: \"上海市浦东新区陆家嘴金融中心\",\n              },\n              insured: {\n                name: \"王五\",\n                age: 28,\n                gender: \"女\",\n                idNumber: \"440101199301015566\",\n                phone: \"13700137000\",\n                email: \"wangwu@example.com\",\n                address: \"广州市天河区珠江新城\",\n              },\n              product: {\n                code: \"HEALTH001\",\n                name: \"综合医疗保险\",\n                type: \"健康保险\",\n                description: \"报销住院医疗费用，包含重大疾病保障\",\n              },\n              coverageAmount: 540000,\n              premium: 8606,\n              effectiveDate: 1726972278905,\n              expiryDate: 1979260278905,\n              status: \"已理赔\",\n              createdAt: 1745202678905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"177b3a52-9852-4dac-bcf6-3b57f8ede58a\",\n              policyNumber: \"P100072025\",\n              policyholder: {\n                name: \"王五\",\n                age: 28,\n                gender: \"女\",\n                idNumber: \"440101199301015566\",\n                phone: \"13700137000\",\n                email: \"wangwu@example.com\",\n                address: \"广州市天河区珠江新城\",\n              },\n              insured: {\n                name: \"王五\",\n                age: 28,\n                gender: \"女\",\n                idNumber: \"440101199301015566\",\n                phone: \"13700137000\",\n                email: \"wangwu@example.com\",\n                address: \"广州市天河区珠江新城\",\n              },\n              product: {\n                code: \"AUTO001\",\n                name: \"全车保障险\",\n                type: \"车险\",\n                description: \"提供车辆损失、第三者责任、盗抢等全方位保障\",\n              },\n              coverageAmount: 860000,\n              premium: 36221,\n              effectiveDate: 1742610678905,\n              expiryDate: 1931826678905,\n              status: \"已取消\",\n              createdAt: 1745289078905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"e6a86e7b-7990-4d1f-96c1-ffb37401a129\",\n              policyNumber: \"P100082025\",\n              policyholder: {\n                name: \"赵六\",\n                age: 50,\n                gender: \"男\",\n                idNumber: \"510101197201018899\",\n                phone: \"13600136000\",\n                email: \"zhaoliu@example.com\",\n                address: \"成都市锦江区红星路\",\n              },\n              insured: {\n                name: \"赵六\",\n                age: 50,\n                gender: \"男\",\n                idNumber: \"510101197201018899\",\n                phone: \"13600136000\",\n                email: \"zhaoliu@example.com\",\n                address: \"成都市锦江区红星路\",\n              },\n              product: {\n                code: \"PROPERTY001\",\n                name: \"家庭财产保险\",\n                type: \"财产保险\",\n                description: \"保障家庭财产因自然灾害或意外事故造成的损失\",\n              },\n              coverageAmount: 210000,\n              premium: 9077,\n              effectiveDate: 1742178678905,\n              expiryDate: 1962930678905,\n              status: \"生效中\",\n              createdAt: 1743647478905,\n              updatedAt: 1745289078905,\n            },\n            {\n              id: \"dbbd4f93-887d-4eaa-bd1b-e530f291063c\",\n              policyNumber: \"P100092025\",\n              policyholder: {\n                name: \"钱七\",\n                age: 32,\n                gender: \"女\",\n                idNumber: \"330101199001012233\",\n                phone: \"13500135000\",\n                email: \"qianqi@example.com\",\n                address: \"杭州市西湖区文三路\",\n              },\n              insured: {\n                name: \"张三\",\n                age: 35,\n                gender: \"男\",\n                idNumber: \"110101198505153317\",\n                phone: \"13800138000\",\n                email: \"zhangsan@example.com\",\n                address: \"北京市朝阳区建国路88号\",\n              },\n              product: {\n                code: \"TRAVEL001\",\n                name: \"境外旅行保险\",\n                type: \"旅游保险\",\n                description: \"提供境外旅行医疗、行李丢失、航班延误等保障\",\n              },\n              coverageAmount: 410000,\n              premium: 12281,\n              effectiveDate: 1717468278905,\n              expiryDate: 1749004278905,\n              status: \"已过期\",\n              createdAt: 1744425078905,\n              updatedAt: 1745289078905,\n            },\n          ],\n        },\n        columns: [\n          {\n            title: \"姓名\",\n            dataIndex: \"policyholder.name\",\n            key: \"policyholderName\",\n          },\n          {\n            title: \"年龄\",\n            dataIndex: \"policyholder.age\",\n            key: \"policyholder.age\",\n          },\n          {\n            title: \"被保人姓名\",\n            dataIndex: \"insured.name\",\n            key: \"insured.name\",\n          },\n          {\n            title: \"被保人年龄\",\n            dataIndex: \"insured.age\",\n            key: \"insured.age\",\n          },\n          {\n            title: \"产品名称\",\n            dataIndex: \"product.name\",\n            key: \"product.name\",\n          },\n          {\n            title: \"保额\",\n            dataIndex: \"coverageAmount\",\n            key: \"coverageAmount\",\n          },\n          {\n            title: \"保费\",\n            dataIndex: \"premium\",\n            key: \"premium\",\n          },\n          {\n            title: \"生效日期\",\n            dataIndex: \"effectiveDate\",\n            key: \"effectiveDate\",\n          },\n          {\n            title: \"过期日期\",\n            dataIndex: \"expiryDate\",\n            key: \"expiryDate\",\n          },\n          {\n            title: \"状态\",\n            dataIndex: \"status\",\n            key: \"status\",\n          },\n        ],\n        rowKey: \"id\",\n        pagination: {\n          enable: true,\n        },\n        _context: {\n          type: \"JSExpression\",\n          value: \"this\",\n        },\n      },\n    },\n  },\n];\n","const textFormat = [\n  {\n    name: \"ellipsis\",\n    title: {\n      label: \"自动省略\",\n      tip: \"文本过长是否自动省略\",\n    },\n    propType: \"bool\",\n    setter: \"BoolSetter\",\n  },\n  {\n    name: \"copyable\",\n    title: {\n      label: \"允许复制\",\n      tip: \"是否允许复制文本\",\n    },\n    propType: \"bool\",\n    setter: \"BoolSetter\",\n  },\n];\n\nexport default textFormat;\n","const avatarTextFormat = [\n  {\n    name: \"avatarSize\",\n    title: {\n      label: \"头像大小\",\n      tip: \"头像大小\",\n    },\n    propType: \"number\",\n    setter: \"NumberSetter\",\n    defaultValue: 24,\n  },\n  {\n    name: \"avatarShape\",\n    title: {\n      label: \"头像形状\",\n      tip: \"头像形状\",\n    },\n    propType: {\n      type: \"oneOf\",\n      value: [\"circle\", \"square\"],\n    },\n    setter: {\n      componentName: \"RadioGroupSetter\",\n      props: {\n        options: [\n          { title: \"圆形\", value: \"circle\" },\n          { title: \"方形\", value: \"square\" },\n        ],\n      },\n    },\n    defaultValue: \"circle\",\n  },\n  {\n    name: \"avatarField\",\n    title: {\n      label: \"头像字段\",\n      tip: \"从记录中获取头像的字段名\",\n    },\n    propType: \"string\",\n    setter: \"StringSetter\",\n    defaultValue: \"avatar\",\n  },\n  {\n    name: \"avatarFallback\",\n    title: {\n      label: \"默认头像文本\",\n      tip: \"当没有头像时显示的文字\",\n    },\n    propType: \"string\",\n    setter: \"StringSetter\",\n  },\n];\n\nexport default avatarTextFormat;\n","const numberFormat = [\n  {\n    name: \"precision\",\n    title: {\n      label: \"精度\",\n      tip: \"数字精度(小数位数)\",\n    },\n    propType: \"number\",\n    setter: \"NumberSetter\",\n    defaultValue: 2,\n  },\n  {\n    name: \"separator\",\n    title: {\n      label: \"千位分隔符\",\n      tip: \"是否使用千位分隔符\",\n    },\n    propType: \"bool\",\n    setter: \"BoolSetter\",\n    defaultValue: true,\n  },\n  {\n    name: \"prefix\",\n    title: { label: \"前缀\", tip: \"数字前缀\" },\n    propType: \"string\",\n    setter: \"StringSetter\",\n  },\n  {\n    name: \"suffix\",\n    title: { label: \"后缀\", tip: \"数字后缀\" },\n    propType: \"string\",\n    setter: \"StringSetter\",\n  },\n];\n\nexport default numberFormat;\n","const progressFormat = [\n  {\n    name: \"strokeColor\",\n    title: {\n      label: \"进度条颜色\",\n      tip: \"进度条的色彩\",\n    },\n    propType: \"string\",\n    setter: \"ColorSetter\",\n  },\n  {\n    name: \"showInfo\",\n    title: {\n      label: \"显示进度数值\",\n      tip: \"是否显示进度数值\",\n    },\n    propType: \"bool\",\n    setter: \"BoolSetter\",\n    defaultValue: true,\n  },\n  {\n    name: \"size\",\n    title: {\n      label: \"进度条大小\",\n      tip: \"进度条大小\",\n    },\n    propType: {\n      type: \"oneOf\",\n      value: [\"default\", \"small\"],\n    },\n    setter: {\n      componentName: \"RadioGroupSetter\",\n      props: {\n        options: [\n          { title: \"默认\", value: \"default\" },\n          { title: \"小型\", value: \"small\" },\n        ],\n      },\n    },\n    defaultValue: \"default\",\n  },\n];\n\nexport default progressFormat;\n","const percentFormat = [\n  {\n    name: \"precision\",\n    title: {\n      label: \"精度\",\n      tip: \"小数点位数\",\n    },\n    propType: \"number\",\n    setter: \"NumberSetter\",\n    defaultValue: 0,\n  },\n  {\n    name: \"showSymbol\",\n    title: {\n      label: \"显示百分号\",\n      tip: \"是否显示百分号\",\n    },\n    propType: \"bool\",\n    setter: \"BoolSetter\",\n    defaultValue: true,\n  },\n];\n\nexport default percentFormat;\n","const tagFormat = [\n  {\n    name: \"color\",\n    title: {\n      label: \"标签颜色\",\n      tip: \"标签的颜色\",\n    },\n    propType: \"string\",\n    setter: \"ColorSetter\",\n  },\n  {\n    name: \"colorMapping\",\n    title: {\n      label: \"颜色映射\",\n      tip: \"值到颜色的映射关系\",\n    },\n    propType: \"object\",\n    setter: \"JsonSetter\",\n  },\n];\n\nexport default tagFormat;\n","const dateFormat = [\n  {\n    name: \"format\",\n    title: {\n      label: \"日期格式\",\n      tip: \"日期显示格式，如：YYYY-MM-DD\",\n    },\n    propType: \"string\",\n    setter: {\n      componentName: \"SelectSetter\",\n      props: {\n        options: [\n          { title: \"YYYY-MM-DD\", value: \"YYYY-MM-DD\" },\n          { title: \"YYYY/MM/DD\", value: \"YYYY/MM/DD\" },\n          { title: \"YYYY年MM月DD日\", value: \"YYYY年MM月DD日\" },\n          { title: \"MM-DD\", value: \"MM-DD\" },\n          { title: \"自定义\", value: \"custom\" },\n        ],\n      },\n    },\n    defaultValue: \"YYYY-MM-DD\",\n  },\n  {\n    name: \"customFormat\",\n    title: {\n      label: \"自定义格式\",\n      tip: '当日期格式选择\"自定义\"时生效',\n    },\n    condition: {\n      type: \"JSFunction\",\n      value:\n        'target => target.getProps().getPropValue(\"format\") === \"custom\" && target.getProps().getPropValue(\"formatOptions.format\") === \"date\"',\n    },\n    propType: \"string\",\n    setter: \"StringSetter\",\n  },\n  {\n    name: \"valueType\",\n    title: {\n      label: \"值类型\",\n      tip: \"日期值的类型\",\n    },\n    propType: {\n      type: \"oneOf\",\n      value: [\"timestamp\", \"string\", \"dayjs\"],\n    },\n    setter: {\n      componentName: \"RadioGroupSetter\",\n      props: {\n        options: [\n          { title: \"时间戳\", value: \"timestamp\" },\n          { title: \"字符串\", value: \"string\" },\n          { title: \"Dayjs对象\", value: \"dayjs\" },\n        ],\n      },\n    },\n    defaultValue: \"string\",\n  },\n];\n\nexport default dateFormat;\n","const datetimeFormat = [\n  {\n    name: \"format\",\n    title: {\n      label: \"日期时间格式\",\n      tip: \"日期时间显示格式，如：YYYY-MM-DD HH:mm:ss\",\n    },\n    propType: \"string\",\n    setter: {\n      componentName: \"SelectSetter\",\n      props: {\n        options: [\n          { title: \"YYYY-MM-DD HH:mm:ss\", value: \"YYYY-MM-DD HH:mm:ss\" },\n          { title: \"YYYY-MM-DD HH:mm\", value: \"YYYY-MM-DD HH:mm\" },\n          { title: \"YYYY/MM/DD HH:mm:ss\", value: \"YYYY/MM/DD HH:mm:ss\" },\n          { title: \"MM-DD HH:mm\", value: \"MM-DD HH:mm\" },\n          { title: \"自定义\", value: \"custom\" },\n        ],\n      },\n    },\n    defaultValue: \"YYYY-MM-DD HH:mm:ss\",\n  },\n  {\n    name: \"customFormat\",\n    title: {\n      label: \"自定义格式\",\n      tip: '当日期时间格式选择\"自定义\"时生效',\n    },\n    condition: {\n      type: \"JSFunction\",\n      value:\n        'target => target.getProps().getPropValue(\"format\") === \"custom\" && target.getProps().getPropValue(\"formatOptions.format\") === \"datetime\"',\n    },\n    propType: \"string\",\n    setter: \"StringSetter\",\n  },\n  {\n    name: \"valueType\",\n    title: {\n      label: \"值类型\",\n      tip: \"日期时间值的类型\",\n    },\n    propType: {\n      type: \"oneOf\",\n      value: [\"timestamp\", \"string\", \"dayjs\"],\n    },\n    setter: {\n      componentName: \"RadioGroupSetter\",\n      props: {\n        options: [\n          { title: \"时间戳\", value: \"timestamp\" },\n          { title: \"字符串\", value: \"string\" },\n          { title: \"Dayjs对象\", value: \"dayjs\" },\n        ],\n      },\n    },\n    defaultValue: \"string\",\n  },\n];\n\nexport default datetimeFormat;\n","const customFormat = [\n  {\n    name: \"customRender\",\n    title: {\n      label: \"自定义渲染函数\",\n      tip: \"自定义渲染函数\",\n    },\n    propType: \"func\",\n    setter: {\n      componentName: \"FunctionSetter\",\n      props: {\n        template:\n          \"customRender(value, record, index){\\n  // 自定义渲染函数\\n  return value;\\n}\",\n      },\n    },\n  },\n];\n\nexport default customFormat;\n","const enumFormat = [\n  {\n    name: \"options\",\n    title: {\n      label: \"枚举选项\",\n      tip: \"静态枚举的选项列表，支持 select/switch 等类型\",\n    },\n    propType: \"array\",\n    setter: {\n      componentName: \"ArraySetter\",\n      props: {\n        itemSetter: {\n          componentName: \"ObjectSetter\",\n          props: {\n            config: {\n              items: [\n                {\n                  name: \"label\",\n                  title: { label: \"显示文本\", tip: \"选项显示的文本\" },\n                  propType: \"string\",\n                  setter: \"StringSetter\",\n                },\n                {\n                  name: \"value\",\n                  title: { label: \"选项值\", tip: \"选项的实际值\" },\n                  propType: \"string\",\n                  setter: \"StringSetter\",\n                },\n                {\n                  name: \"color\",\n                  title: { label: \"颜色\", tip: \"选项的颜色（可选）\" },\n                  propType: \"string\",\n                  setter: \"ColorSetter\",\n                },\n              ],\n            },\n          },\n        },\n      },\n    },\n  },\n  {\n    name: \"type\",\n    title: {\n      label: \"展示类型\",\n      tip: \"展示为下拉选择（select）还是开关（switch）\",\n    },\n    propType: {\n      type: \"oneOf\",\n      value: [\"select\", \"switch\"],\n    },\n    setter: {\n      componentName: \"RadioGroupSetter\",\n      props: {\n        options: [\n          { title: \"下拉选择\", value: \"select\" },\n          { title: \"开关\", value: \"switch\" },\n        ],\n      },\n    },\n    defaultValue: \"select\",\n  },\n];\n\nexport default enumFormat;\n","export default [\n  {\n    name: \"componentName\",\n    title: {\n      label: \"组件名称\",\n      tip: \"要渲染的组件名称\",\n    },\n    propType: \"string\",\n    setter: {\n      componentName: \"StringSetter\",\n      props: {\n        placeholder: \"请输入组件名称\",\n      },\n    },\n  },\n  {\n    name: \"componentProps\",\n    title: {\n      label: \"组件属性\",\n      tip: \"传递给组件的额外属性\",\n    },\n    propType: \"object\",\n    setter: {\n      componentName: \"JsonSetter\",\n      props: {\n        placeholder: \"请输入组件属性（JSON格式）\",\n      },\n    },\n  },\n];","import textFormat from \"./text\";\nimport avatarTextFormat from \"./avatar-text\";\nimport numberFormat from \"./number\";\nimport progressFormat from \"./progress\";\nimport percentFormat from \"./percent\";\nimport tagFormat from \"./tag\";\nimport dateFormat from \"./date\";\nimport datetimeFormat from \"./datetime\";\nimport customFormat from \"./custom\";\nimport enumFormat from \"./enum\";\nimport componentFormat from \"./component\";\n\nexport const formatTypeOptions = [\n  { title: \"文本\", value: \"text\" },\n  { title: \"图标文本\", value: \"icon-text\" },\n  { title: \"头像文本\", value: \"avatar-text\" },\n  { title: \"数字\", value: \"number\" },\n  { title: \"进度条\", value: \"progress\" },\n  { title: \"百分比\", value: \"percent\" },\n  { title: \"标签\", value: \"tag\" },\n  { title: \"日期\", value: \"date\" },\n  { title: \"日期时间\", value: \"datetime\" },\n  { title: \"自定义\", value: \"custom\" },\n  { title: \"静态枚举\", value: \"enum\" },\n  { title: \"组件\", value: \"component\" },\n];\n\n// 所有格式配置的映射\nconst formatSettersMap = {\n  text: textFormat,\n  \"avatar-text\": avatarTextFormat,\n  number: numberFormat,\n  progress: progressFormat,\n  percent: percentFormat,\n  tag: tagFormat,\n  date: dateFormat,\n  datetime: datetimeFormat,\n  custom: customFormat,\n  enum: enumFormat,\n  component: componentFormat,\n};\n\n// 获取指定格式的配置项\nexport const getFormatOptionsPrototype = () => {\n  return {\n    name: \"formatOptions\",\n    title: {\n      label: \"格式化选项\",\n      tip: \"formatOptions | 格式化配置选项\",\n    },\n    propType: \"object\",\n    setter: {\n      componentName: \"ObjectSetter\",\n      props: (field) => {\n        const formatValue = field.parent.getPropValue(\"format\");\n\n        if (formatValue) {\n          return {\n            config: {\n              items: formatSettersMap[formatValue] || [],\n            },\n          };\n        }\n\n        return {};\n      },\n    },\n  };\n};\n\n// 低码配置说明：\n// enum 格式支持 type（select/switch）和 options（枚举选项数组），可用于 select 下拉、switch 开关等静态枚举场景。\n// options: [{ label: '显示文本', value: '实际值', color: '可选颜色' }]\n// type: 'select' | 'switch'\n\n// component 格式支持渲染注册的业务组件，用于在表格中展示复杂的组件内容。\n// componentName: string - 注册的组件名称\n// componentProps: object - 传递给组件的额外属性\n// 组件会自动接收到 value、record、index、dataIndex、previewInTable、preview 等属性\n","import { createEventSetters } from \"../../_event\";\nimport snippets from \"./snippets\";\nimport { ButtonPosition } from \"../../_position/button-position\";\nimport { createButtonListSetters } from \"../../_setter-snippet/button\";\nimport { getFormatOptionsPrototype, formatTypeOptions } from \"./format\";\n\nexport default {\n  snippets,\n  componentName: \"YtTable\",\n  title: \"表格\",\n  category: \"通用\",\n  variables: [\n    { name: \"${uniqueId}_currentPage\", defaultValue: 1, type: \"number\" },\n    { name: \"${uniqueId}_pageSize\", defaultValue: 30, type: \"number\" },\n    { name: \"${uniqueId}_total\", defaultValue: 0, type: \"number\" },\n    { name: \"${uniqueId}_selectedRowKeys\", defaultValue: [], type: \"array\" },\n    { name: \"${uniqueId}_selectedRows\", defaultValue: [], type: \"array\" },\n  ],\n  props: [\n    {\n      name: \"pagination.currentPageKey\",\n      title: { label: \"当前页数\", tip: \"pagination.currentPage | 当前页数\" },\n      propType: \"number\",\n      setter: \"StringSetter\",\n      defaultValue: (target) => {\n        const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n        return `${uniqueId}_currentPage`;\n      },\n      condition: () => false,\n    },\n    {\n      name: \"pagination.pageSizeKey\",\n      title: { label: \"每页条数\", tip: \"pagination.pageSize | 每页条数\" },\n      propType: \"number\",\n      setter: \"StringSetter\",\n      defaultValue: (target) => {\n        const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n        return `${uniqueId}_pageSize`;\n      },\n      condition: () => false,\n    },\n    {\n      name: \"pagination.totalKey\",\n      title: { label: \"数据总数\", tip: \"pagination.total | 数据总数\" },\n      propType: \"number\",\n      setter: \"StringSetter\",\n      defaultValue: (target) => {\n        const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n        return `${uniqueId}_total`;\n      },\n      condition: () => false,\n    },\n    {\n      name: \"rowSelection.selectedRowKeysKey\",\n      title: {\n        label: \"选中行Key\",\n        tip: \"rowSelection.selectedRowKeys | 指定选中项的 key 数组\",\n      },\n      propType: \"string\",\n      setter: \"StringSetter\",\n      defaultValue: (target) => {\n        const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n        return `${uniqueId}_selectedRowKeys`;\n      },\n      condition: () => false,\n    },\n    {\n      name: \"rowSelection.selectedRowsKey\",\n      title: {\n        label: \"选中行数据\",\n        tip: \"rowSelection.selectedRows | 选中行数据\",\n      },\n      propType: \"string\",\n      setter: \"StringSetter\",\n      defaultValue: (target) => {\n        const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n        return `${uniqueId}_selectedRows`;\n      },\n      condition: () => false,\n    },\n    {\n      title: \"数据源\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"dataSource\",\n          title: { label: \"表格数据\", tip: \"dataSource | 表格数据\" },\n          propType: \"object\",\n          setter: \"JsonSetter\",\n          supportVariable: true,\n        },\n        {\n          name: \"rowKey\",\n          title: {\n            label: \"行Key\",\n            tip: \"rowKey | 表格行 key 的取值，可以是字符串或一个函数\",\n          },\n          propType: { type: \"oneOfType\", value: [\"string\", \"func\"] },\n          setter: [\n            \"StringSetter\",\n            {\n              componentName: \"FunctionSetter\",\n              props: {\n                template:\n                  \"getRowKey(record,index,${extParams}){\\n// 通过函数获取表格行 key\\nreturn record.id;\\n}\",\n              },\n            },\n            \"VariableSetter\",\n          ],\n          defaultValue: \"id\",\n        },\n      ],\n    },\n    {\n      name: \"columns\",\n      title: { label: \"表格列\", tip: \"表格列的配置描述，具体项见下表\" },\n      setter: {\n        componentName: \"ArraySetter\",\n        props: {\n          itemSetter: {\n            componentName: \"ObjectSetter\",\n            props: {\n              config: {\n                items: [\n                  {\n                    name: \"title\",\n                    title: { label: \"列标题\", tip: \"title | 列标题\" },\n                    propType: { type: \"oneOfType\", value: [\"string\", \"func\"] },\n                    setter: [\n                      \"StringSetter\",\n                      {\n                        componentName: \"SlotSetter\",\n                        title: \"列标题插槽\",\n                        initialValue: {\n                          type: \"JSSlot\",\n                          params: [\"options\"],\n                          value: [],\n                        },\n                      },\n                    ],\n                    isRequired: true,\n                  },\n                  {\n                    name: \"dataIndex\",\n                    title: { label: \"数据字段\", tip: \"dataIndex | 数据字段\" },\n                    propType: \"string\",\n                    setter: \"StringSetter\",\n                    isRequired: true,\n                  },\n                  {\n                    name: \"format\",\n                    title: { label: \"格式化类型\", tip: \"format | 格式化类型\" },\n                    propType: \"string\",\n                    setter: {\n                      componentName: \"SelectSetter\",\n                      props: {\n                        options: formatTypeOptions,\n                      },\n                    },\n                    defaultValue: \"text\",\n                  },\n                  getFormatOptionsPrototype(),\n                  {\n                    name: \"align\",\n                    title: { label: \"对齐方式\", tip: \"align | 对齐方式\" },\n                    propType: {\n                      type: \"oneOf\",\n                      value: [\"left\", \"right\", \"center\"],\n                    },\n                    defaultValue: \"left\",\n                    setter: [\n                      {\n                        componentName: \"RadioGroupSetter\",\n                        props: {\n                          options: [\n                            {\n                              title: \"left\",\n                              value: \"left\",\n                            },\n                            {\n                              title: \"right\",\n                              value: \"right\",\n                            },\n                            {\n                              title: \"center\",\n                              value: \"center\",\n                            },\n                          ],\n                        },\n                      },\n                      \"VariableSetter\",\n                    ],\n                  },\n                  {\n                    name: \"lock\",\n                    title: { label: \"列是否固定\", tip: \"fixed | 列是否固定\" },\n                    description:\n                      \"（IE 下无效）列是否固定，可选 true (等效于 left) left right\",\n                    defaultValue: \"\",\n                    propType: {\n                      type: \"oneOf\",\n                      value: [\"\", \"left\", \"right\"],\n                    },\n                    setter: [\n                      {\n                        componentName: \"RadioGroupSetter\",\n                        props: {\n                          options: [\n                            {\n                              title: \"不固定\",\n                              value: \"\",\n                            },\n                            {\n                              title: \"固定在左侧\",\n                              value: \"left\",\n                            },\n                            {\n                              title: \"固定在右侧\",\n                              value: \"right\",\n                            },\n                          ],\n                        },\n                      },\n                      \"VariableSetter\",\n                    ],\n                  },\n                  {\n                    name: \"width\",\n                    title: { label: \"宽度\", tip: \"width | 宽度\" },\n                    propType: {\n                      type: \"oneOfType\",\n                      value: [\"number\", \"string\"],\n                    },\n                    setter: [\"NumberSetter\", \"StringSetter\", \"VariableSetter\"],\n                  },\n                  {\n                    name: \"hidden\",\n                    title: {\n                      label: \"是否隐藏\",\n                      tip: \"hidden | 是否隐藏当前列\",\n                    },\n                    propType: \"bool\",\n                    setter: \"BoolSetter\",\n                  },\n                  {\n                    name: \"key\",\n                    title: { label: \"React key\", tip: \"key | React需要的key\" },\n                    propType: \"string\",\n                    setter: \"StringSetter\",\n                  },\n                ],\n              },\n            },\n            initialValue: { title: \"标题\" },\n          },\n        },\n      },\n    },\n    {\n      title: \"操作列\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"operateButtonsEnable\",\n          title: { label: \"显示操作列\" },\n          propType: \"bool\",\n          setter: \"BoolSetter\",\n        },\n        {\n          name: \"operateButtons\",\n          title: {\n            label: \"操作列按钮\",\n          },\n          setter: createButtonListSetters({\n            position: ButtonPosition.TABLE_OPERATE_BUTTONS,\n          }),\n          condition: {\n            type: \"JSFunction\",\n            value:\n              'target => !!target.getProps().getPropValue(\"operateButtonsEnable\")',\n          },\n        },\n      ],\n    },\n    {\n      title: \"列设置\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"columnSetting.enable\",\n          title: {\n            label: \"启用列设置\",\n            tip: \"启用表格列的显示/隐藏、顺序和固定功能\",\n          },\n          propType: \"bool\",\n          setter: \"BoolSetter\",\n          defaultValue: false,\n        },\n        {\n          name: \"columnSetting.storageKey\",\n          title: { label: \"存储标识\", tip: \"用于本地存储列设置信息的唯一标识\" },\n          propType: \"string\",\n          setter: \"StringSetter\",\n          condition: {\n            type: \"JSFunction\",\n            value:\n              'target => !!target.getProps().getPropValue(\"columnSetting.enable\")',\n          },\n          defaultValue: (target) => {\n            const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n            return `${uniqueId}_columnSetting`;\n          },\n        },\n      ],\n    },\n    {\n      title: \"外观\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"tableStyle.bordered\",\n          title: {\n            label: \"显示边框\",\n            tip: \"bordered | 是否展示外边框和列边框\",\n          },\n          propType: \"bool\",\n          setter: \"BoolSetter\",\n        },\n        {\n          name: \"tableStyle.emptyText\",\n          title: { label: \"空数据文案\", tip: \"emptyText | 空数据文案\" },\n          propType: \"string\",\n          setter: \"StringSetter\",\n          defaultValue: \"暂无数据\",\n        },\n      ],\n    },\n    {\n      title: \"分页\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"pagination.enable\",\n          title: { label: \"显示分页\", tip: \"pagination | 显示分页\" },\n          propType: \"bool\",\n          setter: \"BoolSetter\",\n        },\n        {\n          name: \"pagination.pageSizeOptions\",\n          title: {\n            label: \"每页条数\",\n            tip: \"pagination.pageSizeOptions | 每页条数\",\n          },\n          propType: \"array\",\n          setter: {\n            componentName: \"SelectSetter\",\n            props: {\n              mode: \"multiple\",\n              options: [\n                {\n                  title: \"10\",\n                  value: 10,\n                },\n                {\n                  title: \"20\",\n                  value: 20,\n                },\n                {\n                  title: \"30\",\n                  value: 30,\n                },\n                {\n                  title: \"50\",\n                  value: 50,\n                },\n                {\n                  title: \"100\",\n                  value: 100,\n                },\n              ],\n            },\n          },\n          condition: {\n            type: \"JSFunction\",\n            value:\n              'target => !!target.getProps().getPropValue(\"pagination.enable\")',\n          },\n        },\n      ],\n    },\n    {\n      title: \"工具栏\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"toolbar.enable\",\n          title: { label: \"显示工具栏\" },\n          propType: \"bool\",\n          setter: \"BoolSetter\",\n        },\n        {\n          name: \"toolbar.selectedButtons\",\n          title: {\n            label: \"批量操作\",\n          },\n          setter: createButtonListSetters({\n            position: ButtonPosition.TABLE_SELECTED_BUTTONS,\n          }),\n          condition: {\n            type: \"JSFunction\",\n            value:\n              'target => !!target.getProps().getPropValue(\"toolbar.enable\")',\n          },\n        },\n        {\n          name: \"toolbar.globalButtons\",\n          title: {\n            label: \"全局操作\",\n          },\n          setter: createButtonListSetters({\n            position: ButtonPosition.TABLE_TOOL_BUTTONS,\n          }),\n          condition: {\n            type: \"JSFunction\",\n            value:\n              'target => !!target.getProps().getPropValue(\"toolbar.enable\")',\n          },\n        },\n      ],\n    },\n    // {\n    //   title: '滚动',\n    //   display: 'block',\n    //   type: 'group',\n    //   items: [\n    //     {\n    //       name: 'scroll.scrollToFirstRowOnChange',\n    //       title: {\n    //         label: '自动滚动',\n    //         tip: 'scroll.scrollToFirstRowOnChange | 是否自动滚动到表格顶部',\n    //       },\n    //       propType: 'bool',\n    //       setter: 'BoolSetter',\n    //       defaultValue: true,\n    //     },\n    //     {\n    //       name: 'scroll.x',\n    //       title: {\n    //         label: '横向滚动',\n    //         tip:\n    //           'scroll.x | \t设置横向滚动，也可用于指定滚动区域的宽，可以设置为像素值，百分比，true 和 max-content',\n    //       },\n    //       propType: { type: 'oneOfType', value: ['number', 'bool'] },\n    //       setter: ['NumberSetter', 'BoolSetter', 'VariableSetter'],\n    //     },\n    //     {\n    //       name: 'scroll.y',\n    //       title: {\n    //         label: '纵向滚动',\n    //         tip: 'scroll.y | \t设置纵向滚动，也可用于指定滚动区域的高，可以设置为像素值',\n    //       },\n    //       propType: 'number',\n    //       setter: ['NumberSetter', 'VariableSetter'],\n    //     },\n    //   ],\n    // },\n    {\n      title: \"行选择器\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"rowSelection.enable\",\n          title: {\n            label: \"启用行选择器\",\n            tip: \"rowSelection.enable | 启用行选择器\",\n          },\n          propType: \"bool\",\n          setter: \"BoolSetter\",\n        },\n      ],\n    },\n    ...createEventSetters({\n      position: ButtonPosition.TABLE_EVENT,\n      title: \"配置表格回调\",\n    }),\n  ],\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 { createEventSetters } from \"../../_event\";\nimport { ButtonPosition } from \"../../_position/button-position\";\nimport { createButtonListSetters } from \"../../_setter-snippet/button\";\nimport {\n  getFormItemMetas,\n  getFormItemOptions,\n  registerFormItemMeta,\n} from \"../../_utils/form-item-register/meta\";\nconst metas = getFormItemMetas();\n\nregisterFormItemMeta({\n  componentName: \"group\",\n  title: \"标题\",\n  position: [\"form\"],\n  props: [\n    {\n      name: \"tip\",\n      title: {\n        label: \"提示信息\",\n        // tip: '是否允许清除',\n      },\n      propType: \"string\",\n      setter: \"StringSetter\",\n    },\n  ],\n  getFormItemDefaultProps: () => {\n    return {\n      placeholder: \"请输入\",\n    };\n  },\n});\n\nexport default {\n  componentName: \"YtForm\",\n  title: \"表单\",\n  category: \"通用\",\n  variables: [{ name: \"${uniqueId}_values\", defaultValue: {}, type: \"object\" }],\n  props: [\n    {\n      name: \"valuesKey\",\n      title: \"表单值\",\n      propType: \"string\",\n      setter: \"StringSetter\",\n      defaultValue: (target) => {\n        const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n        return `${uniqueId}_values`;\n      },\n      condition: () => false,\n    },\n    {\n      name: \"items\",\n      title: \"表单项配置\",\n      setter: {\n        componentName: \"ArraySetter\",\n        props: {\n          useQuickAdd: {\n            mode: \"component\",\n            optionKey: \"componentName\",\n          },\n          itemSetter: {\n            componentName: \"ObjectSetter\",\n            props: {\n              config: {\n                items: [\n                  {\n                    name: \"label\",\n                    title: \"字段名称\",\n                    setter: \"StringSetter\",\n                    isRequired: true,\n                  },\n                  {\n                    name: \"name\",\n                    title: \"字段编码\",\n                    setter: \"StringSetter\",\n                    isRequired: true,\n                  },\n                  {\n                    name: \"componentName\",\n                    title: \"组件类型\",\n                    setter: {\n                      componentName: \"ComponentSetter\",\n                      props: {\n                        dataSource: getFormItemOptions(),\n                      },\n                    },\n                    extraProps: {\n                      setValue(target, value) {\n                        const getFormItemDefaultProps = metas.find(\n                          (item) => item.componentName === value,\n                        )?.getFormItemDefaultProps;\n                        if (getFormItemDefaultProps) {\n                          const defaultProps = getFormItemDefaultProps(target);\n                          const keys = Object.keys(defaultProps);\n                          keys.forEach((key) => {\n                            target?.parent?.setPropValue?.(\n                              key,\n                              defaultProps[key],\n                            );\n                          });\n                        }\n                      },\n                    },\n                  },\n                  ...getFormItemMetas(),\n                ],\n              },\n            },\n            initialValue: (field) => {\n              const items = field.getValue() || [];\n              return {\n                componentName: \"YtInput\",\n                label: `输入框${items.length + 1}`,\n                name: `input${items.length + 1}`,\n                span: \"1\",\n                placeholder: \"请输入\",\n              };\n            },\n          },\n        },\n      },\n    },\n    {\n      name: \"preview\",\n      title: {\n        label: \"开启预览态\",\n      },\n      propType: \"bool\",\n      setter: \"BoolSetter\",\n    },\n\n    {\n      title: \"表单默认值\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"defaultValue\",\n          title: \"数据源\",\n          propType: {\n            type: \"oneOfType\",\n            value: [\"object\"],\n          },\n          setter: [\"VariableSetter\"],\n        },\n      ],\n    },\n    {\n      name: \"footer\",\n      title: { label: \"操作按钮\", tip: \"表单底部操作按钮\" },\n      propType: \"node\",\n      setter: createButtonListSetters({\n        position: ButtonPosition.FORM_FOOTER,\n      }),\n    },\n    ...createEventSetters({\n      position: ButtonPosition.FORM_EVENT,\n      title: \"配置表单回调\",\n    }),\n    {\n      title: \"样式\",\n      display: \"accordion\",\n      tab: \"style\",\n      setter: {\n        componentName: \"ObjectSetter\",\n        props: {\n          config: {\n            items: [\n              {\n                name: \"layoutMode\",\n                title: \"布局模式\",\n                setter: {\n                  componentName: \"RadioGroupSetter\",\n                  props: {\n                    options: [\n                      {\n                        title: \"单列\",\n                        value: \"single\",\n                      },\n                      {\n                        title: \"多列\",\n                        value: \"multiple\",\n                      },\n                    ],\n                  },\n                },\n                defaultValue: \"single\",\n              },\n              {\n                name: \"cols\",\n                title: \"一行几列\",\n                setter: {\n                  componentName: \"RadioGroupSetter\",\n                  props: {\n                    options: [\n                      {\n                        title: \"1\",\n                        value: 1,\n                      },\n                      {\n                        title: \"2\",\n                        value: 2,\n                      },\n                      {\n                        title: \"3\",\n                        value: 3,\n                      },\n                      {\n                        title: \"4\",\n                        value: 4,\n                      },\n                      /* {\n                      title: '5',\n                      value: 5,\n                    }, */\n                      {\n                        title: \"6\",\n                        value: 6,\n                      },\n                    ],\n                  },\n                },\n                defaultValue: 1,\n                condition: (target) => {\n                  const layoutMode = target\n                    .getProps()\n                    .getPropValue(\"layoutMode\");\n                  return layoutMode === \"multiple\";\n                },\n              },\n              {\n                name: \"layout\",\n                title: \"标签位置\",\n                setter: {\n                  componentName: \"SelectSetter\",\n                  props(field) {\n                    return {\n                      mode: \"single\",\n                      options: [\n                        {\n                          label: \"输入框上方\",\n                          value: \"vertical\",\n                        },\n                        {\n                          label: \"输入框左侧\",\n                          value: \"horizontal\",\n                        },\n                      ],\n                    };\n                  },\n                },\n                defaultValue: \"vertical\",\n              },\n            ],\n          },\n        },\n      },\n    },\n  ],\n  snippets: [\n    {\n      title: \"表单\",\n      screenshot: \"https://i.lovrabet.com/c/AZlf-ODvcACsw89JaghkoQ.png\",\n      schema: {\n        componentName: \"YtForm\",\n        props: {\n          items: [\n            {\n              componentName: \"YtInput\",\n              label: \"输入框1\",\n              name: \"input1\",\n              placeholder: \"请输入\",\n              span: \"1\",\n            },\n          ],\n          _context: {\n            type: \"JSExpression\",\n            value: \"this\",\n          },\n        },\n      },\n    },\n  ],\n};\n","import { createEventSetters } from \"../../_event\";\nimport { ButtonPosition } from \"../../_position/button-position\";\nimport {\n  getFilterItemMetas,\n  getFilterItemOptions,\n} from \"../../_utils/form-item-register/meta\";\n\nconst metas = getFilterItemMetas();\n\nexport default {\n  componentName: \"YtFilter\",\n  title: \"筛选栏\",\n  category: \"通用\",\n  variables: [{ name: \"${uniqueId}_values\", defaultValue: {}, type: \"object\" }],\n  props: [\n    {\n      name: \"valuesKey\",\n      title: \"表单值\",\n      propType: \"string\",\n      setter: \"StringSetter\",\n      defaultValue: (target) => {\n        const uniqueId = target.getProps().getPropValue(\"_uniqueId\");\n        return `${uniqueId}_values`;\n      },\n      condition: () => false,\n    },\n    {\n      name: \"items\",\n      title: \"筛选项配置\",\n      setter: {\n        componentName: \"ArraySetter\",\n        props: {\n          useQuickAdd: {\n            optionKey: \"componentName\",\n            mode: \"component\",\n          },\n          itemSetter: {\n            componentName: \"ObjectSetter\",\n            props: {\n              config: {\n                items: [\n                  {\n                    name: \"label\",\n                    title: \"字段名称\",\n                    setter: \"StringSetter\",\n                    isRequired: true,\n                  },\n                  {\n                    name: \"name\",\n                    title: \"字段编码\",\n                    setter: \"StringSetter\",\n                    isRequired: true,\n                  },\n                  {\n                    name: \"componentName\",\n                    title: \"组件类型\",\n                    extraProps: {\n                      setValue(target, value) {\n                        const getFormItemDefaultProps = metas.find(\n                          (item) => item.componentName === value,\n                        )?.getFormItemDefaultProps;\n                        if (getFormItemDefaultProps) {\n                          const defaultProps = getFormItemDefaultProps(target);\n                          const keys = Object.keys(defaultProps);\n                          keys.forEach((key) => {\n                            target?.parent?.setPropValue?.(\n                              key,\n                              defaultProps[key],\n                            );\n                          });\n                        }\n                      },\n                    },\n                    setter: {\n                      componentName: \"ComponentSetter\",\n                      props: {\n                        // mode: 'single',\n                        dataSource: getFilterItemOptions(),\n                      },\n                    },\n                  },\n                  ...metas,\n                ],\n              },\n            },\n            initialValue: (field) => {\n              const items = field.getValue() || [];\n              return {\n                componentName: \"YtInput\",\n                label: `输入框${items.length + 1}`,\n                name: `input${items.length + 1}`,\n                span: \"1\",\n                placeholder: \"请输入\",\n              };\n            },\n          },\n        },\n      },\n    },\n    {\n      title: \"筛选项默认值\",\n      display: \"block\",\n      type: \"group\",\n      items: [\n        {\n          name: \"defaultValue\",\n          title: \"数据源\",\n          propType: {\n            type: \"oneOfType\",\n            value: [\"object\"],\n          },\n          setter: [\"VariableSetter\"],\n        },\n      ],\n    },\n    ...createEventSetters({\n      position: ButtonPosition.FILTER_EVENT,\n      title: \"配置筛选栏回调\",\n    }),\n    {\n      title: \"样式\",\n      type: \"group\",\n      display: \"block\",\n      tab: \"style\",\n      items: [\n        {\n          name: \"layout\",\n          title: \"标签位置\",\n          setter: {\n            componentName: \"SelectSetter\",\n            props(field) {\n              return {\n                mode: \"single\",\n                options: [\n                  {\n                    label: \"输入框上方\",\n                    value: \"vertical\",\n                  },\n                  {\n                    label: \"输入框左侧\",\n                    value: \"horizontal\",\n                  },\n                ],\n              };\n            },\n          },\n          defaultValue: \"vertical\",\n        },\n      ],\n    },\n  ],\n  snippets: [\n    {\n      title: \"筛选栏\",\n      screenshot: \"https://i.lovrabet.com/c/AZlf-JUwcACKfmTaiM-Omw.png\",\n      schema: {\n        componentName: \"YtFilter\",\n        props: {\n          items: [\n            {\n              componentName: \"YtInput\",\n              label: \"输入框1\",\n              name: \"input1\",\n              placeholder: \"请输入\",\n              span: \"1\",\n            },\n          ],\n          _context: {\n            type: \"JSExpression\",\n            value: \"this\",\n          },\n        },\n      },\n    },\n  ],\n};\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","/**\n * 表单配置组件类型。自定义组件类型 和 智能组件类型\n */\nexport enum SMART_COMPONENT_TYPE {\n  CUSTOM = \"custom\",\n  CREATE = \"create\",\n  FILTER = \"filter\",\n  UPDATE = \"update\",\n  DETAIL = \"detail\",\n  TABLE = \"table\",\n}\n\nconst SMART_API_BASE = \"/api/ai-tools/api/v2/lr-smart/\";\n\n/**\n * 智能组件类型对应的 api\n */\nexport const SMART_COMPONENT_API = {\n  [SMART_COMPONENT_TYPE.CREATE]: `${SMART_API_BASE}create-props`,\n  [SMART_COMPONENT_TYPE.FILTER]: `${SMART_API_BASE}filter-props`,\n  [SMART_COMPONENT_TYPE.UPDATE]: `${SMART_API_BASE}update-props`,\n  [SMART_COMPONENT_TYPE.DETAIL]: `${SMART_API_BASE}detail-props`,\n  [SMART_COMPONENT_TYPE.TABLE]: `${SMART_API_BASE}table-props`,\n};\n","import { ytFetch } from \"@yuntoo/smart-schema-converter\";\nimport { SMART_COMPONENT_API } from \"./const\";\n\n/**\n * 通过 datasetId 获取完整表单项配置\n * @param datasetId 数据集 ID\n * @returns 表单项配置\n */\nexport const getColumnsByDatasetId = async (datasetId: number) => {\n  try {\n    const res = await ytFetch.get(`/smartapi/dataset/get-driven-data`, {\n      id: datasetId,\n    });\n\n    return res;\n  } catch (error) {\n    console.error(\"获取模型驱动信息失败:\", error);\n    return {};\n  }\n};\n\n/**\n * 通过 datasetId 获取完整表单项配置\n * @param datasetId 数据集 ID\n * @returns 表单项配置\n */\nexport const getChartDatasetColumnByDatasetId = async (datasetId: number) => {\n  try {\n    const res = await ytFetch.get(\n      `/api/smartapi/chart-dataset-column/getByDatasetId`,\n      {\n        datasetId,\n      },\n    );\n\n    return res;\n  } catch (error) {\n    console.error(\"获取模型驱动信息失败:\", error);\n    return {};\n  }\n};\n\n/**\n * 智能组件类型，根据组件类型获取表单配置\n * @param componentType 组件类型\n * @param newData 新的数据\n * @param nodeId 节点 ID，用于标识当前编辑的节点\n * @param extraOptions 额外的参数\n * @returns 表单配置\n */\nexport const smartComponentTypeToFormProps = async (\n  modelConfig: any,\n  componentType: string,\n  nodeId: string,\n  extraOptions?: Record<string, any>,\n) => {\n  try {\n    const formProps: any = await ytFetch.post(\n      `${SMART_COMPONENT_API[componentType]}`,\n      {\n        modelConfig,\n        options: {\n          mode: componentType,\n          nodeId,\n          ...extraOptions,\n        },\n      },\n    );\n\n    return formProps;\n  } catch (error) {\n    console.error(\"转换模型失败:\", error);\n    return {};\n  }\n};\n\n/**\n * 获取应用下所有数据集的状态列表（包含图表生成状态）\n * @param appCode 应用 code\n * @returns 数据集状态列表\n */\nexport const getDatasetStatusByAppCode = async (appCode: string) => {\n  try {\n    const res = await ytFetch.get(\n      `/api/smartapi/chart-dataset-column/getDatasetStatusByAppCode`,\n      {\n        appCode,\n      },\n    );\n\n    return res?.datasetIds || [];\n  } catch (error) {\n    console.error(\"获取数据集状态列表失败:\", error);\n    return [];\n  }\n};\n","import { SMART_COMPONENT_TYPE } from \"../const\";\nimport { getColumnsByDatasetId, smartComponentTypeToFormProps } from \"../api\";\n\n// 智能组件公共 meta 配置\nexport default function (componenType: SMART_COMPONENT_TYPE) {\n  return [\n    {\n      name: \"meta.datasetId\",\n      title: {\n        label: \"关联数据源\",\n        tip: \"关联数据源\",\n      },\n      setter: {\n        componentName: \"SelectSetter\",\n        props: {\n          mode: \"single\",\n          options: () => {\n            const datasetList = AliLowCodeEngine?.config?.get(\n              \"datasetListInAppCode\",\n            );\n\n            if (!datasetList || datasetList.length === 0) return [];\n\n            return datasetList.map((item: any) => ({\n              label: item.name,\n              value: item.id,\n              source: item.source,\n              code: item.code,\n              id: item.id,\n            }));\n          },\n        },\n      },\n      extraProps: {\n        supportVariable: false,\n        onChange: (newValue, field) => {\n          field.node.setExtraPropValue(\"meta.datasetId\", newValue);\n\n          // 读取完整的数据集内容\n          getColumnsByDatasetId(newValue).then((res: any) => {\n            smartComponentTypeToFormProps(\n              res,\n              componenType,\n              field.node.id,\n            ).then((formProps: any) => {\n              // 更新到预览\n              Object.entries(formProps).forEach(([key, value]) => {\n                field.node.setPropValue(key, value);\n              });\n            });\n          });\n        },\n        getValue: (field, val) => {\n          const currentValue = field?.node?.schema?.meta?.datasetId;\n\n          return currentValue ? Number(currentValue) : null;\n        },\n      },\n    },\n    {\n      title: \"自定义属性函数\",\n      display: \"accordion\",\n      collapsed: true,\n      type: \"group\",\n      items: [\n        {\n          setter: {\n            componentName: \"HandlePropsSetter\",\n          },\n          extraProps: {\n            supportVariable: false,\n            condition: {\n              type: \"JSFunction\",\n              value: \"target => !!target?.node?.schema?.meta?.datasetId\",\n            },\n          },\n        },\n      ],\n    },\n    {\n      name: \"customProps\",\n      tab: \"advance\",\n      title: {\n        label: \"自定义属性\",\n      },\n      setter: \"JsonSetter\",\n      extraProps: {\n        supportVariable: false,\n      },\n    },\n  ];\n}\n","import SmartMeta from \"../common/smart-meta\";\nimport { SMART_COMPONENT_TYPE } from \"../const\";\n\nexport default {\n  componentName: \"LrSmartTable\",\n  title: \"智能表格\",\n  category: \"智能组件\",\n  hidden: true,\n  variables: [\n    { name: \"${uniqueId}_currentPage\", defaultValue: 1, type: \"number\" },\n    { name: \"${uniqueId}_pageSize\", defaultValue: 30, type: \"number\" },\n    { name: \"${uniqueId}_total\", defaultValue: 0, type: \"number\" },\n    { name: \"${uniqueId}_selectedRowKeys\", defaultValue: [], type: \"array\" },\n    { name: \"${uniqueId}_selectedRows\", defaultValue: [], type: \"array\" },\n  ],\n  snippets: [\n    {\n      title: \"智能表格\",\n      screenshot: \"https://i.lovrabet.com/c/AZlwMxiUcAChbvyaWmm8eA.png\",\n      schema: {\n        componentName: \"LrSmartTable\",\n      },\n    },\n  ],\n  props: [\n    ...SmartMeta(SMART_COMPONENT_TYPE.TABLE),\n    // 追加表格操作按钮的权限点设置\n    {\n      name: \"customProps.itemResourceCode\",\n      title: \"功能权限点设置\",\n      display: \"accordion\",\n      tab: \"advance\",\n      extraProps: {\n        defaultCollapsed: false,\n        supportVariable: false,\n      },\n      setter: {\n        componentName: \"ObjectSetter\",\n        props: (field) => {\n          const renderActionConfig = (item, name) => {\n            const resourceCodeKey = `${name}_${item.title}`;\n            return {\n              name: resourceCodeKey,\n              title: item.title,\n              setter: {\n                componentName: \"ResourceCodeSetter\",\n                props: {\n                  resourceCode: resourceCodeKey,\n                  resourceName: item.title,\n                },\n              },\n              extraProps: { supportVariable: false },\n            };\n          };\n\n          const node = field.getNode();\n          const operateButtons = node?.getPropValue(\"operateButtons\");\n          const { exportButtons, globalButtons, enable } =\n            node?.getPropValue(\"toolbar\");\n\n          const actionBtns = operateButtons?.map((item) =>\n            renderActionConfig(item, \"operateButtons\"),\n          );\n\n          if (enable) {\n            actionBtns.push(\n              renderActionConfig(exportButtons.mainButton, \"exportButtons\"),\n              ...globalButtons?.map((btn) =>\n                renderActionConfig(btn, \"globalButtons\"),\n              ),\n            );\n          }\n\n          return { config: { items: actionBtns } };\n        },\n      },\n    },\n    // 表格单元格 format 设置\n    {\n      name: \"customProps.tableFormat\",\n      tab: \"advance\",\n      title: \"表格单元格展示设置\",\n      display: \"accordion\",\n      extraProps: {\n        supportVariable: false,\n        condition: {\n          type: \"JSFunction\",\n          value:\n            \"target => { const columns = target?.node?.getPropValue?.('columns'); return columns && columns.length > 0 && columns.some(col => col.type); }\",\n        },\n      },\n      setter: {\n        componentName: \"TableFormatSetter\",\n        props: (field) => {\n          return {\n            columns: field.getNode().getPropValue(\"columns\"),\n          };\n        },\n      },\n    },\n  ],\n  configure: {\n    component: {\n      isContainer: false,\n      disableBehaviors: [\"copy\"],\n    },\n  },\n};\n","import classnames from \"classnames\";\nimport { isEqual, cloneDeep, isEmpty } from \"lodash\";\nimport { createInterpret } from \"@yuntoo/page-datasource-engine\";\nimport {\n  IPublicTypeNodeSchema,\n  IPublicTypeNodeData,\n  IPublicTypeJSONValue,\n  IPublicTypeCompositeValue,\n} from \"@yuntoo/page-types\";\nimport {\n  checkPropTypes,\n  isI18nData,\n  isJSExpression,\n  isJSFunction,\n} from \"@yuntoo/page-utils\";\nimport adapter from \"../adapter\";\nimport divFactory from \"../components/Div\";\nimport visualDomFactory from \"../components/VisualDom\";\nimport contextFactory from \"../context\";\n\nimport {\n  forEach,\n  getValue,\n  parseData,\n  parseExpression,\n  parseThisRequiredExpression,\n  parseI18n,\n  isSchema,\n  isFileSchema,\n  transformArrayToMap,\n  transformStringToFunction,\n  getI18n,\n  getFileCssName,\n  capitalizeFirstLetter,\n  isVariable,\n  isJSSlot,\n  instanceRegistry,\n  IInstanceEventListener,\n  IRendererInstanceInfo,\n} from \"../utils\";\nimport {\n  IBaseRendererProps,\n  INodeInfo,\n  IBaseRenderComponent,\n  IBaseRendererContext,\n  IRendererAppHelper,\n  DataSource,\n} from \"../types\";\nimport { compWrapper } from \"../hoc\";\nimport { IComponentConstruct, leafWrapper } from \"../hoc/leaf\";\nimport logger from \"../utils/logger\";\nimport isUseLoop from \"../utils/is-use-loop\";\n\n// TODO: 此处需要优化，不能直接导入 meta 文件，因为 meta 文件中可能包含一些非必要的数据，导致打包体积过大\nimport YtTableMeta from \"../../../antd-meta/src/components/yt-table/meta\";\nimport YtFormMeta from \"../../../antd-meta/src/components/yt-form/meta\";\nimport YtFilterMeta from \"../../../antd-meta/src/components/yt-filter/meta\";\nimport LrSmartTableMeta from \"../../../antd-smart/src/lr-smart-table/meta\";\n\nconst metaAllVariables = (() => {\n  return [YtTableMeta, YtFormMeta, YtFilterMeta, LrSmartTableMeta].map(\n    (meta) => {\n      return {\n        componentName: meta.componentName,\n        variables: meta.variables || [],\n      };\n    },\n  );\n})();\n\n/**\n * execute method in schema.lifeCycles with context\n * @PRIVATE\n */\nexport function executeLifeCycleMethod(\n  context: any,\n  schema: IPublicTypeNodeSchema,\n  method: string,\n  args: any,\n  thisRequiredInJSE: boolean | undefined,\n): any {\n  if (!context || !isSchema(schema) || !method) {\n    return;\n  }\n  const lifeCycleMethods = getValue(schema, \"lifeCycles\", {});\n  let fn = lifeCycleMethods[method];\n\n  if (!fn) {\n    return;\n  }\n\n  // TODO: cache\n  if (isJSExpression(fn) || isJSFunction(fn)) {\n    fn = thisRequiredInJSE\n      ? parseThisRequiredExpression(fn, context)\n      : parseExpression(fn, context);\n  }\n\n  if (typeof fn !== \"function\") {\n    logger.error(`生命周期${method}类型不符`, fn);\n    return;\n  }\n\n  try {\n    return fn.apply(context, args);\n  } catch (e) {\n    logger.error(`[${schema.componentName}]生命周期${method}出错`, e);\n  }\n}\n\n/**\n * get children from a node schema\n * @PRIVATE\n */\nexport function getSchemaChildren(schema: IPublicTypeNodeSchema | undefined) {\n  if (!schema) {\n    return;\n  }\n\n  if (!schema.props) {\n    return schema.children;\n  }\n\n  if (!schema.children) {\n    return schema.props.children;\n  }\n\n  if (!schema.props.children) {\n    return schema.children;\n  }\n\n  let result = ([] as IPublicTypeNodeData[]).concat(schema.children);\n  if (Array.isArray(schema.props.children)) {\n    result = result.concat(schema.props.children);\n  } else {\n    result.push(schema.props.children);\n  }\n  return result;\n}\n\nexport default function baseRendererFactory(): IBaseRenderComponent {\n  const { BaseRenderer: customBaseRenderer } = adapter.getRenderers() as {\n    BaseRenderer?: IBaseRenderComponent;\n  };\n\n  if (customBaseRenderer) {\n    return customBaseRenderer;\n  }\n\n  const { Component, createElement } = adapter.getRuntime();\n  const Div = divFactory();\n  const VisualDom = visualDomFactory();\n  const AppContext = contextFactory();\n\n  const DESIGN_MODE = {\n    EXTEND: \"extend\",\n    BORDER: \"border\",\n    PREVIEW: \"preview\",\n  };\n  const OVERLAY_LIST = [\"Dialog\", \"Overlay\", \"Animate\", \"ConfigProvider\"];\n  const DEFAULT_LOOP_ARG_ITEM = \"item\";\n  const DEFAULT_LOOP_ARG_INDEX = \"index\";\n  let scopeIdx = 0;\n\n  return class BaseRenderer extends Component<\n    IBaseRendererProps,\n    Record<string, any>\n  > {\n    [key: string]: any;\n\n    static displayName = \"BaseRenderer\";\n\n    static defaultProps = {\n      __schema: {},\n    };\n\n    static contextType = AppContext;\n\n    i18n: any;\n    getLocale: any;\n    setLocale: any;\n    dataSourceMap: Record<string, any> = {};\n\n    __namespace = \"base\";\n    __compScopes: Record<string, any> = {};\n    __instanceMap: Record<string, any> = {};\n    __dataHelper: any;\n\n    /**\n     * keep track of customMethods added to this context\n     *\n     * @type {any}\n     */\n    __customMethodsList: any[] = [];\n    __parseExpression: any;\n    __ref: any;\n\n    /**\n     * reference of style element contains schema.css\n     *\n     * @type {any}\n     */\n    __styleElement: any;\n\n    /**\n     * 正在处理数据源重载的标记，用于防止无限循环\n     * @private\n     */\n    __isReloadingDataSource = false;\n\n    /**\n     * 数据源是否已完成初始化加载的标记\n     * @private\n     */\n    __dataSourceInitialized = false;\n\n    /**\n     * 实例唯一标识\n     * @private\n     */\n    __instanceId: string;\n\n    /**\n     * 跨实例通信的事件监听器清理函数列表\n     * @private\n     */\n    __eventCleanupFunctions: Array<() => void> = [];\n\n    constructor(props: IBaseRendererProps, context: IBaseRendererContext) {\n      super(props, context);\n      this.context = context;\n      this.__parseExpression = (str: string, self: any) => {\n        return parseExpression({\n          str,\n          self,\n          thisRequired: props?.thisRequiredInJSE,\n          logScope: props.componentName,\n        });\n      };\n\n      // 生成实例唯一标识\n      this.__instanceId = this.__generateInstanceId(props);\n\n      this.__beforeInit(props);\n      this.__init(props);\n      this.__afterInit(props);\n      this.__debug(`constructor - ${props?.__schema?.fileName}`);\n    }\n\n    __beforeInit(_props: IBaseRendererProps) {}\n\n    __init(props: IBaseRendererProps) {\n      this.__compScopes = {};\n      this.__instanceMap = {};\n      this.__bindCustomMethods(props);\n      this.__initI18nAPIs();\n      this.__registerInstance(props);\n    }\n\n    __afterInit(_props: IBaseRendererProps) {}\n\n    static getDerivedStateFromProps(props: IBaseRendererProps, state: any) {\n      const result = executeLifeCycleMethod(\n        this,\n        props?.__schema,\n        \"getDerivedStateFromProps\",\n        [props, state],\n        props.thisRequiredInJSE,\n      );\n      return result === undefined ? null : result;\n    }\n\n    async getSnapshotBeforeUpdate(...args: any[]) {\n      this.__executeLifeCycleMethod(\"getSnapshotBeforeUpdate\", args);\n      this.__debug(\n        `getSnapshotBeforeUpdate - ${this.props?.__schema?.fileName}`,\n      );\n    }\n\n    async componentDidMount(...args: any[]) {\n      // 页面组件挂载时，强制加载所有初始化数据源\n      this.reloadDataSourceIfNeeded(true);\n      this.__executeLifeCycleMethod(\"componentDidMount\", args);\n      this.__debug(`componentDidMount - ${this.props?.__schema?.fileName}`);\n\n      // 监听全局页面跳转事件\n      if (typeof window !== \"undefined\") {\n        window.addEventListener(\n          \"APPPLATFORM:app-route-change\",\n          this.__handleGlobalPageJump,\n        );\n      }\n    }\n\n    async componentDidUpdate(...args: any[]) {\n      this.__executeLifeCycleMethod(\"componentDidUpdate\", args);\n      this.__debug(`componentDidUpdate - ${this.props.__schema.fileName}`);\n    }\n\n    async componentWillUnmount(...args: any[]) {\n      console.log(\"componentWillUnmount\", this.props);\n      this.__executeLifeCycleMethod(\"componentWillUnmount\", args);\n      this.__debug(`componentWillUnmount - ${this.props?.__schema?.fileName}`);\n\n      // 注销实例\n      this.__unregisterInstance();\n\n      // 清理事件监听\n      if (typeof window !== \"undefined\") {\n        window.removeEventListener(\n          \"APPPLATFORM:app-route-change\",\n          this.__handleGlobalPageJump,\n        );\n      }\n    }\n\n    async componentDidCatch(...args: any[]) {\n      this.__executeLifeCycleMethod(\"componentDidCatch\", args);\n      logger.warn(args);\n    }\n\n    /**\n     * 智能重载数据源方法\n     * 根据不同的触发场景，决定是否需要重新请求数据源\n     * @param forceReload 是否强制重新加载所有isInit=true的数据源（页面初始化时使用）\n     * @returns Promise\n     */\n    reloadDataSourceIfNeeded = (forceReload = false) =>\n      new Promise((resolve, reject) => {\n        this.__debug(\"智能检查数据源重载\", {\n          forceReload,\n          isReloading: this.__isReloadingDataSource,\n          initialized: this.__dataSourceInitialized,\n        });\n\n        if (!this.__dataHelper) {\n          return resolve({});\n        }\n\n        // 防止重复调用\n        if (this.__isReloadingDataSource) {\n          this.__debug(\"数据源正在重载中，跳过本次请求\");\n          return resolve({});\n        }\n\n        try {\n          const dsNeedReload: string[] = [];\n\n          if (forceReload) {\n            // 强制重载模式：加载所有isInit=true的数据源，不检查参数变化\n            this.__debug(\"强制重载模式：加载所有初始化数据源\");\n            this.__isReloadingDataSource = true;\n\n            // 收集所有需要初始化的数据源（isInit=true）\n            Object.entries(this.dataSourceMap).forEach(([dsId, ds]) => {\n              try {\n                // 检查数据源配置中的isInit属性\n                const dataSourceConfig =\n                  this.props.__schema?.dataSource?.list?.find(\n                    (item: any) => item.id === dsId,\n                  );\n                if (dataSourceConfig?.isInit === true) {\n                  dsNeedReload.push(dsId);\n                  this.__debug(`添加初始化数据源: ${dsId}`);\n                }\n\n                // 同时为所有数据源建立缓存，避免后续智能检查时误判\n                const optionsFunc = ds.options;\n                if (optionsFunc && (optionsFunc as any).__dependsOnExpression) {\n                  const currentOptions = optionsFunc();\n                  (ds as any).__cachedOptions = cloneDeep(currentOptions);\n                  this.__debug(`为数据源 ${dsId} 建立缓存`, currentOptions);\n                }\n              } catch (e) {\n                console.error(`处理数据源 ${dsId} 时出错:`, e);\n              }\n            });\n          } else {\n            // 智能检查模式：只检查参数变化的数据源\n            this.__debug(\"智能检查模式：检查参数变化的数据源\");\n            this.__isReloadingDataSource = true;\n            Object.entries(this.dataSourceMap).forEach(([dsId, ds]) => {\n              try {\n                // 获取数据源的options函数\n                const optionsFunc = ds.options;\n\n                // 检查是否依赖 JSExpression\n                if (optionsFunc && (optionsFunc as any).__dependsOnExpression) {\n                  // 获取最新的参数\n                  const newOptions = optionsFunc();\n\n                  // 获取缓存的参数 (dataSourceMap 上可以直接访问缓存数据)\n                  const cachedOptions = (ds as any).__cachedOptions;\n\n                  // 使用 lodash 的 isEqual 进行深比较，避免浅层字符串化误判\n                  const isOptionsChanged = !isEqual(newOptions, cachedOptions);\n\n                  if (isOptionsChanged && !isEmpty(newOptions)) {\n                    dsNeedReload.push(dsId);\n                    // 更新缓存 - 仅在需要重载时更新\n                    (ds as any).__cachedOptions = cloneDeep(newOptions);\n\n                    this.__debug(`数据源 ${dsId} 参数变化，需要重新请求:`, {\n                      old: cachedOptions,\n                      new: newOptions,\n                    });\n                  }\n                }\n              } catch (e) {\n                console.error(`检查数据源 ${dsId} 是否需要重新请求时出错:`, e);\n              }\n            });\n          }\n\n          // 统一的数据源重载处理：无论是强制重载还是智能检查，都使用相同的逻辑\n          if (dsNeedReload.length > 0) {\n            this.__debug(`以下数据源需要重新请求: ${dsNeedReload.join(\", \")}`);\n\n            // 调用特定数据源的重载方法\n            if (this.__dataHelper.reloadSpecificDataSources) {\n              this.__dataHelper\n                .reloadSpecificDataSources(dsNeedReload)\n                .then(() => {\n                  this.__dataSourceInitialized = true;\n                  this.__isReloadingDataSource = false;\n                  resolve({});\n                })\n                .catch((err) => {\n                  this.__isReloadingDataSource = false;\n                  reject(err);\n                });\n            } else {\n              this.__isReloadingDataSource = false;\n              resolve({});\n            }\n          } else {\n            this.__debug(\"没有数据源需要重新请求\");\n            this.__isReloadingDataSource = false;\n            resolve({});\n          }\n        } catch (e) {\n          console.error(\"运行时检查数据源是否需要重新请求时出错:\", e);\n          resolve({});\n        }\n      });\n\n    /**\n     * 兼容性方法：重载数据源\n     * 现在内部调用智能重载方法\n     * @deprecated 建议直接使用 reloadDataSourceIfNeeded(true)\n     */\n    reloadDataSource = () => {\n      this.__debug(\"调用reloadDataSource（兼容模式），转为智能重载\");\n      return this.reloadDataSourceIfNeeded(true);\n    };\n\n    /**\n     * 重写 setState，支持函数式更新，自动触发数据源重载\n     */\n    setState(state: any, callback?: () => void) {\n      const newState = typeof state === \"function\" ? state(this.state) : state;\n      // 如果当前正在处理数据源重载，不触发新的检查\n      const isDataSourceSetState =\n        typeof newState === \"object\" &&\n        (newState.UNSTABLE_dataSourceUpdatedAt !== undefined ||\n          Object.keys(newState).some(\n            (key) => key.startsWith(\"UNSTABLE_\") && key.endsWith(\"_error\"),\n          ));\n\n      // 调用原始的 setState 方法\n      super.setState(state, () => {\n        // 只有非数据源更新导致的 setState 才检查是否需要重新请求数据源\n        if (!this.__isReloadingDataSource && !isDataSourceSetState) {\n          this.__debug(\"检测到状态变化，检查是否需要重新请求数据源\");\n          this.reloadDataSourceIfNeeded().catch((e) => {\n            console.error(\"重新请求数据源失败:\", e);\n          });\n        }\n\n        // 调用原始的回调函数\n        if (typeof callback === \"function\") {\n          callback();\n        }\n      });\n    }\n\n    /**\n     * 处理全局页面跳转事件\n     */\n    __handleGlobalPageJump = (event: any) => {\n      try {\n        this.__debug(\"检测到全局页面跳转事件\", event);\n\n        // 清空当前数据源\n        this.__clearDataSource();\n\n        this.__debug(\n          \"全局页面跳转事件处理完成，已清空数据源，等待新页面初始化\",\n        );\n      } catch (e) {\n        console.error(\"处理全局页面跳转事件失败:\", e);\n      }\n    };\n\n    /**\n     * 生成实例唯一标识\n     * @private\n     */\n    __generateInstanceId = (props: IBaseRendererProps): string => {\n      const schema = props.__schema;\n      const fileName = schema?.fileName || \"unknown\";\n      const componentName = schema?.componentName || \"BaseRenderer\";\n      const timestamp = Date.now();\n      const random = Math.random().toString(36).substring(2, 8);\n\n      // 优先使用schema中的id，如果没有则生成一个\n      const schemaId = schema?.id;\n      if (schemaId) {\n        return `${componentName}_${schemaId}_${random}`;\n      }\n\n      return `${componentName}_${fileName}_${timestamp}_${random}`;\n    };\n\n    /**\n     * 注册实例到全局注册表\n     * @private\n     */\n    __registerInstance = (props: IBaseRendererProps) => {\n      try {\n        const schema = props.__schema;\n        instanceRegistry.register(this.__instanceId, this, {\n          namespace: this.__namespace,\n          metadata: {\n            componentName: schema?.componentName,\n            fileName: schema?.fileName,\n            id: schema?.id,\n            props: props,\n          },\n        });\n\n        this.__debug(`实例已注册: ${this.__instanceId}`);\n      } catch (error) {\n        console.error(\"注册实例失败:\", error);\n      }\n    };\n\n    /**\n     * 从全局注册表注销实例\n     * @private\n     */\n    __unregisterInstance = () => {\n      try {\n        // 清理事件监听器\n        this.__eventCleanupFunctions.forEach((cleanup) => cleanup());\n        this.__eventCleanupFunctions = [];\n\n        // 注销实例\n        instanceRegistry.unregister(this.__instanceId);\n        this.__debug(`实例已注销: ${this.__instanceId}`);\n      } catch (error) {\n        console.error(\"注销实例失败:\", error);\n      }\n    };\n\n    shouldComponentUpdate() {\n      if (\n        this.props.getSchemaChangedSymbol?.() &&\n        this.props.__container?.rerender\n      ) {\n        this.props.__container?.rerender();\n        return false;\n      }\n      return true;\n    }\n\n    forceUpdate() {\n      if (this.shouldComponentUpdate()) {\n        super.forceUpdate();\n      }\n    }\n\n    /**\n     * execute method in schema.lifeCycles\n     * @PRIVATE\n     */\n    __executeLifeCycleMethod = (method: string, args?: any) => {\n      executeLifeCycleMethod(\n        this,\n        this.props.__schema,\n        method,\n        args,\n        this.props.thisRequiredInJSE,\n      );\n    };\n\n    /**\n     * this method is for legacy purpose only, which used _ prefix instead of __ as private for some historical reasons\n     * @LEGACY\n     */\n    _getComponentView = (componentName: string) => {\n      const { __components } = this.props;\n      if (!__components) {\n        return;\n      }\n      return __components[componentName];\n    };\n\n    __bindCustomMethods = (props: IBaseRendererProps) => {\n      const { __schema } = props;\n      const customMethodsList = Object.keys(__schema.methods || {}) || [];\n      (this.__customMethodsList || []).forEach((item: any) => {\n        if (!customMethodsList.includes(item)) {\n          delete this[item];\n        }\n      });\n      this.__customMethodsList = customMethodsList;\n      forEach(__schema.methods, (val: any, key: string) => {\n        let value = val;\n        if (isJSExpression(value) || isJSFunction(value)) {\n          value = this.__parseExpression(value, this);\n        }\n        if (typeof value !== \"function\") {\n          logger.error(\n            `custom method ${key} can not be parsed to a valid function`,\n            value,\n          );\n          return;\n        }\n        this[key] = value.bind(this);\n      });\n    };\n\n    __generateCtx = (ctx: Record<string, any>) => {\n      const { pageContext, compContext } = this.context;\n      const obj = {\n        page: pageContext,\n        component: compContext,\n        ...ctx,\n      };\n      forEach(obj, (val: any, key: string) => {\n        this[key] = val;\n      });\n    };\n\n    __parseData = (data: any, ctx?: Record<string, any>) => {\n      const { __ctx, thisRequiredInJSE, componentName } = this.props;\n      return parseData(data, ctx || __ctx || this, {\n        thisRequiredInJSE,\n        logScope: componentName,\n      });\n    };\n\n    __clearDataSource = () => {\n      this.__debug(\"清空数据源引擎\");\n\n      // 清空数据源映射\n      this.dataSourceMap = {};\n\n      // 重置数据助手\n      this.__dataHelper = null;\n\n      // 重置状态标记\n      this.__dataSourceInitialized = false;\n      this.__isReloadingDataSource = false;\n\n      // 重置重载方法为空实现\n      this.reloadDataSource = () => Promise.resolve({});\n\n      this.__debug(\"数据源引擎已清空\");\n    };\n\n    /**\n     * 收集组件默认状态\n     * 遍历组件树，根据每个组件的 meta.variables 配置收集默认值\n     * @private\n     */\n    __collectComponentDefaultState = (schema: any): Record<string, any> => {\n      const defaultState: Record<string, any> = {};\n\n      if (!schema?.children) {\n        return defaultState;\n      }\n\n      // 遍历组件树收集默认状态\n      const walkComponentTree = (nodes: any[]) => {\n        if (!Array.isArray(nodes)) return;\n\n        nodes.forEach((node) => {\n          if (node.componentName && node.props?._uniqueId) {\n            // 根据组件名称获取默认变量配置\n            const componentDefaultVars = this.__getComponentDefaultVariables(\n              node.componentName,\n            );\n            if (componentDefaultVars.length > 0) {\n              componentDefaultVars.forEach((variable) => {\n                if (variable.defaultValue !== undefined) {\n                  // 解析变量名中的 ${uniqueId}\n                  const stateKey = variable.name.replace(\n                    \"${uniqueId}\",\n                    node.props._uniqueId,\n                  );\n                  // 只有当前状态中没有这个值时才设置默认值\n                  if (!this.state || this.state[stateKey] === undefined) {\n                    defaultState[stateKey] = variable.defaultValue;\n                  }\n                }\n              });\n            }\n          }\n\n          // 递归处理子组件\n          if (node.children && Array.isArray(node.children)) {\n            walkComponentTree(node.children);\n          }\n        });\n      };\n\n      walkComponentTree(schema.children);\n\n      return defaultState;\n    };\n\n    /**\n     * 获取指定组件的默认变量配置\n     * 直接从组件的实际 meta 配置中读取\n     * @private\n     */\n    __getComponentDefaultVariables = (\n      componentName: string,\n    ): Array<{ name: string; defaultValue: any; type?: string }> => {\n      try {\n        // 从实际导入的组件 meta 中获取 variables 配置\n        const meta = metaAllVariables.find(\n          (meta) => meta.componentName === componentName,\n        );\n\n        if (meta && meta.variables) {\n          // 只返回有默认值的变量\n          return meta.variables.filter(\n            (v: any) => v.defaultValue !== undefined,\n          );\n        }\n\n        return [];\n      } catch (error) {\n        console.warn(\n          `Failed to get meta variables for component ${componentName}:`,\n          error,\n        );\n        return [];\n      }\n    };\n\n    __initDataSource = (props: IBaseRendererProps) => {\n      if (!props) {\n        return;\n      }\n      const schema = props.__schema || {};\n      const defaultDataSource: DataSource = {\n        list: [],\n      };\n      const dataSource = (schema as any).dataSource || defaultDataSource;\n\n      this.__debug(\"初始化数据源引擎\", {\n        schemaFileName: (schema as any).fileName,\n        dataSourceCount: dataSource?.list?.length || 0,\n        timestamp: new Date().toISOString(),\n      });\n\n      this.__dataHelper = {\n        updateConfig: (updateDataSource: any) => {\n          this.__debug(\"更新数据源配置，创建新的数据源引擎实例\");\n\n          const { dataSourceMap, reloadDataSource, reloadSpecificDataSources } =\n            createInterpret(updateDataSource ?? {}, this);\n\n          this.reloadDataSource = () =>\n            new Promise((resolve) => {\n              this.__debug(\"reload data source\");\n              reloadDataSource().then(() => {\n                resolve({});\n              });\n            });\n\n          // 添加按需重载特定数据源的方法\n          this.__dataHelper.reloadSpecificDataSources =\n            reloadSpecificDataSources;\n\n          return dataSourceMap;\n        },\n      };\n      this.dataSourceMap = this.__dataHelper.updateConfig(dataSource);\n\n      this.__debug(\"数据源引擎初始化完成\", {\n        dataSourceMapKeys: Object.keys(this.dataSourceMap),\n        dataSourceCount: Object.keys(this.dataSourceMap).length,\n      });\n    };\n\n    /**\n     * init i18n apis\n     * @PRIVATE\n     */\n    __initI18nAPIs = () => {\n      this.i18n = (key: string, values = {}) => {\n        const { locale, messages } = this.props;\n        return getI18n(key, values, locale, messages);\n      };\n      this.getLocale = () => this.props.locale;\n      this.setLocale = (loc: string) => {\n        const setLocaleFn = this.appHelper?.utils?.i18n?.setLocale;\n        if (!setLocaleFn || typeof setLocaleFn !== \"function\") {\n          logger.warn(\n            \"initI18nAPIs Failed, i18n only works when appHelper.utils.i18n.setLocale() exists\",\n          );\n          return undefined;\n        }\n        return setLocaleFn(loc);\n      };\n    };\n\n    /**\n     * write props.__schema.css to document as a style element,\n     * which will be added once and only once.\n     * @PRIVATE\n     */\n    __writeCss = (props: IBaseRendererProps) => {\n      const css = getValue(props.__schema, \"css\", \"\");\n      this.__debug(\"create this.styleElement with css\", css);\n      let style = this.__styleElement;\n      if (!this.__styleElement) {\n        style = document.createElement(\"style\");\n        style.type = \"text/css\";\n        style.setAttribute(\"from\", \"style-sheet\");\n\n        const head = document.head || document.getElementsByTagName(\"head\")[0];\n        head.appendChild(style);\n        this.__styleElement = style;\n        this.__debug(\"this.styleElement is created\", this.__styleElement);\n      }\n\n      if (style.innerHTML === css) {\n        return;\n      }\n\n      style.innerHTML = css;\n    };\n\n    __render = () => {\n      const schema = this.props.__schema;\n      this.__executeLifeCycleMethod(\"render\");\n      this.__writeCss(this.props);\n\n      const { engine } = this.context;\n      if (engine) {\n        engine.props.onCompGetCtx(schema, this);\n        // 画布场景才需要每次渲染bind自定义方法\n        if (this.__designModeIsDesign) {\n          this.__bindCustomMethods(this.props);\n          this.dataSourceMap = this.__dataHelper?.updateConfig(\n            schema.dataSource,\n          );\n        }\n      }\n    };\n\n    __getRef = (ref: any) => {\n      const { engine } = this.context;\n      const { __schema } = this.props;\n      ref && engine?.props?.onCompGetRef(__schema, ref);\n      this.__ref = ref;\n    };\n\n    __createDom = () => {\n      const { __schema, __ctx, __components = {} } = this.props;\n      // merge defaultProps\n      const scopeProps = {\n        ...__schema.defaultProps,\n        ...this.props,\n      };\n      const scope: any = {\n        props: scopeProps,\n      };\n      scope.__proto__ = __ctx || this;\n\n      const _children = getSchemaChildren(__schema as IPublicTypeNodeSchema);\n      let Comp = __components[__schema.componentName];\n\n      if (!Comp) {\n        this.__debug(`${__schema.componentName} is invalid!`);\n      }\n      const parentNodeInfo = {\n        schema: __schema,\n        Comp: this.__getHOCWrappedComponent(Comp, __schema, scope),\n      } as INodeInfo;\n      return this.__createVirtualDom(_children, scope, parentNodeInfo);\n    };\n\n    /**\n     * 将模型结构转换成react Element\n     * @param originalSchema schema\n     * @param originalScope scope\n     * @param parentInfo 父组件的信息，包含schema和Comp\n     * @param idx 为循环渲染的循环Index\n     */\n    __createVirtualDom = (\n      originalSchema: IPublicTypeNodeData | IPublicTypeNodeData[] | undefined,\n      originalScope: any,\n      parentInfo: INodeInfo,\n      idx: string | number = \"\",\n    ): any => {\n      if (originalSchema === null || originalSchema === undefined) {\n        return null;\n      }\n      let scope = originalScope;\n      let schema = originalSchema;\n      const { engine } = this.context || {};\n      if (!engine) {\n        this.__debug(\"this.context.engine is invalid!\");\n        return null;\n      }\n      try {\n        const { __appHelper: appHelper, __components: components = {} } =\n          this.props || {};\n\n        if (isJSExpression(schema)) {\n          return this.__parseExpression(schema, scope);\n        }\n        if (isI18nData(schema)) {\n          return parseI18n(schema, scope);\n        }\n        if (isJSSlot(schema)) {\n          return this.__createVirtualDom(schema.value, scope, parentInfo);\n        }\n\n        if (typeof schema === \"string\") {\n          return schema;\n        }\n\n        if (typeof schema === \"number\" || typeof schema === \"boolean\") {\n          return String(schema);\n        }\n\n        if (Array.isArray(schema)) {\n          if (schema.length === 1) {\n            return this.__createVirtualDom(schema[0], scope, parentInfo);\n          }\n          return schema.map((item, idy) =>\n            this.__createVirtualDom(\n              item,\n              scope,\n              parentInfo,\n              (item as IPublicTypeNodeSchema)?.__ctx?.lceKey ? \"\" : String(idy),\n            ),\n          );\n        }\n\n        // @ts-expect-error 如果直接转换好了，可以返回\n        if (schema.$$typeof) {\n          return schema;\n        }\n\n        const _children = getSchemaChildren(schema as IPublicTypeNodeSchema);\n        if (!(schema as any).componentName) {\n          logger.error(\n            \"The componentName in the schema is invalid, please check the schema: \",\n            schema,\n          );\n          return;\n        }\n        // 解析占位组件\n        if ((schema as any).componentName === \"Fragment\" && _children) {\n          const tarChildren = isJSExpression(_children)\n            ? this.__parseExpression(_children, scope)\n            : _children;\n          return this.__createVirtualDom(tarChildren, scope, parentInfo);\n        }\n\n        if (\n          (schema as any).componentName === \"Text\" &&\n          typeof (schema as any).props?.text === \"string\"\n        ) {\n          const text: string = (schema as any).props?.text;\n          schema = { ...schema };\n          (schema as any).children = [text];\n        }\n\n        if (!isSchema(schema)) {\n          return null;\n        }\n        let Comp =\n          components[schema.componentName] ||\n          this.props.__container?.components?.[schema.componentName];\n\n        // 容器类组件的上下文通过props传递，避免context传递带来的嵌套问题\n        const otherProps: any = isFileSchema(schema)\n          ? {\n              __schema: schema,\n              __appHelper: appHelper,\n              __components: components,\n            }\n          : {};\n\n        if (!Comp) {\n          logger.error(\n            `${schema.componentName} component is not found in components list! component list is:`,\n            components || this.props.__container?.components,\n          );\n          return engine.createElement(\n            engine.getNotFoundComponent(),\n            {\n              componentName: schema.componentName,\n              componentId: schema.id,\n              enableStrictNotFoundMode: engine.props.enableStrictNotFoundMode,\n              ref: (ref: any) => {\n                ref && engine.props?.onCompGetRef(schema, ref);\n              },\n            },\n            this.__getSchemaChildrenVirtualDom(schema, scope, Comp),\n          );\n        }\n\n        if (schema.loop != null) {\n          const loop = this.__parseData(schema.loop, scope);\n          if (Array.isArray(loop) && loop.length === 0) return null;\n          const useLoop = isUseLoop(loop, this.__designModeIsDesign);\n          if (useLoop) {\n            return this.__createLoopVirtualDom(\n              {\n                ...schema,\n                loop,\n              },\n              scope,\n              parentInfo,\n              idx,\n            );\n          }\n        }\n        const condition =\n          schema.condition == null\n            ? true\n            : this.__parseData(schema.condition, scope);\n\n        // DesignMode 为 design 情况下，需要进入 leaf Hoc，进行相关事件注册\n        const displayInHook = this.__designModeIsDesign;\n        if (!condition && !displayInHook) {\n          return null;\n        }\n\n        let scopeKey = \"\";\n        // 判断组件是否需要生成scope，且只生成一次，挂在this.__compScopes上\n        if (Comp.generateScope) {\n          const key = this.__parseExpression(schema.props?.key, scope);\n          if (key) {\n            // 如果组件自己设置key则使用组件自己的key\n            scopeKey = key;\n          } else if (!schema.__ctx) {\n            // 在生产环境schema没有__ctx上下文，需要手动生成一个lceKey\n            schema.__ctx = {\n              lceKey: `lce${++scopeIdx}`,\n            };\n            scopeKey = schema.__ctx.lceKey;\n          } else {\n            // 需要判断循环的情况\n            scopeKey =\n              schema.__ctx.lceKey + (idx !== undefined ? `_${idx}` : \"\");\n          }\n          if (!this.__compScopes[scopeKey]) {\n            this.__compScopes[scopeKey] = Comp.generateScope(this, schema);\n          }\n        }\n        // 如果组件有设置scope，需要为组件生成一个新的scope上下文\n        if (scopeKey && this.__compScopes[scopeKey]) {\n          const compSelf = { ...this.__compScopes[scopeKey] };\n          compSelf.__proto__ = scope;\n          scope = compSelf;\n        }\n\n        if (engine.props?.designMode) {\n          otherProps.__designMode = engine.props.designMode;\n        }\n        if (this.__designModeIsDesign) {\n          otherProps.__tag = Math.random();\n        }\n        const componentInfo: any = {};\n        const props: any =\n          this.__getComponentProps(schema, scope, Comp, {\n            ...componentInfo,\n            props: transformArrayToMap(componentInfo.props, \"name\"),\n          }) || {};\n\n        this.__componentHOCs.forEach(\n          (ComponentConstruct: IComponentConstruct) => {\n            Comp = ComponentConstruct(Comp, {\n              schema,\n              componentInfo,\n              baseRenderer: this,\n              scope,\n            });\n          },\n        );\n\n        otherProps.ref = (ref: any) => {\n          this.$(props.fieldId || props.ref, ref); // 收集ref\n          const refProps = props.ref;\n          if (refProps && typeof refProps === \"string\") {\n            this[refProps] = ref;\n          }\n          ref && engine.props?.onCompGetRef(schema, ref);\n        };\n\n        // scope需要传入到组件上\n        if (scopeKey && this.__compScopes[scopeKey]) {\n          props.__scope = this.__compScopes[scopeKey];\n        }\n        if (schema?.__ctx?.lceKey) {\n          if (!isFileSchema(schema)) {\n            engine.props?.onCompGetCtx(schema, scope);\n          }\n          props.key =\n            props.key ||\n            `${schema.__ctx.lceKey}_${schema.__ctx.idx || 0}_${\n              idx !== undefined ? idx : \"\"\n            }`;\n        } else if (\n          (typeof idx === \"number\" || typeof idx === \"string\") &&\n          !props.key\n        ) {\n          // 仅当循环场景走这里\n          props.key = idx;\n        }\n\n        props.__id = schema.id;\n        if (!props.key) {\n          props.key = props.__id;\n        }\n\n        let child = this.__getSchemaChildrenVirtualDom(\n          schema,\n          scope,\n          Comp,\n          condition,\n        );\n        // 设计模式下的特殊处理\n        if (\n          engine &&\n          [DESIGN_MODE.EXTEND, DESIGN_MODE.BORDER].includes(\n            engine.props.designMode,\n          )\n        ) {\n          // 对于overlay,dialog等组件为了使其在设计模式下显示，外层需要增加一个div容器\n          if (OVERLAY_LIST.includes(schema.componentName)) {\n            const { ref, ...overlayProps } = otherProps;\n            return createElement(\n              Div,\n              { ref, __designMode: engine.props.designMode },\n              engine.createElement(Comp, { ...props, ...overlayProps }, child),\n            );\n          }\n          // 虚拟dom显示\n          if (componentInfo?.parentRule) {\n            const parentList = componentInfo.parentRule.split(\",\");\n            const {\n              schema: parentSchema = { componentName: \"\" },\n              Comp: parentComp,\n            } = parentInfo;\n            if (\n              !parentList.includes(parentSchema.componentName) ||\n              parentComp !== components[parentSchema.componentName]\n            ) {\n              props.__componentName = schema.componentName;\n              Comp = VisualDom;\n            } else {\n              // 若虚拟dom在正常的渲染上下文中，就不显示设计模式了\n              props.__disableDesignMode = true;\n            }\n          }\n        }\n\n        return engine.createElement(\n          Comp,\n          {\n            ...props,\n            ...otherProps,\n            __inner__: {\n              hidden: schema.hidden,\n              condition,\n            },\n          },\n          child,\n        );\n      } catch (e) {\n        return engine.createElement(engine.getFaultComponent(), {\n          error: e,\n          schema,\n          self: scope,\n          parentInfo,\n          idx,\n          ref: (ref: any) => {\n            // 与 original ref 功能相似的回调函数\n            ref && engine.props?.onCompGetRef(schema, ref);\n          },\n        });\n      }\n    };\n\n    /**\n     * get Component HOCs\n     *\n     * @readonly\n     * @type {IComponentConstruct[]}\n     */\n    get __componentHOCs(): IComponentConstruct[] {\n      if (this.__designModeIsDesign) {\n        return [leafWrapper, compWrapper];\n      }\n      return [compWrapper];\n    }\n\n    __getSchemaChildrenVirtualDom = (\n      schema: IPublicTypeNodeSchema | undefined,\n      scope: any,\n      Comp: any,\n      condition = true,\n    ) => {\n      let children = condition ? getSchemaChildren(schema) : null;\n\n      // @todo 补完这里的 Element 定义 @承虎\n      let result: any = [];\n      if (children) {\n        if (!Array.isArray(children)) {\n          children = [children];\n        }\n\n        children.forEach((child: any) => {\n          const childVirtualDom = this.__createVirtualDom(\n            isJSExpression(child)\n              ? this.__parseExpression(child, scope)\n              : child,\n            scope,\n            {\n              schema,\n              Comp,\n            },\n          );\n\n          result.push(childVirtualDom);\n        });\n      }\n\n      if (result && result.length > 0) {\n        return result;\n      }\n      return null;\n    };\n\n    __getComponentProps = (\n      schema: IPublicTypeNodeSchema | undefined,\n      scope: any,\n      Comp: any,\n      componentInfo?: any,\n    ) => {\n      if (!schema) {\n        return {};\n      }\n      return (\n        this.__parseProps(schema?.props, scope, \"\", {\n          schema,\n          Comp,\n          componentInfo: {\n            ...(componentInfo || {}),\n            props: transformArrayToMap((componentInfo || {}).props, \"name\"),\n          },\n        }) || {}\n      );\n    };\n\n    __createLoopVirtualDom = (\n      schema: IPublicTypeNodeSchema,\n      scope: any,\n      parentInfo: INodeInfo,\n      idx: number | string,\n    ) => {\n      if (isFileSchema(schema)) {\n        logger.warn(\"file type not support Loop\");\n        return null;\n      }\n      if (!Array.isArray(schema.loop)) {\n        return null;\n      }\n      const itemArg =\n        (schema.loopArgs && schema.loopArgs[0]) || DEFAULT_LOOP_ARG_ITEM;\n      const indexArg =\n        (schema.loopArgs && schema.loopArgs[1]) || DEFAULT_LOOP_ARG_INDEX;\n      const { loop } = schema;\n      return loop.map(\n        (item: IPublicTypeJSONValue | IPublicTypeCompositeValue, i: number) => {\n          const loopSelf: any = {\n            [itemArg]: item,\n            [indexArg]: i,\n          };\n          loopSelf.__proto__ = scope;\n          return this.__createVirtualDom(\n            {\n              ...schema,\n              loop: undefined,\n              props: {\n                ...schema.props,\n                // 循环下 key 不能为常量，这样会造成 key 值重复，渲染异常\n                key: isJSExpression(schema.props?.key)\n                  ? schema.props?.key\n                  : null,\n              },\n            },\n            loopSelf,\n            parentInfo,\n            idx ? `${idx}_${i}` : i,\n          );\n        },\n      );\n    };\n\n    get __designModeIsDesign() {\n      const { engine } = this.context || {};\n      return engine?.props?.designMode === \"design\";\n    }\n\n    __parseProps = (\n      originalProps: any,\n      scope: any,\n      path: string,\n      info: INodeInfo,\n    ): any => {\n      let props = originalProps;\n      const { schema, Comp, componentInfo = {} } = info;\n      const propInfo = getValue(componentInfo.props, path);\n      // FIXME: 将这行逻辑外置，解耦，线上环境不要验证参数，调试环境可以有，通过传参自定义\n      const propType = propInfo?.extra?.propType;\n\n      const checkProps = (value: any) => {\n        if (!propType) {\n          return value;\n        }\n        return checkPropTypes(value, path, propType, componentInfo.name)\n          ? value\n          : undefined;\n      };\n\n      const parseReactNode = (data: any, params: any) => {\n        if (isEmpty(params)) {\n          const virtualDom = this.__createVirtualDom(data, scope, {\n            schema,\n            Comp,\n          } as INodeInfo);\n          return checkProps(virtualDom);\n        }\n        return checkProps((...argValues: any[]) => {\n          const args: any = {};\n          if (Array.isArray(params) && params.length) {\n            params.forEach((item, idx) => {\n              if (typeof item === \"string\") {\n                args[item] = argValues[idx];\n              } else if (item && typeof item === \"object\") {\n                args[item.name] = argValues[idx];\n              }\n            });\n          }\n          args.__proto__ = scope;\n          return scope.__createVirtualDom(data, args, {\n            schema,\n            Comp,\n          } as INodeInfo);\n        });\n      };\n\n      if (isJSExpression(props)) {\n        props = this.__parseExpression(props, scope);\n        // 只有当变量解析出来为模型结构的时候才会继续解析\n        if (!isSchema(props) && !isJSSlot(props)) {\n          return checkProps(props);\n        }\n      }\n\n      const handleI18nData = (innerProps: any) =>\n        innerProps[\n          innerProps.use || (this.getLocale && this.getLocale()) || \"zh-CN\"\n        ];\n\n      // @LEGACY 兼容老平台设计态 i18n 数据\n      if (isI18nData(props)) {\n        const i18nProp = handleI18nData(props);\n        if (i18nProp) {\n          props = i18nProp;\n        } else {\n          return parseI18n(props, scope);\n        }\n      }\n\n      // @LEGACY 兼容老平台设计态的变量绑定\n      if (isVariable(props)) {\n        props = props.value;\n        if (isI18nData(props)) {\n          props = handleI18nData(props);\n        }\n      }\n\n      if (isJSFunction(props)) {\n        props = transformStringToFunction(props.value);\n      }\n      if (isJSSlot(props)) {\n        const { params, value } = props;\n        if (!isSchema(value) || isEmpty(value)) {\n          return undefined;\n        }\n        return parseReactNode(value, params);\n      }\n\n      // 兼容通过componentInfo判断的情况\n      if (isSchema(props)) {\n        const isReactNodeFunction = !!(\n          propInfo?.type === \"ReactNode\" && propInfo?.props?.type === \"function\"\n        );\n\n        const isMixinReactNodeFunction = !!(\n          propInfo?.type === \"Mixin\" &&\n          propInfo?.props?.types?.indexOf(\"ReactNode\") > -1 &&\n          propInfo?.props?.reactNodeProps?.type === \"function\"\n        );\n\n        let params = null;\n        if (isReactNodeFunction) {\n          params = propInfo?.props?.params;\n        } else if (isMixinReactNodeFunction) {\n          params = propInfo?.props?.reactNodeProps?.params;\n        }\n        return parseReactNode(props, params);\n      }\n      if (Array.isArray(props)) {\n        return checkProps(\n          props.map((item, idx) =>\n            this.__parseProps(\n              item,\n              scope,\n              path ? `${path}.${idx}` : `${idx}`,\n              info,\n            ),\n          ),\n        );\n      }\n      if (typeof props === \"function\") {\n        return checkProps(props.bind(scope));\n      }\n      if (props && typeof props === \"object\") {\n        if (props.$$typeof) {\n          return checkProps(props);\n        }\n        const res: any = {};\n        forEach(props, (val: any, key: string) => {\n          if (key.startsWith(\"__\")) {\n            res[key] = val;\n            return;\n          }\n          res[key] = this.__parseProps(\n            val,\n            scope,\n            path ? `${path}.${key}` : key,\n            info,\n          );\n        });\n        return checkProps(res);\n      }\n      return checkProps(props);\n    };\n\n    $(filedId: string, instance?: any) {\n      this.__instanceMap = this.__instanceMap || {};\n      if (!filedId || typeof filedId !== \"string\") {\n        return this.__instanceMap;\n      }\n      if (instance) {\n        this.__instanceMap[filedId] = instance;\n      }\n      return this.__instanceMap[filedId];\n    }\n\n    __debug = (...args: any[]) => {\n      // 监测页面 query 中有 debug 参数，则打印日志\n      if (window.location.search.includes(\"debug\")) {\n        console.log(\"BaseRenderer\", ...args);\n      }\n    };\n\n    __renderContextProvider = (customProps?: object, children?: any) => {\n      return createElement(AppContext.Provider, {\n        value: {\n          ...this.context,\n          blockContext: this,\n          ...(customProps || {}),\n        },\n        children: children || this.__createDom(),\n      });\n    };\n\n    __renderContextConsumer = (children: any) => {\n      return createElement(AppContext.Consumer, {}, children);\n    };\n\n    __getHOCWrappedComponent(OriginalComp: any, schema: any, scope: any) {\n      let Comp = OriginalComp;\n      this.__componentHOCs.forEach(\n        (ComponentConstruct: IComponentConstruct) => {\n          Comp = ComponentConstruct(Comp || Div, {\n            schema,\n            componentInfo: {},\n            baseRenderer: this,\n            scope,\n          });\n        },\n      );\n\n      return Comp;\n    }\n\n    __renderComp(OriginalComp: any, ctxProps: object) {\n      let Comp = OriginalComp;\n      const { __schema, __ctx } = this.props;\n      const scope: any = {};\n      scope.__proto__ = __ctx || this;\n      Comp = this.__getHOCWrappedComponent(Comp, __schema, scope);\n      const data = this.__parseProps(__schema?.props, scope, \"\", {\n        schema: __schema,\n        Comp,\n        componentInfo: {},\n      });\n      const { className } = data;\n      const otherProps: any = {};\n      const { engine } = this.context || {};\n      if (!engine) {\n        return null;\n      }\n\n      if (this.__designModeIsDesign) {\n        otherProps.__tag = Math.random();\n      }\n\n      const child = engine.createElement(\n        Comp,\n        {\n          ...data,\n          ...this.props,\n          ref: this.__getRef,\n          className: classnames(\n            getFileCssName(__schema?.fileName),\n            className,\n            this.props.className,\n          ),\n          __id: __schema?.id,\n          ...otherProps,\n        },\n        this.__createDom(),\n      );\n      return this.__renderContextProvider(ctxProps, child);\n    }\n\n    __renderContent(children: any) {\n      const { __schema } = this.props;\n      const parsedProps = this.__parseData(__schema.props);\n      const className = classnames(\n        `lce-${this.__namespace}`,\n        getFileCssName(__schema.fileName),\n        parsedProps.className,\n        this.props.className,\n      );\n      const style = {\n        ...(parsedProps.style || {}),\n        ...(typeof this.props.style === \"object\" ? this.props.style : {}),\n      };\n      const id = this.props.id || parsedProps.id;\n      return createElement(\n        \"div\",\n        {\n          ref: this.__getRef,\n          className,\n          id,\n          style,\n        },\n        children,\n      );\n    }\n\n    __checkSchema = (\n      schema: IPublicTypeNodeSchema | undefined,\n      originalExtraComponents: string | string[] = [],\n    ) => {\n      let extraComponents = originalExtraComponents;\n      if (typeof extraComponents === \"string\") {\n        extraComponents = [extraComponents];\n      }\n\n      const builtin = capitalizeFirstLetter(this.__namespace);\n      const componentNames = [builtin, ...extraComponents];\n      return (\n        !isSchema(schema) ||\n        !componentNames.includes(schema?.componentName ?? \"\")\n      );\n    };\n\n    get appHelper(): IRendererAppHelper {\n      return this.props.__appHelper;\n    }\n\n    get requestHandlersMap() {\n      return this.appHelper?.requestHandlersMap;\n    }\n\n    get utils() {\n      return this.appHelper?.utils;\n    }\n\n    get constants() {\n      return this.appHelper?.constants;\n    }\n\n    get history() {\n      return this.appHelper?.history;\n    }\n\n    get location() {\n      return this.appHelper?.location;\n    }\n\n    get match() {\n      return this.appHelper?.match;\n    }\n\n    // ============== 跨实例通信API ==============\n\n    /**\n     * 获取当前实例的唯一标识\n     */\n    getInstanceId(): string {\n      return this.__instanceId;\n    }\n\n    /**\n     * 获取所有注册的实例信息\n     */\n    getAllInstances(): IRendererInstanceInfo[] {\n      return instanceRegistry.getAllInstances();\n    }\n\n    /**\n     * 根据实例ID获取实例\n     */\n    getInstanceById(instanceId: string): any {\n      return instanceRegistry.getInstance(instanceId);\n    }\n\n    /**\n     * 根据条件查找实例\n     */\n    findInstances(\n      predicate: (instanceInfo: IRendererInstanceInfo) => boolean,\n    ): IRendererInstanceInfo[] {\n      return instanceRegistry.findInstances(predicate);\n    }\n\n    /**\n     * 根据命名空间查找实例\n     */\n    findInstancesByNamespace(namespace: string): IRendererInstanceInfo[] {\n      return instanceRegistry.findInstancesByNamespace(namespace);\n    }\n\n    /**\n     * 根据组件名查找实例\n     */\n    findInstancesByComponentName(\n      componentName: string,\n    ): IRendererInstanceInfo[] {\n      return this.findInstances(\n        (info) => info.metadata?.componentName === componentName,\n      );\n    }\n\n    /**\n     * 调用指定实例的方法\n     */\n    async callInstanceMethod(\n      instanceId: string,\n      methodName: string,\n      ...args: any[]\n    ): Promise<any> {\n      return instanceRegistry.callInstanceMethod(\n        instanceId,\n        methodName,\n        ...args,\n      );\n    }\n\n    /**\n     * 批量调用多个实例的方法\n     */\n    async callMultipleInstanceMethods(\n      instanceIds: string[],\n      methodName: string,\n      ...args: any[]\n    ): Promise<Record<string, any>> {\n      return instanceRegistry.callMultipleInstanceMethods(\n        instanceIds,\n        methodName,\n        ...args,\n      );\n    }\n\n    /**\n     * 广播调用所有实例的方法\n     */\n    async broadcastInstanceMethod(\n      methodName: string,\n      args: any[] = [],\n      filter?: (instanceInfo: IRendererInstanceInfo) => boolean,\n    ): Promise<Record<string, any>> {\n      return instanceRegistry.broadcastInstanceMethod(methodName, args, filter);\n    }\n\n    /**\n     * 发送消息给指定实例\n     */\n    sendMessage(\n      targetInstanceId: string,\n      messageType: string,\n      payload?: any,\n    ): void {\n      instanceRegistry.sendMessage(\n        targetInstanceId,\n        messageType,\n        payload,\n        this.__instanceId,\n      );\n    }\n\n    /**\n     * 广播消息给所有实例\n     */\n    broadcastMessage(messageType: string, payload?: any): void {\n      const allInstances = this.getAllInstances();\n      allInstances.forEach((info) => {\n        if (info.id !== this.__instanceId) {\n          // 不给自己发送\n          this.sendMessage(info.id, messageType, payload);\n        }\n      });\n    }\n\n    /**\n     * 监听跨实例事件\n     */\n    onInstanceEvent(\n      eventType: string,\n      listener: IInstanceEventListener,\n    ): () => void {\n      instanceRegistry.on(eventType, listener);\n\n      // 返回清理函数\n      const cleanup = () => {\n        instanceRegistry.off(eventType, listener);\n      };\n\n      this.__eventCleanupFunctions.push(cleanup);\n      return cleanup;\n    }\n\n    /**\n     * 触发跨实例事件\n     */\n    emitInstanceEvent(\n      eventType: string,\n      payload?: any,\n      targetInstanceId?: string,\n    ): void {\n      instanceRegistry.emit(\n        eventType,\n        payload,\n        this.__instanceId,\n        targetInstanceId,\n      );\n    }\n\n    /**\n     * 处理接收到的消息（可被子类重写）\n     */\n    onMessage(message: {\n      type: string;\n      payload?: any;\n      sourceInstanceId?: string;\n    }): void {\n      this.__debug(\"收到跨实例消息:\", message);\n      // 子类可以重写此方法来处理特定的消息\n    }\n\n    /**\n     * 获取实例注册表的状态信息（调试用）\n     */\n    getRegistryStatus(): {\n      instanceCount: number;\n      instances: string[];\n      eventTypes: string[];\n      globalListenerCount: number;\n    } {\n      return instanceRegistry.getStatus();\n    }\n\n    render() {\n      return null;\n    }\n  };\n}\n","import { getLogger } from \"@yuntoo/page-utils\";\nimport baseRendererFactory from \"./base\";\nimport { IBaseRendererProps, IBaseRenderComponent } from \"../types\";\n\nconst logger = getLogger({ level: \"warn\", bizName: \"renderer-core:page\" });\n\nexport default function pageRendererFactory(): IBaseRenderComponent {\n  const BaseRenderer = baseRendererFactory();\n  return class PageRenderer extends BaseRenderer {\n    static displayName = \"PageRenderer\";\n\n    __namespace = \"page\";\n\n    __afterInit(props: IBaseRendererProps, ...rest: unknown[]) {\n      this.__generateCtx({\n        page: this,\n      });\n\n      const schema = props.__schema || {};\n\n      // 1. 先解析 schema.state\n      const schemaState = this.__parseData((schema as any).state || {});\n\n      // 2. 收集组件默认状态\n      const componentDefaultState = (\n        this as any\n      ).__collectComponentDefaultState(schema);\n\n      // 3. 合并状态（组件默认值优先级低于 schema.state）\n      const finalState = {\n        ...componentDefaultState,\n        ...schemaState,\n      };\n\n      // 4. 先设置初始状态\n      this.state = finalState;\n\n      this.__debug(\"页面初始化状态合并完成\", {\n        componentDefaults: Object.keys(componentDefaultState).length,\n        schemaState: Object.keys(schemaState).length,\n        finalState: Object.keys(finalState).length,\n      });\n\n      // 5. 初始化数据源\n      this.__initDataSource(props);\n      this.__executeLifeCycleMethod(\"constructor\", [props, ...rest]);\n    }\n\n    async componentDidUpdate(\n      prevProps: IBaseRendererProps,\n      _prevState: {},\n      snapshot: unknown,\n    ) {\n      const { __ctx } = this.props;\n\n      // 检测页面schema是否发生变化（页面切换）\n      const isPageChanged =\n        prevProps.__schema !== this.props.__schema ||\n        (prevProps.__schema as any)?.fileName !==\n          (this.props.__schema as any)?.fileName;\n\n      if (isPageChanged) {\n        this.__debug(\"检测到页面变化，重新初始化数据源\", {\n          prevFileName: (prevProps.__schema as any)?.fileName,\n          currentFileName: (this.props.__schema as any)?.fileName,\n        });\n\n        // 重新初始化数据源\n        this.__initDataSource(this.props);\n\n        // 页面切换时强制重新加载数据源（避免重复调用的问题已在智能重载方法中处理）\n        this.reloadDataSourceIfNeeded(true).catch((error) => {\n          console.error(\"页面变化后重新加载数据源失败:\", error);\n        });\n      }\n\n      // 当编排的时候修改 schema.state 值，需要将最新 schema.state 值 setState\n      if (\n        JSON.stringify(prevProps.__schema.state) !=\n        JSON.stringify(this.props.__schema.state)\n      ) {\n        const newState = this.__parseData(this.props.__schema.state, __ctx);\n        this.setState(newState);\n      }\n\n      super.componentDidUpdate?.(prevProps, _prevState, snapshot);\n    }\n\n    setState(state: any, callback?: () => void) {\n      logger.info(\"page set state\", state);\n      super.setState(state, callback);\n    }\n\n    render() {\n      const { __schema, __components } = this.props;\n      if (this.__checkSchema(__schema)) {\n        return \"页面schema结构异常！\";\n      }\n      this.__debug(`${PageRenderer.displayName} render - ${__schema.fileName}`);\n\n      this.__bindCustomMethods(this.props);\n      // TODO：超特殊逻辑：此处临时注释，期望是每次 render 的时候不要重新初始化数据源模块，如果有问题需要重新打开\n      // this.__initDataSource(this.props);\n\n      this.__generateCtx({\n        page: this,\n      });\n      this.__render();\n\n      const { Page } = __components;\n      if (Page) {\n        return this.__renderComp(Page, { pageContext: this });\n      }\n\n      // 这是ALC原本的实现\n      // return this.__renderContent(\n      //   this.__renderContextProvider({ pageContext: this }),\n      // );\n\n      // TODO: __renderContent 多包裹了一层div, 看起来并没有什么作用, 先去掉 by @屹凡\n      return this.__renderContextProvider({ pageContext: this });\n    }\n  };\n}\n","import baseRendererFactory from \"./base\";\nimport { IBaseRendererProps, IBaseRenderComponent } from \"../types\";\n\nexport default function componentRendererFactory(): IBaseRenderComponent {\n  const BaseRenderer = baseRendererFactory();\n  return class CompRenderer extends BaseRenderer {\n    static displayName = \"CompRenderer\";\n\n    __namespace = \"component\";\n\n    __afterInit(props: IBaseRendererProps) {\n      this.__generateCtx({\n        component: this,\n      });\n      const schema = props.__schema || {};\n      this.state = this.__parseData((schema as any).state || {});\n      this.__initDataSource(props);\n      this.__executeLifeCycleMethod(\"constructor\", arguments as any);\n    }\n\n    render() {\n      const { __schema, __components } = this.props;\n      if (this.__checkSchema(__schema)) {\n        return \"自定义组件 schema 结构异常！\";\n      }\n      this.__debug(`${CompRenderer.displayName} render - ${__schema.fileName}`);\n\n      this.__generateCtx({\n        component: this,\n      });\n      this.__render();\n\n      const noContainer = this.__parseData(__schema.props?.noContainer);\n\n      this.__bindCustomMethods(this.props);\n\n      if (noContainer) {\n        return this.__renderContextProvider({ compContext: this });\n      }\n\n      const Component = __components?.[__schema?.componentName];\n\n      if (!Component) {\n        return this.__renderContent(\n          this.__renderContextProvider({ compContext: this }),\n        );\n      }\n\n      return this.__renderComp(\n        Component,\n        this.__renderContextProvider({ compContext: this }),\n      );\n    }\n  };\n}\n","import baseRendererFactory from \"./base\";\nimport { IBaseRendererProps, IBaseRenderComponent } from \"../types\";\n\nexport default function blockRendererFactory(): IBaseRenderComponent {\n  const BaseRenderer = baseRendererFactory();\n  return class BlockRenderer extends BaseRenderer {\n    static displayName = \"BlockRenderer\";\n\n    __namespace = \"block\";\n\n    __afterInit(props: IBaseRendererProps) {\n      this.__generateCtx({});\n      const schema = props.__schema || {};\n      this.state = this.__parseData((schema as any).state || {});\n      this.__initDataSource(props);\n      this.__executeLifeCycleMethod(\"constructor\", [...arguments]);\n    }\n\n    render() {\n      const { __schema, __components } = this.props;\n\n      if (this.__checkSchema(__schema, \"Div\")) {\n        return \"区块 schema 结构异常！\";\n      }\n\n      this.__debug(\n        `${BlockRenderer.displayName} render - ${__schema?.fileName}`,\n      );\n      this.__generateCtx({});\n      this.__render();\n\n      const { Block } = __components;\n      if (Block) {\n        return this.__renderComp(Block, {});\n      }\n\n      return this.__renderContent(this.__renderContextProvider());\n    }\n  };\n}\n","import baseRendererFactory from \"./base\";\nimport { isEmpty } from \"../utils\";\nimport {\n  IRendererAppHelper,\n  IBaseRendererProps,\n  IBaseRenderComponent,\n} from \"../types\";\nimport logger from \"../utils/logger\";\n\nexport default function addonRendererFactory(): IBaseRenderComponent {\n  const BaseRenderer = baseRendererFactory();\n  return class AddonRenderer extends BaseRenderer {\n    static displayName = \"AddonRenderer\";\n\n    __namespace = \"addon\";\n\n    // static propTypes = {\n    //   config: PropTypes.object,\n    //   __schema: PropTypes.object,\n    // };\n\n    static defaultProps = {\n      config: {},\n      __schema: {},\n    };\n\n    addonKey: any;\n    appHelper: IRendererAppHelper;\n    open: () => any;\n    close: () => any;\n\n    __afterInit(props: IBaseRendererProps) {\n      this.__generateCtx({\n        component: this,\n      });\n      const schema = props.__schema || {};\n      this.state = this.__parseData((schema as any).state || {});\n      if (isEmpty(props.config) || !props.config?.addonKey) {\n        logger.warn(\"lce addon has wrong config\");\n        this.setState({\n          __hasError: true,\n        });\n        return;\n      }\n      // 注册插件\n      this.addonKey = props.config.addonKey;\n      this.appHelper.addons = this.appHelper.addons || {};\n      this.appHelper.addons[this.addonKey] = this;\n      this.__initDataSource(props);\n      this.open = this.open || (() => {});\n      this.close = this.close || (() => {});\n      this.__executeLifeCycleMethod(\"constructor\", [...arguments]);\n    }\n\n    async componentWillUnmount() {\n      super.componentWillUnmount?.apply(this, [...arguments] as any);\n      // 注销插件\n      const config = this.props.config || {};\n      if (config && this.appHelper.addons) {\n        delete this.appHelper.addons[config.addonKey];\n      }\n    }\n\n    get utils() {\n      const { utils = {} } = this.context.config || {};\n      return { ...this.appHelper.utils, ...utils };\n    }\n\n    render() {\n      const { __schema } = this.props;\n\n      if (this.__checkSchema(__schema)) {\n        return \"插件 schema 结构异常！\";\n      }\n\n      this.__debug(\n        `${AddonRenderer.displayName} render - ${__schema.fileName}`,\n      );\n      this.__generateCtx({\n        component: this,\n      });\n      this.__render();\n\n      return this.__renderContent(\n        this.__renderContextProvider({ compContext: this }),\n      );\n    }\n  };\n}\n","import { IBaseRenderComponent } from \"../types\";\nimport logger from \"../utils/logger\";\nimport baseRendererFactory from \"./base\";\n\nexport default function tempRendererFactory(): IBaseRenderComponent {\n  const BaseRenderer = baseRendererFactory();\n\n  return class TempRenderer extends BaseRenderer {\n    static displayName = \"TempRenderer\";\n\n    __namespace = \"temp\";\n\n    cacheSetState?: Record<string, any>;\n\n    __init() {\n      this.state = {};\n      this.cacheSetState = {};\n    }\n\n    async componentDidMount() {\n      const ctx = this.props.__ctx;\n      if (!ctx) return;\n      const { setState } = ctx;\n      this.cacheSetState = setState;\n      ctx.setState = (...args: any) => {\n        setState.call(ctx, ...args);\n        setTimeout(() => this.forceUpdate(), 0);\n      };\n      this.__debug(`componentDidMount - ${this.props.__schema.fileName}`);\n    }\n\n    async componentDidUpdate() {\n      this.__debug(`componentDidUpdate - ${this.props.__schema.fileName}`);\n    }\n\n    async componentWillUnmount() {\n      const ctx = this.props.__ctx;\n      if (!ctx || !this.cacheSetState) return;\n      ctx.setState = this.cacheSetState;\n      delete this.cacheSetState;\n      this.__debug(`componentWillUnmount - ${this.props.__schema.fileName}`);\n    }\n\n    async componentDidCatch(e: any) {\n      logger.warn(e);\n      this.__debug(`componentDidCatch - ${this.props.__schema.fileName}`);\n    }\n\n    render() {\n      const { __schema, __ctx } = this.props;\n      if (this.__checkSchema(__schema)) {\n        return \"下钻编辑 schema 结构异常！\";\n      }\n\n      this.__debug(\n        `${TempRenderer.displayName} render - ${__schema?.fileName}`,\n      );\n\n      return this.__renderContent(this.__renderContextProvider({ __ctx }));\n    }\n  };\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","import React, { forwardRef } from \"react\";\nimport Debug from \"debug\";\nimport adapter from \"../adapter\";\nimport contextFactory from \"../context\";\nimport { isFileSchema, isEmpty } from \"../utils\";\nimport baseRendererFactory from \"./base\";\nimport divFactory from \"../components/Div\";\nimport { IRenderComponent, IRendererProps, IRendererState } from \"../types\";\nimport {\n  IPublicTypeNodeSchema,\n  IPublicTypeRootSchema,\n} from \"@yuntoo/page-types\";\nimport logger from \"../utils/logger\";\nimport { PropsWithChildren } from \"react\";\nimport \"./renderer.css\";\n\nexport default function rendererFactory(): IRenderComponent {\n  const { Component, createElement, findDOMNode } = adapter.getRuntime();\n  const RENDERER_COMPS: any = adapter.getRenderers();\n  const BaseRenderer = baseRendererFactory();\n  const AppContext = contextFactory();\n  const Div = divFactory();\n\n  const ConfigProvider = adapter.getConfigProvider() || Div;\n\n  const debug = Debug(\"renderer:entry\");\n\n  // 使用React.forwardRef包装FaultComponent以支持ref\n  const FaultComponent = forwardRef<\n    HTMLDivElement,\n    IPublicTypeNodeSchema & {\n      error: Error;\n      schema: IPublicTypeNodeSchema;\n    }\n  >((props, ref) => {\n    const { error } = props;\n    const componentName =\n      props.componentName || props.schema?.componentName || \"\";\n\n    logger.error(\n      `%c${componentName} 组件渲染异常, 异常原因: ${\n        props.error?.message || props.error || \"未知\"\n      }`,\n      \"color: #ff0000;\",\n    );\n\n    return (\n      <div\n        ref={ref}\n        className=\"alc-fault-component-container\" // 增加classname标记, 以便控制\n        data-node-id={props.schema?.id} // 增加data-node-id标记, 以便点选模式可以选中\n      >\n        <div className=\"alc-fault-component-container-error-message\">\n          <strong>\n            组件 {componentName}（{props.schema?.id}） 渲染异常，请检查组件配置\n          </strong>\n        </div>\n        <code className=\"alc-fault-component-container-error-stark\">\n          {error?.name}: {error?.message || \"未知\"}\n        </code>\n      </div>\n    );\n  });\n  // FaultComponent.displayName = \"FaultComponent\";\n  // return createElement(\n  //   Div,\n  //   {\n  //     className: \"alc-fault-component-container\", // 增加classname标记, 以便控制\n  //     \"data-node-id\": props.schema?.id, // 增加data-node-id标记, 以便点选模式可以选中\n  //     style: {\n  //       width: \"100%\",\n  //       height: \"50px\",\n  //       lineHeight: \"50px\",\n  //       textAlign: \"center\",\n  //       fontSize: \"15px\",\n  //       color: \"#ff0000\",\n  //       border: \"2px solid #ff0000\",\n  //     },\n  //   },\n  //   `${componentName} 组件渲染异常，请查看控制台日志`,\n  // );\n  // }\n\n  function NotFoundComponent(\n    props: PropsWithChildren<IRendererProps & { componentName: string }>,\n  ) {\n    if (props.enableStrictNotFoundMode) {\n      return `${props.componentName || \"\"} Component Not Found`;\n    }\n    return createElement(\n      Div,\n      props,\n      props.children || `${props.componentName || \"\"} Component Not Found`,\n    );\n  }\n\n  return class Renderer extends Component<IRendererProps> {\n    static displayName = \"Renderer\";\n\n    state: Partial<IRendererState> = {};\n\n    __ref: any;\n\n    static defaultProps: IRendererProps = {\n      appHelper: undefined,\n      components: {},\n      designMode: \"\",\n      suspended: false,\n      schema: {} as IPublicTypeRootSchema,\n      onCompGetRef: () => {},\n      onCompGetCtx: () => {},\n      thisRequiredInJSE: true,\n    };\n\n    static findDOMNode = findDOMNode;\n\n    constructor(props: IRendererProps, context: any) {\n      super(props, context);\n      this.state = {};\n      debug(`entry.constructor - ${props?.schema?.componentName}`);\n    }\n\n    async componentDidMount() {\n      debug(\n        `entry.componentDidMount - ${\n          this.props.schema && this.props.schema.componentName\n        }`,\n      );\n    }\n\n    async componentDidUpdate() {\n      debug(`entry.componentDidUpdate - ${this.props?.schema?.componentName}`);\n    }\n\n    async componentWillUnmount() {\n      debug(\n        `entry.componentWillUnmount - ${this.props?.schema?.componentName}`,\n      );\n    }\n\n    componentDidCatch(error: Error) {\n      this.state.engineRenderError = true;\n      this.state.error = error;\n    }\n\n    shouldComponentUpdate(nextProps: IRendererProps) {\n      return !nextProps.suspended;\n    }\n\n    __getRef = (ref: any) => {\n      this.__ref = ref;\n      if (ref) {\n        this.props.onCompGetRef?.(this.props.schema, ref);\n      }\n    };\n\n    isValidComponent(SetComponent: any) {\n      return SetComponent;\n    }\n\n    createElement(SetComponent: any, props: any, children?: any) {\n      return (this.props.customCreateElement || createElement)(\n        SetComponent,\n        props,\n        children,\n      );\n    }\n\n    getNotFoundComponent() {\n      return this.props.notFoundComponent || NotFoundComponent;\n    }\n\n    getFaultComponent() {\n      const { faultComponent, faultComponentMap, schema } = this.props;\n      if (faultComponentMap) {\n        const { componentName } = schema;\n        return (\n          faultComponentMap[componentName] || faultComponent || FaultComponent\n        );\n      }\n      return faultComponent || FaultComponent;\n    }\n\n    getComp() {\n      const { schema, components } = this.props;\n      const { componentName } = schema;\n      const allComponents = { ...RENDERER_COMPS, ...components };\n      let Comp =\n        allComponents[componentName] ||\n        RENDERER_COMPS[`${componentName}Renderer`];\n      if (Comp && Comp.prototype) {\n        if (!(Comp.prototype instanceof BaseRenderer)) {\n          Comp = RENDERER_COMPS[`${componentName}Renderer`];\n        }\n      }\n      return Comp;\n    }\n\n    render() {\n      const { schema, designMode, appHelper, components } = this.props;\n      if (isEmpty(schema)) {\n        return null;\n      }\n      // 兼容乐高区块模板\n      if (schema.componentName !== \"Div\" && !isFileSchema(schema)) {\n        logger.error(\n          \"The root component name needs to be one of Page、Block、Component, please check the schema: \",\n          schema,\n        );\n        return \"模型结构异常\";\n      }\n      debug(\"entry.render\");\n\n      const allComponents = {\n        ...RENDERER_COMPS,\n        ...components,\n      };\n      const Comp = this.getComp();\n\n      if (this.state && this.state.engineRenderError) {\n        return createElement(this.getFaultComponent(), {\n          ...this.props,\n          error: this.state.error,\n          // ref: this.__getRef,\n        });\n      }\n\n      if (Comp) {\n        return createElement(\n          AppContext.Provider,\n          {\n            value: {\n              appHelper,\n              components: allComponents,\n              engine: this,\n            },\n          },\n          createElement(\n            ConfigProvider,\n            {\n              device: this.props.device,\n              locale: this.props.locale,\n            },\n            createElement(Comp, {\n              key:\n                schema.__ctx &&\n                `${schema.__ctx.lceKey}_${schema.__ctx.idx || \"0\"}`,\n              ref: this.__getRef,\n              __appHelper: appHelper,\n              __components: allComponents,\n              __schema: schema,\n              __designMode: designMode,\n              ...this.props,\n            }),\n          ),\n        );\n      }\n      return null;\n    }\n  };\n}\n","import React, {\n  Component,\n  PureComponent,\n  createElement,\n  createContext,\n  forwardRef,\n  ReactInstance,\n  ContextType,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n  adapter,\n  pageRendererFactory,\n  componentRendererFactory,\n  blockRendererFactory,\n  addonRendererFactory,\n  tempRendererFactory,\n  rendererFactory,\n  types,\n} from \"@yuntoo/page-renderer-core\";\n\n// 设置全局变量以兼容旧代码\nwindow.React = React;\n(window as any).ReactDom = ReactDOM;\n\n// 设置渲染器运行时环境\nadapter.setRuntime({\n  Component,\n  PureComponent,\n  createContext,\n  createElement,\n  forwardRef,\n  findDOMNode: ReactDOM.findDOMNode,\n});\n\n// 设置各种渲染器\nadapter.setRenderers({\n  PageRenderer: pageRendererFactory(),\n  ComponentRenderer: componentRendererFactory(),\n  BlockRenderer: blockRendererFactory(),\n  AddonRenderer: addonRendererFactory(),\n  TempRenderer: tempRendererFactory(),\n  DivRenderer: blockRendererFactory(),\n});\n\n/**\n * 创建React渲染器\n */\nfunction factory(): types.IRenderComponent {\n  const Renderer = rendererFactory();\n  return class ReactRenderer extends Renderer implements Component {\n    readonly props: types.IRendererProps;\n\n    context: ContextType<any>;\n\n    setState: (state: types.IRendererState, callback?: () => void) => void;\n\n    forceUpdate: (callback?: () => void) => void;\n\n    refs: {\n      [key: string]: ReactInstance;\n    };\n\n    constructor(props: types.IRendererProps, context: ContextType<any>) {\n      super(props, context);\n    }\n\n    isValidComponent(obj: any) {\n      return (\n        obj?.prototype?.isReactComponent || obj?.prototype instanceof Component\n      );\n    }\n  };\n}\n\n// 导出工厂创建的渲染器实例\nexport default factory();\n"],"names":["react","reactDom","Adapter","Component","PureComponent","createElement","createContext","forwardRef","findDOMNode","runtime","m","flag","env","renderers","Comp","adapter","contextFactory","context","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","lodash","RuntimeDataSourceStatus","Rerender","isObject","levels","bizNameColors","bodyColors","levelMarks","outputFunction","bizNameColorConfig","shouldOutput","logLevel","targetLevel","bizName","targetBizName","isLevelFit","isBizNameFit","output","args","getLogArgs","getColor","color","bodyColor","argsArray","prefix","processedArgs","parseLogConf","logConf","options","pair","defaultOptions","Logger","_location","targetOptions","getLogger","config","excludePropertyNames","cloneEnumerableProperty","target","origin","excludes","d","hasSymbol","REACT_FORWARD_REF_TYPE","REACT_MEMO_TYPE","isReactClass","obj","isForwardRefType","isMemoType","isReactComponent","extendStatics","b","p","__extends","__","__assign","t","s","n","__rest","e","__read","o","r","ar","error","__spreadArray","to","from","pack","l","propTypes","global","MapShim","getIndex","arr","result","entry","index","class_1","entries","callback","ctx","_i","_a","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","throttle","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","observer","observers","changesDetected","activeObservers","_b","propertyName","isReflowProperty","defineConfigurable","props","getWindowOf","ownerGlobal","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","size","position","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getHTMLElementContentRect","clientWidth","clientHeight","horizPad","vertPad","width","height","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","getContentRect","createReadOnlyRect","x","y","Constr","rect","ResizeObservation","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","observations","_this","observation","ResizeObserver","method","componentWillMount","state","componentWillReceiveProps","nextProps","updater","prevState","componentWillUpdate","nextState","prevProps","polyfill","prototype","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","componentName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","getDefaultExportFromCjs","browser","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","len","Item","array","noop","name","dir","browserExports","process$1","ieVersion","isProduction","PRODUCTION_ENV","deprecated","instead","component","warning","msg","typeOf","isArrayLike","length","type","isPromise","isPlainObject","ctor","prot","shallowEqual","objA","objB","compare","keyA","keyB","hasCallback","valA","valB","ret","each","direction","reversed","length_1","shouldContinue","_isInObj","isArray","pickOthers","holdProps","others","pickProps","pickAttrsWith","isNil","deepMerge","sources","source","React","isFunctionComponent","isClassComponent","isForwardRefComponent","$$typeof","isReactFragmentElement","values","vals","camelcase","str","$0","$1","hyphenate","strType","template","tpl","object","tplType","hasDOM","hasClass","node","className","addClass","_force","removeClass","toggleClass","matches","matchesFn","_body","selector","_getComputedStyle","PIXEL_PATTERN","removePixel","_getStyleValue","floatMap","getStyle","style","setStyle","val","getNodeHozWhitespace","paddingLeft","paddingRight","marginLeft","marginRight","isScrollDisplay","element","scrollbarStyle","scrollbar","scrollDiv","scrollbarWidth","scrollbarHeight","hasScroll","containerNode","overflow","parentNode","getOffset","win","getPixels","PX_REG","VH_REG","_1vh","getMatches","dom","getClosest","saveRef","ref","off","eventName","useCapture","on","once","__fn","dayjs_1","this","a","f","u","c","h","M","Y","v","D","g","_","require$$0","dayjs","advancedFormat","quarterOfYear","customParseFormat","updateLocale","localeData","weekOfYear","weekYear","datejs","prevent","makeChain","fns","j","fn","bindCtx","ns","fnName","promiseCall","success","failure","invoke","func","renderNode","render","defaultRender","renderProps","checkDate","format","date","checkRangeDate","inputType","disabled","strictly","begin","end","disabledBegin","disabledEnd","getValueWithDayjs","checkValueWithDayjs","animationEndEventNames","transitionEventNames","_supportEnd","names","el","_supportCSS","item","animation","transition","flex","_KEYCODE","_isVisible","nodeName","_isFocusable","tabIndex","hasTabIndex","getFocusNodeList","res","nodeList","lastFocusElement","saveLastFocusNode","clearLastFocusNode","backLastFocusNode","limitTabRange","KEYCODE","tabNodeList","maxIndex","targetIndex","focusRef","escapeForId","text","randomId","max","rand","timestamp","guid","_dom","_env","events","_events","_func","log","_log","_object","_string","support","_support","focus","_focus","_guid","htmlId","_htmlId","hookCallback","hooks","setHookCallback","input","hasOwnProp","isObjectEmpty","k","isUndefined","isNumber","isDate","map","arrLen","extend","createUTC","locale","strict","createLocalOrUTC","defaultParsingFlags","getParsingFlags","some","isValid","flags","parsedParts","isNowValid","createInvalid","momentProperties","updateInProgress","copyConfig","prop","momentPropertiesLen","Moment","isMoment","warn","deprecate","firstTime","argLen","deprecations","deprecateSimple","isFunction","set","mergeConfigs","parentConfig","childConfig","Locale","keys","defaultCalendar","calendar","mom","now","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","longDateFormat","formatUpper","tok","defaultInvalidDate","invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","relativeTime","withoutSuffix","string","isFuture","pastFuture","diff","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","getPrioritizedUnits","unitsObj","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","isLeapYear","year","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","getSetYear","makeGetSet","getIsLeapYear","unit","keepTime","set$1","get","isUTC","month","stringGet","stringSet","prioritized","prioritizedLen","mod","indexOf","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","localeMonthsShort","handleStrictParse","monthName","ii","llc","localeMonthsParse","setMonth","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","shortP","longP","createDate","ms","createUTCDate","firstWeekOffset","dow","doy","fwd","fwdlw","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","weekdays","localeWeekdaysShort","localeWeekdaysMin","handleStrictParse$1","weekdayName","localeWeekdaysParse","getSetDayOfWeek","day","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","weekdaysShortRegex","weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","meridiem","lowercase","matchMeridiem","kInput","pos","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","hours","minutes","isLower","baseConfig","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","next","split","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","getSetGlobalLocale","data","getLocale","defineLocale","tmpLocale","listLocales","checkOverflow","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","rfc2822","obsOffsets","configFromISO","match","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","defaults","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","w","temp","weekdayOverflow","curWeek","createLocal","skipped","stringLength","totalParsedInputLength","era","meridiemFixWrap","hour","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","min","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","months","weeks","days","seconds","milliseconds","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","offsetFromString","chunkOffset","matcher","chunk","parts","cloneWithOffset","model","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","period","dur","tmp","isAdding","updateOffset","add","subtract","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","property","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","clone","isAfter","localInput","isBefore","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","toString","toISOString","keepOffset","utc","inspect","zone","datetime","suffix","inputString","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOf","startOfDate","endOf","valueOf","unix","toDate","toArray","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","localeEras","eras","localeErasParse","eraName","abbr","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","erasAbbrRegex","erasNarrowRegex","abbrPieces","namePieces","narrowPieces","erasName","erasAbbr","erasNarrow","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","preParsePostFormat","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","abs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","round","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","humanize","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","proto$2","parseBoundary","getContextProps","displayName","pure","rtl","device","popupContainer","errorBoundary","nextPrefix","nextLocale","nextDefaultPropsConfig","nextPure","nextWarning","nextRtl","nextDevice","nextPopupContainer","nextErrorBoundary","newPrefix","localeFromContext","newDisplayName","newLocale","zhCN","newPure","newRtl","newErrorBoundary","q","z","A","reactIs_production_min","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$1","reactIs","REACT_STATICS","KNOWN_STATICS","FORWARD_REF_STATICS","MEMO_STATICS","TYPE_STATICS","getStatics","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","hoistNonReactStatics_cjs","DefaultUI","PropTypes","ErrorBoundary","_super","errorInfo","afterCatch","FallbackUI","getDisplayName","globalLocales","currentGlobalLanguage","currentGlobalLocale","currentGlobalRtl","initLocales","setLanguage","language","setLocale","setDirection","getLanguage","getDirection","isCanPassRefComponent","ConfigedComponent","_c","_d","contextProps","newContextProps","newOthers","newProps","content","_e","open","othersBoundary","hoistNonReactStatic","mapKeys","newKey","replaceKey","transformContext","Consumer","children","Cache","defaultValue","maps","nextkey","childContextCache","setMomentLocale","moment","setDateLocale","ConfigProvider","defaultPropsConfig","Children","ConfigProvider$1","assignSubComponent","SubComponents","_interopRequireDefault","exports","_hasClass","replaceClassName","origClass","classToRemove","_propTypes","timeoutsShape","classNamesShape","Transition_1","_interopRequireWildcard","_react","_reactDom","require$$2","_reactLifecyclesCompat","require$$3","_PropTypes","require$$4","newObj","desc","_objectWithoutPropertiesLoose","excluded","sourceKeys","_inheritsLoose","subClass","superClass","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","parentGroup","appear","initialStatus","_proto","_ref","nextIn","nextStatus","status","exit","enter","mounting","_this2","appearing","timeouts","enterTimeout","_this3","_this4","active","event","handler","doesNotHaveTimeoutOrListener","_this$props","childProps","child","pt","_len","_key","_default","_addClass","_removeClass","_Transition","require$$5","_extends","CSSTransition","_this$getClassNames","_this$getClassNames2","activeClassName","appearClassName","enterClassName","doneClassName","_this$getClassNames3","_this$getClassNames4","_this$getClassNames5","isStringClassNames","_this$getClassNames6","ChildMapping","getChildMapping","mergeChildMappings","getInitialChildMapping","getNextChildMapping","mapFn","mapper","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","getProp","onExited","prevChildMapping","nextChildMapping","hasPrev","hasNext","prevChild","isLeaving","_ChildMapping","_assertThisInitialized","self","defaultProps","TransitionGroup","handleExited","firstRender","currentChildMapping","childFactory","_TransitionGroup","ReplaceTransition","_args","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_len7","_key7","idx","originalArgs","_child$props","inProp","_React$Children$toArr","first","second","propName","_CSSTransition","_ReplaceTransition","reactTransitionGroup","prefixes","getStyleProperty","AnimateChild","_this_1","listener","done","id","endListener","listeners","id_1","transitionEndListener","animationEndListener","transitionDelay","transitionDuration","animationDelay","animationDuration","isAppearing","hook","FirstChild","childrenArray","Animate","animationAppear","singleMode","beforeAppear","onAppear","afterAppear","beforeEnter","onEnter","afterEnter","beforeLeave","onLeave","afterLeave","animateChildren","Expand","newAnimation","OverlayAnimate","visible","mountOnEnter","unmountOnExit","onEntering","onEntered","onExit","onExiting","animateProps","animationMap","animateClsMap","cls","AnimateWithSubComponent","overlayManager","overlay","findNode","param","realTarget","getContainerNode","targetNode","Gateway","cloneElement","createPortal","Gateway$1","VIEWPORT","getPageX","getPageY","_getSize","_getElementRect","elem","container","offsetTop","offsetLeft","scrollTop","scrollLeft","treatAsWindow","_getViewportSize","getContainer","baseElement","calcContainer","Position","align","baseElementRect","pinElementRect","viewportSize","pinAlign","top","left","pinElement","pinFollowBaseElementWhenFixed","expectedAlign","isPinFixed","isBaseFixed","firstPositionResult","pinElementPoints","baseElementPoints","pinElementParentOffset","pinElementParentScrollOffset","baseElementOffset","top_1","xOffset","yOffset","right","inViewportLeft","inViewportTop","parent","docElement","offsetParent","ignoreElementOffset","points","isViewport","ignoreScroll","body","docClientLeft","docClientTop","regExp","baseAlign","adjustOffset","elementRect","elementSize","viewportWidth","viewportHeight","postion","offsetParentWidth","place","MAX_UPDATE_COUNT","contentNode","display","visibility","beforePosition","onPosition","needAdjust","autoFit","resultAlign","containerNodeList","Overlay","willOpen","willClose","close","wrapperNode","containerNode_1","cnInfo","cn","focusNodeList","path","eventPath","safeNode","safeNodes","propChildren","hasMask","wrapperStyle","propShouldUpdatePosition","cache","wrapperClassName","onMaskMouseEnter","onMaskMouseLeave","maskClass","isChildrenInMask","stateVisible","childClazz","classnames","shouldUpdatePosition","wrapperClazz","newWrapperStyle","maskClazz","Overlay1","_setPrototypeOf","setPrototypeOf","useListener","condition","useEffect","callRef","getRelativeContainer","getOverflowNodes","overflowNodes","overflowNode","getViewPortExcludeSelf","isScrollableElement","isWebKit","isContainingBlock","ele","webkit","css","isLastTraversableElement","getContainingBlock","currentElement","isContentClippedElement","scrollWidth","scrollHeight","getRect","_document$documentEle","_width","_height","_target$getBoundingCl","getOffsetParent","fallbackViewportElement","getViewPort","elt","wait","previous","getViewTopLeft","_node$getBoundingClie","getWidthHeight","_getBoundingClientRec","getScrollbarWidth","getHTMLElement","getTargetNode","isSameObject","object1","object2","o1keys","o2keys","useEvent","handleRef","useRef","useLayoutEffect","useCallback","_createForOfIteratorHelperLoose","_unsupportedIterableToArray","_arrayLikeToArray","placementMap","getXY","staticInfo","targetInfo","containerInfo","overlayInfo","opoints","placementOffset","basex","basey","setPointX","point","positive","plus","setPointY","shouldResizePlacement","viewport","_getViewTopLeft","vleft","vtop","vwidth","vheight","vscrollTop","vscrollLeft","nt","nl","getNewPlacements","viewportInfo","_p$split","_p$split$","topOut","leftOut","rightOut","bottomOut","forbiddenSet","forbid","ps","allPlacements","canTryPlacements","reverseMap","directionOrderWeights","alignOrderWeights","after","before","_after$split","afterDirection","_after$split$","afterAlign","_before$split","beforeDirection","_before$split$","beforeAlign","afterDirectionWeight","afterAlignWeight","beforeDirectionWeight","beforeAlighWeight","reverseDirection","getBackupPlacement","_p$split2","outNumber","_maps$find","backDirection","adjustXY","placement","xAdjust","yAdjust","cLeft","cTop","oWidth","oHeight","vWidth","vHeight","autoAdjustPosition","placements","_iterator","_step","_getXY2","_nLeft","_nTop","backupPlacement","_getXY","nLeft","nTop","getScrollerRect","scroller","_getViewTopLeft2","getPlacements","scrollNode","oplacement","_config$placementOffs","_config$points","_config$offset","_config$position","_config$autoAdjust","autoAdjust","_config$autoHideScrol","autoHideScrollOverflow","_getWidthHeight","owidth","oheight","_result","twidth","theight","tleft","ttop","_getXY3","adjustResult","adjustXYResult","_iterator2","_step2","_getRect","_top","_left","OverlayContext","_excluded","_excluded2","RefWrapper","_overflowRef$current","_overflowRef$current2","maskClassName","maskStyle","_props$canCloseByMask","canCloseByMask","maskRender","fixed","_props$onRequestClose","onRequestClose","onOpen","onClose","_props$container","_props$disableScroll","disableScroll","_props$canCloseByOutS","canCloseByOutSideClick","_props$canCloseByEsc","canCloseByEsc","_props$cache","_props$autoFocus","autoFocus","_props$isAnimationEnd","isAnimationEnd","owrapperStyle","_useState","useState","firstVisible","setFirst","_useState2","forceUpdate","positionStyleRef","_useState3","setContainer","targetRef","preTarget","overlayRef","containerRef","maskRef","overflowRef","lastFocus","ro","_useState4","uuid","_useContext","useContext","setVisibleOverlayToParent","otherContext","childIDMap","handleOpen","handleClose","getVisibleOverlayFromChild","updatePosition","overlayNode","overlayRefCallback","nodeRef","targetElement","waitTime","throttledUpdatePosition","focusableNodes","clickEvent","_step$value","oNode","_node","safeNodeList","_safeNode","keydownEvent","scrollEvent","originStyle","newChildren","maskNode","Popup","_props$triggerType","triggerType","triggerClickKeyCode","defaultVisible","_props$onVisibleChang","onVisibleChange","_props$placement","_props$canCloseByTrig","canCloseByTrigger","_props$delay","mouseEnterDelay","mouseLeaveDelay","_props$overlayProps","overlayProps","_props$followTrigger","followTrigger","otarget","_props$disabled","setVisible","triggerRef","mouseLeaveTimer","mouseEnterTimer","overlayClick","overlayChild","handleVisibleChange","handleClick","handleKeyDown","keycodes","handleMouseEnter","targetType","handleMouseLeave","handleFocus","handleBlur","handleOverlayClick","handleRequestClose","triggerProps","overlayOtherProps","triggerTypeList","_child$props2","_child$props3","_child$props4","_child$props5","_child$props6","overlayContainer","_findDOMNode","refWrapperRef","InternalOverlay","Overlay2","beforeOpen","afterOpen","beforeClose","afterClose","markAnimationEnd","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","childrenNode","wraperCls","handlePosition","triggerClickKeycode","trigger","triggerTypes","onClick_1","onKeyDown_1","onMouseEnter_1","onMouseLeave_1","onFocus_1","onBlur_1","onMouseDown","onMouseEnter","onMouseLeave","findTriggerNode","Popup1","panimation","_f","_g","setAnimation","_h","triggerNode","v1Props","v2","Popup2","WithSubOverlay","Overlay$1","Icon","cx","sizeStyle","React.createElement","PropTypes.string","PropTypes.node","PropTypes.oneOfType","PropTypes.oneOf","PropTypes.number","PropTypes.object","customCache","ConfigIcon","createFromIconfontCN","scriptUrl","extraCommonProps","hasExist","script","Iconfont","IconWithSub","NextIcon","normalMap","edgeMap","BalloonInner","closable","isTooltip","title","alignEdge","alignMap","_prefix","closableInTitle","closableInContent","titleCls","closeIcon","getDisabledCompatibleTrigger","displayStyle","alignList","Balloon","newAlign","resAlign","alignKey","safeId","onClick","onHover","popupStyle","popupClassName","popupProps","trOrigin","_offset","transformOrigin","_style","ariaTrigger","newTrigger","otherProps","Balloon$2","Tooltip","palign","newTriggerType","BalloonWithSub","Inner","alignment","onCloseClick_1","onVisibleChange_1","newOnVisibleChange","parentMode","root","menu","header","footer","focusable","focusedKey","focused","scrollBottom","itemBottom","inlineLevel","groupIndent","needIndent","inlineIndent","itemClassName","newClassName","paddingProp","TagName","role","SelectableItem","selected","selectMode","selectedKeys","onSelect","hasSelectedIcon","isSelectIconRight","rootSelectedIcon","rootSelectIconRight","icons","iconsSelect","isValidElement","helper","textProps","getWidth","normalizeToArray","items","isSibling","currentPos","targetPos","currentNums","targetNums","num","isAncestor","isAvailablePos","refPos","_p2n","getFirstAvaliablelChildKey","parentPos","getChildSelected","_k2n","_keyPos","PopupItem","openKeys","level","autoWidth","rootPopupAutoWidth","rootPopupAlign","popupAlign","popupAutoWidth","itemNode","menuNode","popupNodes","selectable","label","NewItem","isChildSelected","itemProps","positionProps","propCls","posCls","otherPostion","hasSubMenu","selectableFromProps","noIcon","rootTriggerType","triggerIsIcon","arrowProps","arrow","popup","SubMenu","mode","subMenuContentClassName","propsTriggerType","inlineArrowDirection","expandAnimation","liProps","arrorProps","SelectabelItem","newSubMenuContentClassName","roleMenu","roleItem","subMenu","newMode","MENUITEM_OVERFLOWED_CLASSNAME","getIndicatorsItem","isPlaceholder","renderMore","moreCls","moreNode","renderMoreCls","addIndicators","lastVisibleIndex","overflowedItems","getNewChildren","hozInLine","k2n","p2n","loop","posPrefix","indexWrapper","keyArray","newChild","childLevel","Menu","defaultSelectedKeys","tabbableKey","spaceWidth","currentSumWidth","menuItemNodes","moreWidth","totalLen","liWidth","initOpenKeys","defaultOpenKeys","defaultOpenAll","openMode","newOpenKeys","keyPath","labelPath","nums","parentNums","parent_1","select","menuItem","newSelectedKeys","avaliableKey","parentKey","hozAlign","footerWrapperClassName","embeddable","flatenContent","ariaMultiselectable","headerElement","itemsElement","footerElement","shouldWrapItemsAndFooter","Menu$3","UIState","onFocus","onBlur","withCheckboxContext","Checkbox","WrappedComp","React.Component","PropTypes.func","PropTypes.bool","PropTypes.array","isChecked","selectedValue","checked","indeterminate","nextContext","isPreview","renderPreview","othersData","childInput","labelCls","previewCls","iconCls","Checkbox$1","CheckboxGroup","currentValue","valTemp","previewed","React.Children","React.isValidElement","React.cloneElement","option","PropTypes.arrayOf","PropTypes.element","Group$6","CheckboxWithGroup","Group","itemDirection","withContext","Radio","isButton","clsInner","clsWrapper","childrenCls","radioComp","Radio$1","RadioGroup","radio","availableRef","radioRef","shape","childrtl","isButtonShape","RadioGroup$1","RadioWithSub","CheckableItem","checkType","onChange","checkDisabled","labelToggleChecked","Check","checkProps","CheckboxItem","checkboxDisabled","RadioItem","newChildClassName","Divider","menuInstance","ContextMenu","clickedPopupMenu","newOverlayProps","menuProps","create","div","closeChain","unmountComponentAtNode","newContext","MenuWithSub","indentSize","onDeselect_1","onSelect_1","newOnSelect","extra","mapIconSize","Button","button","htmlType","loading","ghost","iconSize","ghostType","btnClsObj","loadingIcon","loadingSize","count","clonedChildren","tagAttrs","ButtonGroup","groupCls","cloneChildren","Group$4","WithSubButton","newType","PRESET_COLOR_REG","Tag","closeArea","hasAnimation","animationName","isPresetColor","customColorStyle","_shape","otherTagProps","bodyClazz","tailNode","tagNode","Tag$1","clazz","Selectable","attrFilterTarget","Selectable$1","Closeable","ConfigTag","ConfigClosable","Closable","TagWithSub","Base","maxLength","opts","showLimitHint","classesLenWrap","placeholder","inputStyle","readOnly","cutString","onCompositionStart","onCompositionEnd","start","preventScroll","Base$2","addonBefore","addonAfter","addonBeforeClassName","addonAfterClassName","addonCls","beforeCls","afterCls","Group$2","preventDefault","Input","nv","strLen","hasClear","hint","hoverShowClear","lenWrap","stateWrap","clearWrap","showClear","hintIcon","inner","htmlSize","autoComplete","innerBefore","innerAfter","innerBeforeClassName","innerAfterClassName","hasBorder","addonTextBefore","addonTextAfter","inputRender","composition","hasAddon","innerCls","innerBeforeCls","innerAfterCls","dataProps","compositionProps","inputEl","inputWrap","addonBeforeCls","addonAfterCls","Password","eyeClose","showToggle","onNextFrame","cb","clearNextFrameAction","nextFrameId","isMacSafari","hiddenStyle","TextArea","maxHeight","autoHeight","minRows","maxRows","ReactDOM","minHeight","newValue","textArea","clearText","isShowLine","rows","textareStyle","wrapStyle","InputWithSub","hasLimitHint","isSingle","isNull","escapeForReg","filter","loopMap","dataSource","parseDataSourceFromChildren","deep","item2","isOption","isOptionGroup","optionTypeChildProps","isStrChild","isObjectDataSourceItem","normalizeDataSource","showDataSourceChildren","flattingDataSource","filterDataSource","addonKey","addKey","menuDataSource","getKeyItemByValue","valueMap","getValueDataSource","mapValueDS","mapMenuDS","newValueDS","newMapValueDS","_newMapDS","valueToSelectKey","DataStore","isChildren","filterLocal","NOOP","MAX_SYNC_UPDATES","isEqualSubset","constrain","minSize","VirtualList","jumpIndex","oldIndex","newIndex","scrollParent","scrollKey","actual","scroll","documentElement","trueScroll","pageSize","space","maxFrom","itemSize","maxSize","childrenLength","itemEls","ulRef","itemSizeGetter","keysList","itemsRenderer","transform","listStyle","VirtualList$2","MenuItem","MenuGroup","searchValue","highlightKey","highlightKey_1","maxCount","highlightIndex","highlightItem","notFoundContent","useVirtual","menuClassName","customProps","menuStyle","itemRender","searchKey","popupContent","popupComponent","valueRender","valueDS","fillProps_1","renderPreview_1","_props","isIE9","Select","useDetailValue","showSearch","adjustTagSize","cacheValue","itemObj","keepSearchValue","hiddenSelected","autoClearSearchValue","selectAllValues","onKeyDown","onToggleHighlightItem","hasSearch","stateValue","nextValues","selectedValues","totalValues","fillProps","maxTagCount","maxTagPlaceholder","tagInline","tagClosable","tagSize","retvalue","detailedValueArr","limitedCountValue","maxTagPlaceholderEl","totalValue","holder","selectedValueNodes","labelNode","hasArrow","valueNodes","_placeholder","triggerClazz","mirrorText","searchInput","triggerSearch","hasSelectAll","sourceCount","selectAllYet","Select$2","AutoComplete","actionType","hasPopup","mapDS","highlightHolder","_inputProps","AutoComplete$2","Option","OptionGroup","multiple","filterBy","noFoundContent","newprops","SelectWithSub","Search","filterValue","hasIcon","searchText","filterProps","buttonProps","autoHighlightFirstItem","ifFocus","searchIcon","filterSelect","searchBtn","iconsSearch","cls_1","cls_2","_othersAttributes","othersAttributes","dataAttr","Search$2","onInputFocus","overlayVisible","combox","preventSelection","isI18nData","isJSExpression","isInnerJsFunction","isJSFunction","IPublicEnumTransformStage","isRequiredPropType","propType","reactJsxRuntime_production_min","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","printWarning","ReactDebugCurrentFrame","stack","argsWithFormat","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","getWrappedName","outerType","innerType","wrapperName","functionName","getContextName","getComponentNameFromType","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","reenableLogs","ReactCurrentDispatcher","describeBuiltInComponentFrame","ownerFn","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","owner","checkPropTypes","typeSpecs","location","has","typeSpecName","error$1","err","ex","isArrayImpl","typeName","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","hasValidKey","warnIfStringRefCannotBeAutoConverted","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","jsxDEV","maybeKey","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","iteratorFn","iterator","step","validatePropTypes","_name","validateFragmentProps","fragment","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","beforeExample","afterExample","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","REACT_CONSUMER_TYPE","REACT_VIEW_TRANSITION_TYPE","REACT_CLIENT_REFERENCE","reactIs_production","ReactPropTypesSecret","ReactPropTypesSecret_1","propIsEnumerable","shouldUseNative","test1","test2","order2","test3","letter","objectAssign","symbols","message","getStack","checkPropTypes_1","ReactIs","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","throwOnDirectAccess","ITERATOR_SYMBOL","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","isRequired","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","isSymbol","PropTypes2","ReactIs.isElement","logger","transformPropTypesRuleToString","rule","ruleFunction","transformExpression","code","transformFunction","transformBoolStr","getRuntimeJsValue","getRuntimeBaseValue","getRuntimeValueFromConfig","jsValue","buildJsonObj","params","jsExprValue","newParams","detectJSExpressionDependency","buildShouldFetch","ds","buildOptions","hasDependency","optionsFunction","fetchOptions","defaultWillFetch","getRequestHandler","requestHandlersMap","promiseSettled","promises","commonHandler","response","antd_1","defaultErrorHandler","errorMsg","errorMessage","getEnv","hostname","getApiPrefix","baseHostname","processResponse","getTraceparent","generateTraceparent","parentTraceparent","traceId","parentId","url","urlObj","shouldIncludeCookies","post","YTFetch","attachBaseURL","baseURL","getRuntimeApiPrefix","ytFetchRuntime","createFetchHandler","uri","headers","singleMatcher","multiMatcher","decodeComponents","components","decode","customDecodeURIComponent","replaceMap","decodeUriComponent","encodedURI","includeKeys","predicate","splitOnFirst","separatorIndex","isNullOrUndefined","strictUriEncode","encodeFragmentIdentifier","encoderForArrayFormat","encode","keyValueSeparator","parserForArrayFormat","accumulator","isEncodedArray","arrayValue","validateArrayFormatSeparator","decodeComponent","keysSorter","removeHash","hashStart","getHash","hash","extract","queryStart","parse","query","formatter","returnValue","parameter","parameter_","key2","value2","stringify","shouldFilter","objectCopy","parseUrl","url_","stringifyUrl","queryFromUrl","queryString","urlObjectForFragmentEncode","pick","fragmentIdentifier","exclude","exclusionFilter","createUrlParamsHandler","qs","createVariableHandler","dataHandler","defaultDataHandler","DEFAULT_VALUES","adapt2Runtime","errorHandler","interpretConfigList","interpretDataHandler","isInit","isSync","builtShouldFetch","shouldFetch","requiredParams","RuntimeDataSourceItem","dataSourceConfig","request","merge","newOptionsStr","oldOptionsStr","requestResult","DATA_SOURCE_TYPES","reloadDataSourceFactory","dataSourceMap","allAsyncLoadings","remainRuntimeDataSourceList","reloadSpecificDataSourcesFactory","dsIds","dsMap","dsId","createInterpret","runtimeDataSource","current","divFactory","visualDomFactory","cell","__componentName","mainContent","logger$1","ErrorKind","TYPE","SKELETON_TYPE","isLiteralElement","isArgumentElement","isNumberElement","isDateElement","isTimeElement","isSelectElement","isPluralElement","isPoundElement","isTagElement","isNumberSkeleton","isDateTimeSkeleton","SPACE_SEPARATOR_REGEX","DATE_TIME_REGEX","parseDateTimeSkeleton","skeleton","WHITE_SPACE_REGEX","parseNumberSkeletonFromString","stringTokens","stringTokens_1","stringToken","stemAndOptions","stem","options_1","icuUnitToEcma","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","g1","g2","parseSign","parseConciseScientificAndEngineeringStem","signDisplay","parseNotationOptions","opt","signOpts","parseNumberSkeleton","tokens_1","all","g3","g4","g5","conciseScientificAndEngineeringOpts","timeData","getBestPattern","skeletonCopy","patternPos","patternChar","extraLength","hourLen","dayPeriodLen","dayPeriodChar","hourChar","getDefaultHourSymbolFromLocale","hourCycle","languageTag","regionTag","hourCycles","SPACE_SEPARATOR_START_REGEX","SPACE_SEPARATOR_END_REGEX","createLocation","hasNativeStartsWith","hasNativeFromCodePoint","hasNativeFromEntries","hasNativeCodePointAt","hasTrimStart","hasTrimEnd","hasNativeIsSafeInteger","isSafeInteger","REGEX_SUPPORTS_U_AND_Y","re","RE","startsWith","search","fromCodePoint","codePoints","elements","fromEntries","entries_1","codePointAt","trimStart","trimEnd","matchIdentifierAtIndex","IDENTIFIER_PREFIX_RE_1","_isWhiteSpace","_isPatternSyntax","Parser","nestingLevel","parentArgType","expectingCloseTag","char","_isAlpha","startPosition","tagName","childrenResult","endTagStartPosition","closingTagNameStartPosition","closingTagName","startOffset","_isPotentialElementNameChar","parseQuoteResult","parseUnquotedResult","parseLeftAngleResult","_isAlphaOrSlash","ch","openingBracePosition","startingPosition","endOffset","endPosition","typeStartPosition","argType","typeEndPosition","styleAndLocation","styleStartPosition","styleLocation","argCloseResult","location_1","dateTimePattern","typeEndPosition_1","identifierAndLocation","pluralOffset","optionsResult","location_2","nestedBraces","apostrophePosition","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selectorLocation","fragmentResult","expectNumberError","invalidNumberError","hasDigits","decimal","kind","pattern","currentOffset","targetOffset","nextCode","codepoint","pruneLocation","els","memoize","cacheDefault","serializer","serializerDefault","strategy","strategyDefault","isPrimitive","monadic","computedValue","variadic","assemble","serialize","strategyVariadic","ObjectWithoutPrototypeCache","strategies","ErrorCode","FormatError","originalMessage","InvalidValueError","variableId","InvalidValueTypeError","MissingValueError","PART_TYPE","mergeLiteral","part","lastPart","isFormatXMLElementFn","formatToParts","formatters","currentPluralValue","els_1","varName","value_1","formatFn","chunks","mergeConfig","c1","c2","defaultConfig","configs","createFastMemoizeCache","store","createDefaultFormatters","IntlMessageFormat","overrideFormats","supportedLocales","EXPRESSION_TYPE","isSchema","schema","isEmpty","isValidProps","isFileSchema","inSameDomain","getFileCssName","fileName","isJSSlot","getValue","pre","cur","getI18n","messages","transformArrayToMap","overwrite","curKey","transformStringToFunction","parseExpression","thisRequired","logScope","contextArr","tarStr","parseThisRequiredExpression","capitalizeFirstLetter","word","isVariable","parseI18n","i18nInfo","forEach","targetObj","parseData","isDataView","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","Headers","oldValue","thisArg","consumed","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","encoding","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","isConsumed","methods","normalizeMethod","upcased","Request","ctrl","reParamSearch","reQueryString","form","bytes","parseHeaders","rawHeaders","preProcessedHeaders","line","Response","bodyInit","redirectStatuses","DOMException","fetch","xhr","abortXhr","fixUrl","factory","generateCallbackFunction","clearFunction","removeScript","scriptId","fetchJsonp","_url","jsonpCallback","timeoutId","callbackFunction","jsonpScript","RendererInstanceRegistry","instanceId","instance","instanceInfo","namespace","methodName","instanceIds","results","targetInstances","eventType","sourceInstanceId","targetInstanceId","messageType","targetInstance","rendererInstanceRegistry","patchDidCatch","baseRenderer","originalDidCatch","engine","originRender","originShouldComponentUpdate","compWrapper","Wrapper","WrapperComponent","LeafCache","documentId","initRerenderEvent","__debug","getNode","leaf","disposeFn","debounceRerender","debounce","clearRerenderEvent","leafWrapper","componentInfo","scope","getProps","getChildren","__parseData","host","curDocumentId","curDevice","setSchemaChangedSymbol","editor","componentCacheId","LeafHoc","cacheState","endTime","nodeCount","GlobalEvent.Node.Rerender","_leaf","hidden","renderUnitInfo","componentId","resetState","handlePropsChange","propChangeInfo","conditionValue","nodeCacheProps","nodeProps","dispose","nextChild","forwardedRef","rest","compProps","LeafWrapper","isUseLoop","isDesignMode","ButtonPosition","ALL_BUTTON_POSITION_LIST","actionConfig","_context","_bindDialog","otherArgs","flowList","executeFlowAction","calculateTextExprValue","confirm","Modal","doubleConfirm","confirmConfig","action","onCancel","enable","makeRequest","_bindDataSource","responseConfig","extraParams","_autoBindDataSourceParams","_bindDataSourceParams","finalParams","errorCode","redirectType","urlParams","handleRequestParams","realUrl","executeFunction","tempList","_bindForm","formInstance","jsFunction","actionMap","flowAction","dialog","closeDialog","link","reset","submit","jsAction","getActionItem","getActionItemFunc","getAction","optType","getActionRuntimeItem","actionName","componentDefine","getRealizeValue","flowResult","actionParams","handleFlowResult","__urlParams__","__record__","__ds__","__blank__","__dataSource__","__extraParam__","isTextExpr","dataSourceName","isValueObjectExpr","originValue","textExpr","urlParamsDataSource","recordDataSource","extraParamList","extraParam","getExtraParam","textExprValue","group","secondParam","thirdParam","realExtraParam","objExprArgMap","flexibleParams","propKey","newPositionList","getBizComponentNameList","comp","primaryKey","handlePrototypeCondition","prototypeList","newItem","wrapCondition","getItem","componentMap","extraQueryParams","getItemListByPosition","defaultList","bizComponentNameList","uniq","bizInfo","existGroup","getSelectDialogSnippet","dialogNode","getDialogTitle","propsData","titleDescription","dialogTitle","IconGroupNameMap","getIconfontIconList","iframe","antdIcons","symbol","getAntdIconList","lowercaseName","getIconList","iconfontIconList","AntdIconSetter","setSearch","setIcons","groups","setGroups","selectedGroup","setSelectedGroup","firstLoad","setFirstLoad","list","setList","_value","handleChange","icon","iconList","currentGroup","currentIcon","clearIcon","AntdIconSetter$1","allStyleMap","getStyleListByPosition","defaultStyleList","createButtonListSetters","additionalPosition","extraInitialValues","tempButtonList","getActionListByPosition","configure","currentRowValue","newButtonInitialValue","getItemDefaultProps","getActionPrototypeListByPosition","styleList","buttonInitialValue","defaultSetter","getActionInterventionSetter","interventionType","createFlowListSetters","activeSetter","createMessageSetters","getSelectDataSourceSnippet","dialogTypeOptions","createDoubleConfirmConfig","createResponseConfig","createServiceSelectPrototype","getSelectFormSnippet","formNode","getFormTitle","compTitle","allComponentList","getPrototypeList","onSearch","onDefaultValueFinished","onTablePageChange","onTableRemoteDataChange","onTableRemoteError","onTableRowDoubleClick","onDialogClose","eventMap","createEventSetters","initialValue","handleList","extraConfig","eventList","defaultButtonList","buttonList","tempResult","snippets","textFormat","avatarTextFormat","numberFormat","progressFormat","percentFormat","tagFormat","datetimeFormat","customFormat","enumFormat","componentFormat","formatTypeOptions","formatSettersMap","YtTableMeta","formatValue","filerItemMeta","formItemMeta","registerFormItemMeta","meta","getFilterItemMetas","metaProps","getFilterItemOptions","thumbUrl","getFormItemOptions","getFormItemMetas","metas","YtFormMeta","getFormItemDefaultProps","YtFilterMeta","ytFetch","SMART_COMPONENT_TYPE","SMART_API_BASE","SMART_COMPONENT_API","getColumnsByDatasetId","datasetId","smartComponentTypeToFormProps","modelConfig","componentType","nodeId","extraOptions","SmartMeta","componenType","datasetList","formProps","LrSmartTableMeta","renderActionConfig","resourceCodeKey","operateButtons","exportButtons","globalButtons","actionBtns","btn","metaAllVariables","executeLifeCycleMethod","thisRequiredInJSE","getSchemaChildren","baseRendererFactory","customBaseRenderer","Div","VisualDom","AppContext","DESIGN_MODE","OVERLAY_LIST","DEFAULT_LOOP_ARG_ITEM","DEFAULT_LOOP_ARG_INDEX","scopeIdx","forceReload","dsNeedReload","optionsFunc","currentOptions","cloneDeep","newOptions","cachedOptions","isEqual","newState","isDataSourceSetState","random","schemaId","instanceRegistry","cleanup","__components","__schema","customMethodsList","pageContext","compContext","__ctx","defaultState","walkComponentTree","nodes","componentDefaultVars","variable","stateKey","defaultDataSource","updateDataSource","reloadDataSource","reloadSpecificDataSources","loc","setLocaleFn","_children","parentNodeInfo","originalSchema","originalScope","parentInfo","appHelper","idy","tarChildren","displayInHook","scopeKey","compSelf","ComponentConstruct","refProps","parentList","parentSchema","parentComp","childVirtualDom","itemArg","indexArg","loopSelf","originalProps","propInfo","parseReactNode","virtualDom","argValues","handleI18nData","innerProps","i18nProp","isReactNodeFunction","isMixinReactNodeFunction","filedId","OriginalComp","ctxProps","parsedProps","originalExtraComponents","extraComponents","componentNames","pageRendererFactory","BaseRenderer","PageRenderer","schemaState","componentDefaultState","finalState","_prevState","Page","componentRendererFactory","CompRenderer","noContainer","blockRendererFactory","BlockRenderer","Block","addonRendererFactory","AddonRenderer","utils","tempRendererFactory","TempRenderer","setState","fmtLong","fmtShort","msAbs","plural","isPlural","setup","createDebug","coerce","disable","enabled","destroy","selectColor","prevTime","enableOverride","namespacesCache","enabledCache","debug","curr","delimiter","newDebug","namespaces","matchesTemplate","searchIndex","templateIndex","starIndex","matchIndex","skip","common","formatArgs","save","load","useColors","localstorage","warned","lastC","rendererFactory","RENDERER_COMPS","Debug","FaultComponent","NotFoundComponent","SetComponent","faultComponent","faultComponentMap","designMode","allComponents","Renderer"],"mappings":"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G,CAAE,oBAAqB,iBAAkB,EAE5EopF,IACLppF,EAASrB,EAASA,EAAS,CAAA,EAAIqB,CAAM,EAAG6oF,GAA0BO,CAAG,CAAC,GAE1E,QACZ,CAEQ,GAAIV,GAA4B,KAAKtvE,EAAM,IAAI,EAAG,CAC9CpZ,EAASrB,EAASA,EAAS,CAAA,EAAIqB,CAAM,EAAG6oF,GAA0BzvE,EAAM,IAAI,CAAC,EAC7E,QACZ,CACQ,IAAIiwE,EAAWL,GAAU5vE,EAAM,IAAI,EAC/BiwE,IACArpF,EAASrB,EAASA,EAAS,CAAA,EAAIqB,CAAM,EAAGqpF,CAAQ,GAEpD,IAAIO,EAAsCX,GAAyC7vE,EAAM,IAAI,EACzFwwE,IACA5pF,EAASrB,EAASA,EAAS,CAAA,EAAIqB,CAAM,EAAG4pF,CAAmC,EAEvF,CACI,OAAO5pF,CACX,CCpSO,IAAI6pF,GAAW,CAClB,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,GAAM,CACF,IACA,GACR,EACI,MAAO,CACH,IACA,GACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,QAAS,CACL,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,QAAS,CACL,IACA,IACA,IACR,EACI,QAAS,CACL,IACA,IACA,IACR,EACI,QAAS,CACL,IACA,IACA,IACR,EACI,QAAS,CACL,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,QAAS,CACL,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,QAAS,CACL,IACA,IACA,KACA,IACR,EACI,QAAS,CACL,IACA,IACA,KACA,IACR,EACI,QAAS,CACL,IACA,IACA,KACA,IACR,EACI,QAAS,CACL,IACA,IACA,KACA,IACR,EACI,QAAS,CACL,IACA,IACA,KACA,IACR,EACI,QAAS,CACL,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,KACA,IACR,EACI,GAAM,CACF,IACA,IACA,GACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,SAAU,CACN,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,IACA,IACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,SAAU,CACN,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,IACA,KACA,KACA,GACR,EACI,QAAS,CACL,IACA,KACA,KACA,GACR,EACI,GAAM,CACF,KACA,GACR,EACI,GAAM,CACF,KACA,GACR,EACI,QAAS,CACL,KACA,IACA,GACR,EACI,QAAS,CACL,KACA,IACA,GACR,EACI,QAAS,CACL,KACA,IACA,GACR,EACI,QAAS,CACL,KACA,IACA,GACR,EACI,GAAM,CACF,KACA,IACA,IACA,IACR,EACI,QAAS,CACL,KACA,IACA,KACA,GACR,EACI,GAAM,CACF,KACA,KACA,IACA,GACR,EACI,GAAM,CACF,KACA,KACA,IACA,GACR,EACI,GAAM,CACF,KACA,KACA,IACA,GACR,EACI,QAAS,CACL,KACA,KACA,IACA,GACR,EACI,QAAS,CACL,KACA,KACA,IACA,GACR,EACI,QAAS,CACL,KACA,KACA,IACA,GACR,EACI,GAAM,CACF,KACA,KACA,IACA,GACR,EACI,GAAM,CACF,KACA,KACA,IACA,GACR,EACI,GAAM,CACF,KACA,KACA,IACA,GACR,EACI,GAAM,CACF,KACA,KACA,IACA,GACR,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","x_google_ignoreList":[0,1,4,5,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,155,156,157,159,160,161,162,163,164,165,166,171,173,174,175,176,177,178,179,180,182,183,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,211,212,288,289,290]}