UNPKG

3.57 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/_prop-types@15.7.2@prop-types/index.js","webpack:///external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}","webpack:///./node_modules/_classnames@2.2.6@classnames/index.js","webpack:///./node_modules/_moment@2.26.0@moment/moment.js","webpack:///external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/extends.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_global.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_core.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_descriptors.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_has.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_hide.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-dp.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_is-object.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_to-iobject.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/util.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/classCallCheck.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/typeof.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_wks.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/object.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_export.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_an-object.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_fails.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/interopRequireWildcard.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/inherits.js","webpack:///./node_modules/_react-lifecycles-compat@3.0.4@react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_property-desc.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-keys.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_library.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_uid.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-pie.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/_shallow-element-equals@1.0.1@shallow-element-equals/index.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/grid/index.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_to-primitive.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_defined.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_to-integer.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_shared-key.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_shared.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-gops.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_to-object.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/regenerator/index.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_iterators.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-create.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_wks-ext.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_wks-define.js","webpack:///./components/icon/cache-manager.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/af.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ar.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ar-dz.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ar-kw.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ar-ly.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ar-ma.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ar-sa.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ar-tn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/az.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/be.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/bg.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/bm.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/bn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/bo.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/br.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/bs.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ca.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/cs.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/cv.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/cy.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/da.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/de.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/de-at.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/de-ch.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/dv.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/el.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-au.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-ca.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-gb.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-ie.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-il.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-in.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-nz.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/en-sg.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/eo.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/es.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/es-do.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/es-us.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/et.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/eu.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fa.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fi.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fil.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fo.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fr.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fr-ca.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fr-ch.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/fy.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ga.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/gd.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/gl.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/gom-deva.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/gom-latn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/gu.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/he.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/hi.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/hr.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/hu.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/hy-am.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/id.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/is.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/it.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/it-ch.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ja.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/jv.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ka.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/kk.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/km.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/kn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ko.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ku.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ky.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/lb.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/lo.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/lt.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/lv.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/me.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/mi.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/mk.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ml.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/mn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/mr.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ms.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ms-my.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/mt.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/my.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/nb.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ne.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/nl.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/nl-be.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/nn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/oc-lnc.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/pa-in.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/pl.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/pt.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/pt-br.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ro.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ru.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sd.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/se.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/si.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sk.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sl.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sq.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sr.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sr-cyrl.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ss.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sv.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/sw.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ta.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/te.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tet.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tg.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/th.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tl-ph.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tlh.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tr.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tzl.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tzm.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/tzm-latn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ug-cn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/uk.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/ur.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/uz.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/uz-latn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/vi.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/x-pseudo.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/yo.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/zh-cn.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/zh-hk.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/zh-mo.js","webpack:///./node_modules/_moment@2.26.0@moment/locale/zh-tw.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_ctx.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_dom-create.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_iobject.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_cof.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/typeof.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/extends.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/createClass.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_iter-define.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_redefine.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-gopn.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-gopd.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/config-provider/get-context-props.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/index.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/dom.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/string.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/log.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/env.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/keycode.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/config-provider/error-boundary.js","webpack:///./node_modules/_hoist-non-react-statics@3.3.2@hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/_@alifd_field@1.4.3@@alifd/field/lib/index.js","webpack:///./node_modules/_prop-types@15.7.2@prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/_prop-types@15.7.2@prop-types/lib/ReactPropTypesSecret.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/_moment@2.26.0@moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/_react-is@16.13.1@react-is/index.js","webpack:///./node_modules/_react-is@16.13.1@react-is/cjs/react-is.production.min.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/object/assign.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/fn/object/assign.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es6.object.assign.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_a-function.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-assign.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_array-includes.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_to-length.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/_regenerator-runtime@0.13.5@regenerator-runtime/runtime.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/index.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/messages.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/validator.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/rules/index.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/rules/required.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/rules/format.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/rules/size.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/rules/length.js","webpack:///./node_modules/_@alifd_validate@1.2.0@@alifd/validate/lib/rules/pattern.js","webpack:///./node_modules/_@alifd_field@1.4.3@@alifd/field/lib/utils.js","webpack:///./node_modules/_process@0.11.10@process/browser.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/config-provider/index.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/symbol/iterator.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_string-at.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_iter-create.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-dps.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_html.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-gpo.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_iter-step.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/symbol.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/fn/symbol/index.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es6.symbol.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_meta.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_enum-keys.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_is-array.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/object/set-prototype-of.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/fn/object/set-prototype-of.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/_set-proto.js","webpack:///./node_modules/_babel-runtime@6.26.0@babel-runtime/core-js/object/create.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/fn/object/create.js","webpack:///./node_modules/_core-js@2.6.11@core-js/library/modules/es6.object.create.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/locale/zh-cn.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/events.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/func.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/support.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/focus.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/guid.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/util/htmlId.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/config-provider/config.js","webpack:///./node_modules/_hoist-non-react-statics@2.5.5@hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/config-provider/consumer.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/config-provider/cache.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/grid/row.js","webpack:///./node_modules/_@alifd_next@1.20.5@@alifd/next/lib/grid/col.js","webpack:///./node_modules/_style-equal@1.0.0@style-equal/index.js","webpack:///./components/util/env.js","webpack:///./components/util/log.js","webpack:///./components/util/object.js","webpack:///./components/util/string.js","webpack:///./components/util/dom.js","webpack:///./components/util/events.js","webpack:///./components/util/func.js","webpack:///./components/util/support.js","webpack:///./components/util/keycode.js","webpack:///./components/util/focus.js","webpack:///./components/util/guid.js","webpack:///./components/util/htmlId.js","webpack:///./components/util/index.js","webpack:///./components/locale/zh-cn.js","webpack:///./components/config-provider/get-context-props.jsx","webpack:///./components/config-provider/error-boundary.jsx","webpack:///./components/config-provider/config.jsx","webpack:///./components/config-provider/consumer.jsx","webpack:///./components/config-provider/index.jsx","webpack:///./components/config-provider/cache.js","webpack:///./components/affix/util.js","webpack:///./components/affix/index.jsx","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/_react-transition-group@4.4.1@react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/_react-transition-group@4.4.1@react-transition-group/esm/utils/ChildMapping.js","webpack:///./node_modules/_react-transition-group@4.4.1@react-transition-group/esm/TransitionGroup.js","webpack:///./node_modules/_@babel_runtime@7.9.6@@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/_react-transition-group@4.4.1@react-transition-group/esm/config.js","webpack:///./node_modules/_react-transition-group@4.4.1@react-transition-group/esm/Transition.js","webpack:///./components/animate/child.jsx","webpack:///./components/animate/animate.jsx","webpack:///./components/animate/expand.jsx","webpack:///./components/animate/index.jsx","webpack:///./components/icon/index.jsx","webpack:///./components/avatar/view/avatar.jsx","webpack:///./components/avatar/view/text.jsx","webpack:///./components/avatar/view/image.jsx","webpack:///./components/overlay/manager.js","webpack:///./components/overlay/utils/find-node.js","webpack:///./components/overlay/gateway.jsx","webpack:///./components/balloon/alignMap.js","webpack:///./components/overlay/utils/position.js","webpack:///./components/overlay/position.jsx","webpack:///./components/overlay/overlay.jsx","webpack:///./components/overlay/popup.jsx","webpack:///./components/overlay/index.jsx","webpack:///./components/balloon/inner.jsx","webpack:///./components/balloon/util.js","webpack:///./components/balloon/balloon.jsx","webpack:///./components/button/view/button.jsx","webpack:///./components/button/view/group.jsx","webpack:///./components/button/view/icon.jsx","webpack:///./components/button/index.jsx","webpack:///./components/balloon/pop-confirm.jsx","webpack:///./components/balloon/tooltip.jsx","webpack:///./components/balloon/index.jsx","webpack:///./components/avatar/view/cluster-item.jsx","webpack:///./components/avatar/view/cluster.jsx","webpack:///./components/avatar/view/group.jsx","webpack:///./components/avatar/index.jsx","webpack:///./components/badge/sup.jsx","webpack:///./components/badge/index.jsx","webpack:///./components/card/card.jsx","webpack:///./components/card/index.jsx","webpack:///./components/box/index.jsx","webpack:///./components/menu/view/item.jsx","webpack:///./components/menu/view/selectable-item.jsx","webpack:///./components/menu/view/popup-item.jsx","webpack:///./components/menu/view/sub-menu.jsx","webpack:///./components/menu/view/util.js","webpack:///./components/menu/view/menu.jsx","webpack:///./components/mixin-ui-state/index.jsx","webpack:///./components/checkbox/checkbox.jsx","webpack:///./components/checkbox/checkbox-group.jsx","webpack:///./components/checkbox/index.jsx","webpack:///./components/radio/radio.jsx","webpack:///./components/radio/radio-group.jsx","webpack:///./components/radio/index.jsx","webpack:///./components/menu/view/checkable-item.jsx","webpack:///./components/menu/view/checkbox-item.jsx","webpack:///./components/menu/view/radio-item.jsx","webpack:///./components/menu/view/group.jsx","webpack:///./components/menu/view/divider.jsx","webpack:///./components/menu/view/create.jsx","webpack:///./components/menu/index.jsx","webpack:///./components/breadcrumb/item.jsx","webpack:///./components/breadcrumb/index.jsx","webpack:///./components/calendar/utils/index.js","webpack:///./components/tag/tag.jsx","webpack:///./components/tag/tag-group.jsx","webpack:///./components/tag/selectable.jsx","webpack:///./components/tag/closeable.jsx","webpack:///./components/tag/colorable.jsx","webpack:///./components/tag/tabletag.jsx","webpack:///./components/tag/index.jsx","webpack:///./components/input/base.jsx","webpack:///./components/input/group.jsx","webpack:///./components/input/input.jsx","webpack:///./components/input/textarea.jsx","webpack:///./components/input/index.jsx","webpack:///./components/loading/index.jsx","webpack:///./components/select/util.js","webpack:///./components/select/data-store.js","webpack:///./components/virtual-list/virtual-list.jsx","webpack:///./components/virtual-list/index.jsx","webpack:///./components/select/base.jsx","webpack:///./components/select/select.jsx","webpack:///./components/select/auto-complete.jsx","webpack:///./components/select/option.jsx","webpack:///./components/select/option-group.jsx","webpack:///./components/select/index.jsx","webpack:///./components/calendar/head/card-header.jsx","webpack:///./components/calendar/head/date-panel-header.jsx","webpack:///./components/calendar/head/month-panel-header.jsx","webpack:///./components/calendar/head/year-panel-header.jsx","webpack:///./components/calendar/table/date-table-head.jsx","webpack:///./components/calendar/table/date-table.jsx","webpack:///./components/calendar/table/month-table.jsx","webpack:///./components/calendar/table/year-table.jsx","webpack:///./components/calendar/calendar.jsx","webpack:///./components/calendar/index.jsx","webpack:///./components/cascader/menu.jsx","webpack:///./components/cascader/item.jsx","webpack:///./components/cascader/cascader.jsx","webpack:///./components/cascader/index.jsx","webpack:///./components/cascader-select/cascader-select.jsx","webpack:///./components/cascader-select/index.jsx","webpack:///./components/collapse/panel.jsx","webpack:///./components/collapse/collapse.jsx","webpack:///./components/collapse/index.jsx","webpack:///./components/cover/cover.jsx","webpack:///./components/cover/img.jsx","webpack:///./components/cover/text.jsx","webpack:///./components/cover/index.jsx","webpack:///./components/time-picker/module/time-menu.jsx","webpack:///./components/time-picker/utils/index.js","webpack:///./components/time-picker/panel.jsx","webpack:///./components/date-picker/util/index.js","webpack:///./components/date-picker/module/panel-footer.jsx","webpack:///./components/date-picker/date-picker.jsx","webpack:///./components/calendar/head/range-panel-header.jsx","webpack:///./components/calendar/range-calendar.jsx","webpack:///./components/date-picker/range-picker.jsx","webpack:///./components/date-picker/month-picker.jsx","webpack:///./components/date-picker/year-picker.jsx","webpack:///./components/date-picker/index.jsx","webpack:///./components/dialog/inner.jsx","webpack:///./components/dialog/util.js","webpack:///./components/dialog/dialog.jsx","webpack:///./components/dialog/step-dialog.jsx","webpack:///./components/dialog/step-view.jsx","webpack:///./components/message/message.jsx","webpack:///./components/message/toast.jsx","webpack:///./components/message/index.jsx","webpack:///./components/dialog/show.jsx","webpack:///./components/dialog/index.jsx","webpack:///./node_modules/_rc-util@4.20.5@rc-util/es/ContainerRender.js","webpack:///./node_modules/_rc-util@4.20.5@rc-util/es/Portal.js","webpack:///./node_modules/_rc-util@4.20.5@rc-util/es/getScrollBarSize.js","webpack:///./node_modules/_rc-util@4.20.5@rc-util/es/setStyle.js","webpack:///./node_modules/_rc-util@4.20.5@rc-util/es/switchScrollingEffect.js","webpack:///./node_modules/_rc-util@4.20.5@rc-util/es/PortalWrapper.js","webpack:///./node_modules/_rc-util@4.20.5@rc-util/es/KeyCode.js","webpack:///./node_modules/_rc-drawer@3.2.0@rc-drawer/es/utils.js","webpack:///./node_modules/_rc-drawer@3.2.0@rc-drawer/es/DrawerChild.js","webpack:///./node_modules/_rc-drawer@3.2.0@rc-drawer/es/DrawerWrapper.js","webpack:///./node_modules/_rc-drawer@3.2.0@rc-drawer/es/index.js","webpack:///./node_modules/_omit.js@1.0.2@omit.js/es/index.js","webpack:///./components/drawer/index.jsx","webpack:///./components/dropdown/dropdown.jsx","webpack:///./components/dropdown/index.jsx","webpack:///./components/field/utils.js","webpack:///./components/field/index.js","webpack:///./components/form/form.jsx","webpack:///./components/grid/index.jsx","webpack:///./components/form/error.jsx","webpack:///./components/form/enhance.jsx","webpack:///./components/form/item.jsx","webpack:///./components/form/submit.jsx","webpack:///./components/form/reset.jsx","webpack:///./components/form/index.jsx","webpack:///./components/locale/en-us.js","webpack:///./components/locale/ja-jp.js","webpack:///./components/locale/zh-tw.js","webpack:///./components/locale/index.js","webpack:///./components/link/index.jsx","webpack:///./components/menu-button/index.jsx","webpack:///./components/switch/index.jsx","webpack:///./components/modal/index.jsx","webpack:///./components/toast/base/service-manager/service-manager.js","webpack:///./components/toast/toast.queue.jsx","webpack:///./components/toast/base/service-manager/service-queue.js","webpack:///./components/toast/toast.schema.jsx","webpack:///./components/toast/base/transition/motion.js","webpack:///./components/toast/base/transition/attach.js","webpack:///./components/toast/toast-item.component.jsx","webpack:///./components/toast/base/transition/transition.decorator.jsx","webpack:///./components/toast/toast-group.container.jsx","webpack:///./components/toast/toast.manager.jsx","webpack:///./components/toast/toast.service.jsx","webpack:///./components/toast/index.jsx","webpack:///./components/nav/nav.jsx","webpack:///./components/nav/item.jsx","webpack:///./components/nav/group.jsx","webpack:///./components/nav/sub-nav.jsx","webpack:///./components/nav/popup-item.jsx","webpack:///./components/nav/index.jsx","webpack:///./components/number-picker/number-picker.jsx","webpack:///./components/number-picker/index.jsx","webpack:///./components/pagination/pagination.jsx","webpack:///./components/pagination/index.jsx","webpack:///./components/paragraph/index.jsx","webpack:///./components/placeholder/index.jsx","webpack:///./components/progress/view/progress-line.jsx","webpack:///./components/progress/view/progress-circle.jsx","webpack:///./components/progress/view/progress.jsx","webpack:///./components/progress/index.jsx","webpack:///./components/range/utils.jsx","webpack:///./components/range/view/scale.jsx","webpack:///./components/range/view/track.jsx","webpack:///./components/range/view/selected.jsx","webpack:///./components/range/view/mark.jsx","webpack:///./components/range/view/slider.jsx","webpack:///./components/range/view/fixedSlider.jsx","webpack:///./components/range/view/range.jsx","webpack:///./components/range/index.jsx","webpack:///./components/rating/rating.jsx","webpack:///./components/rating/index.jsx","webpack:///./components/search/Search.jsx","webpack:///./components/search/icon-search/index.jsx","webpack:///./components/search/index.jsx","webpack:///./components/slider/slick/mixins/trackHelper.js","webpack:///./components/slider/slick/mixins/event-handlers.js","webpack:///./components/slider/slick/mixins/helpers.js","webpack:///./components/slider/slick/arrow.jsx","webpack:///./components/slider/slick/track.jsx","webpack:///./components/slider/slick/dots.jsx","webpack:///./components/slider/slick/inner-slider.jsx","webpack:///./components/slider/slider.jsx","webpack:///./components/slider/index.jsx","webpack:///./components/split-button/index.jsx","webpack:///./components/step/view/step.jsx","webpack:///./components/step/view/step-item.jsx","webpack:///./components/step/index.jsx","webpack:///./components/star/index.jsx","webpack:///./components/tab/tabs/utils.js","webpack:///./components/tab/tabs/nav.jsx","webpack:///./components/tab/tabs/content.jsx","webpack:///./components/tab/tabs/tab-item.jsx","webpack:///./components/tab/tab.jsx","webpack:///./components/tab/index.jsx","webpack:///./components/table/util.js","webpack:///./components/table/base/row.jsx","webpack:///./components/table/base/cell.jsx","webpack:///./components/table/base/body.jsx","webpack:///./components/table/base/filter.jsx","webpack:///./components/table/base/sort.jsx","webpack:///./components/table/base/resize.jsx","webpack:///./components/table/base/header.jsx","webpack:///./components/table/base/wrapper.jsx","webpack:///./components/table/column.jsx","webpack:///./components/table/column-group.jsx","webpack:///./components/table/base/auto-width.js","webpack:///./components/table/base.jsx","webpack:///./components/table/lock/row.jsx","webpack:///./components/table/expanded/row.jsx","webpack:///./components/table/selection/row.jsx","webpack:///./components/table/tree/row.jsx","webpack:///./components/table/tree/cell.jsx","webpack:///./components/table/tree.jsx","webpack:///./components/table/fixed/header.jsx","webpack:///./components/table/fixed/body.jsx","webpack:///./components/table/fixed/wrapper.jsx","webpack:///./components/table/fixed.jsx","webpack:///./components/table/selection.jsx","webpack:///./components/table/expanded.jsx","webpack:///./components/table/virtual/body.jsx","webpack:///./components/table/virtual.jsx","webpack:///./components/table/lock/body.jsx","webpack:///./components/table/lock/header.jsx","webpack:///./components/table/lock.jsx","webpack:///./components/table/list-header.jsx","webpack:///./components/table/list-footer.jsx","webpack:///./components/table/list/row.jsx","webpack:///./components/table/list/body.jsx","webpack:///./components/table/list.jsx","webpack:///./components/table/sticky/header.jsx","webpack:///./components/table/sticky.jsx","webpack:///./components/table/index.jsx","webpack:///./components/time-picker/time-picker.jsx","webpack:///./components/time-picker/range-picker.jsx","webpack:///./components/time-picker/index.jsx","webpack:///./components/timeline/view/timeline.jsx","webpack:///./components/timeline/view/timeline-item.jsx","webpack:///./components/timeline/index.jsx","webpack:///./components/transfer/view/transfer-item.jsx","webpack:///./components/transfer/view/transfer-panel.jsx","webpack:///./components/transfer/view/transfer.jsx","webpack:///./components/transfer/index.jsx","webpack:///./components/tree/view/tree-node-input.jsx","webpack:///./components/tree/view/tree-node.jsx","webpack:///./components/tree/view/util.js","webpack:///./components/tree/view/tree.jsx","webpack:///./components/tree/index.jsx","webpack:///./components/tree-select/tree-select.jsx","webpack:///./components/tree-select/index.jsx","webpack:///./components/upload/util.js","webpack:///./components/upload/transform.js","webpack:///./components/upload/base.jsx","webpack:///./components/upload/runtime/request.jsx","webpack:///./components/upload/runtime/uploader.js","webpack:///./components/upload/runtime/selecter.jsx","webpack:///./components/upload/runtime/html5-uploader.jsx","webpack:///./components/upload/runtime/iframe-uploader.jsx","webpack:///./components/upload/runtime/index.jsx","webpack:///./components/upload/list.jsx","webpack:///./components/upload/upload.jsx","webpack:///./components/upload/card.jsx","webpack:///./components/upload/dragger.jsx","webpack:///./components/upload/index.jsx","webpack:///./components/version/index.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__4__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hasOwn","classNames","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","join","default","hookCallback","some","hooks","input","toString","isObject","hasOwnProp","a","b","isObjectEmpty","obj","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","args","slice","Error","stack","keys","deprecations","deprecateSimple","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","indexOf","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","names","j","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","string","exec","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","result","extractFromRFC2822Strings","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","add","createFromConfig","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","_assign","_assign2","target","global","self","__g","core","__e","it","dP","createDesc","f","anObject","IE8_DOM_DEFINE","toPrimitive","O","P","Attributes","TypeError","IObject","defined","_interopRequireDefault","_len","_key","str","formatRegExp","Number","JSON","stringify","_","asyncMap","objArr","option","first","asyncSerialArray","flattenObjArr","objArrKeys","objArrLength","results","errors","asyncMapPromise","_x3","_x4","_x5","_asyncMapPromise","complementError","rule","oe","message","processErrorResults","fields","_regenerator","_asyncToGenerator2","arrLength","original","resolveErrorPromiseInSeries","_x","_x2","_resolveErrorPromiseInSeries","mark","_callee2","wrap","_context2","prev","abrupt","reduce","_ref","_callee","prevPromise","_context","sent","t0","stop","_x6","_x7","Promise","resolve","_callee3","flatObjArr","objArrValues","_context3","all","instance","Constructor","_iterator2","_symbol2","_typeof","constructor","store","uid","USE_SYMBOL","_extends5","_typeof3","typeOf","isArrayLike","isPromise","then","isPlainObject","shallowEqual","objA","objB","compare","keyA","keyB","hasCallback","valA","valB","each","reversed","pickOthers","holdProps","props","others","_isInObj","pickAttrsWith","isNil","deepMerge","sources","_extends2","_extends3","_react2","isValidElement","isFunctionComponent","component","isReactComponent","isClassComponent","isReactFragment","type","Fragment","ctor","prot","ctx","hide","has","$export","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","IS_WRAP","expProto","C","virtual","R","U","_getRequireWildcardCache","WeakMap","cache","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","_typeof2","ReferenceError","_setPrototypeOf2","_create2","subClass","superClass","writable","configurable","__proto__","componentWillMount","state","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","Component","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","bitmap","$keys","enumBugKeys","id","px","random","propertyIsEnumerable","styleEqual","shallowElementEquals","aCount","bCount","elementEquals","typeOfA","ref","children","_objectWithoutProperties3","_configProvider2","_row2","_col2","Grid","Row","transform","deprecated","_props","types","fixed","Col","shared","copyright","getOwnPropertySymbols","asyncGeneratorStep","gen","reject","_next","_throw","info","error","done","err","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","Properties","def","TAG","tag","stat","LIBRARY","wksExt","$Symbol","fullbackGlobal","CacheManager","globalThis","_atIconScriptCaches","Set","globalCache","moment","symbolMap","numberMap","pluralForm","plurals","pluralize","weekdaysParseExact","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","relativeTimeWithPlural","word","num","forms","plural","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","text","mutationTable","substring","softMutation","mutation","minWeekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","translate","ll","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","0","40","isUpper","eifelerRegelAppliesToNumber","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","12","13","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun","processHoursFunction","nominative","accusative","genitive","aFunction","is","createElement","toIObject","arrayIndexOf","cof","iterator","_extends","_defineProperties","descriptor","protoProps","staticProps","redefine","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","hiddenKeys","pIE","gOPD","context","pure","rtl","device","popupContainer","errorBoundary","nextPrefix","nextLocale","nextPure","nextWarning","nextRtl","nextDevice","nextPopupContainer","nextErrorBoundary","newPrefix","localeFromContext","momentLocale","newLocale","_util","_zhCn2","newPure","newRtl","newErrorBoundary","parseBoundary","warning","htmlId","KEYCODE","guid","focus","support","log","events","env","dom","_dom","_interopRequireWildcard","_env","_events","_func","_log","_object","_string","_support","_focus","_guid3","_keycode2","_htmlId","hasDOM","hasClass","addClass","removeClass","toggleClass","node","className","classList","toggle","flag","getStyle","_getComputedStyle","floatMap","_getStyleValue","getPropertyValue","hyphenate","camelcase","setStyle","scrollbar","scrollDiv","position","width","height","top","body","scrollbarWidth","offsetWidth","clientWidth","scrollbarHeight","offsetHeight","clientHeight","removeChild","getOffset","rect","getBoundingClientRect","win","ownerDocument","defaultView","pageYOffset","left","pageXOffset","getPixels","PX_REG","VH_REG","_1vh","innerHeight","getClosest","selector","Element","closest","documentElement","contains","getMatches","parentElement","_force","remove","trim","matchesFn","_body","head","webkitMatchesSelector","msMatchesSelector","mozMatchesSelector","nodeType","getComputedStyle","PIXEL_PATTERN","removePixel","right","bottom","cssFloat","styleFloat","float","strType","template","tpl","tplType","instead","isProduction","ieVersion","documentMode","process","NODE_ENV","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","END","HOME","LEFT","UP","RIGHT","DOWN","PAGE_UP","PAGE_DOWN","ESCAPE","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","CONTROL","OPTION","CMD","COMMAND","DELETE","_class","_temp","_classCallCheck3","_possibleConstructorReturn3","_inherits3","_propTypes2","DefaultUI","propTypes","errorInfo","ErrorBoundary","_React$Component","_this","componentDidCatch","afterCatch","render","_props$fallbackUI","fallbackUI","FallbackUI","element","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","_defineProperty2","_slicedToArray2","_classCallCheck2","_createClass2","_validate2","_utils","initMeta","valueName","trigger","_default","Field","com","_this2","options","fieldsMeta","cachedBind","processErrorMessage","afterValidateRerender","parseName","forceUpdate","scrollToFirstError","onChange","autoUnmount","autoValidate","useState","useMemo","_useState","_useState2","_this3","fieldOption","rprops","initValue","_fieldOption$valueNam","_fieldOption$trigger","_fieldOption$rules","rules","_fieldOption$props","_fieldOption$getValue","getValueFromEvent","_fieldOption$getValue2","getValueFormatter","setValueFormatter","_fieldOption$autoVali","defaultValue","originalProps","defaultValueName","_getInitMeta","disabled","setIn","cachedValue","getIn","_cachedValue","inputProps","_getCacheBind","_saveRef","rulesMap","mapValidateRules","_loop","action","actionRule","_validate","_callPropsEvent","_reRender","_len2","_key2","_callOnChange","_len3","_key3","_len4","_key4","_get","_resetError","hander","_setCache","_getCache","setValue","current","_this4","validate","abort","getErrorStrs","_this5","allValues","getValue","reRender","_this6","fieldsValue","getNames","_this7","fieldsErrors","setError","_this8","allErrors","getError","fieldNames","getErrors","formattedErrors","errorsObj","cb","_this9","_getParams","getParams","hasRule","errorsGroup","fieldName","formattedGetErrors","formatGetErrors","_name","_field","getValues","_validatePromise","_getParams2","_errors","callbackResults","validatePromise","_getErrorsGroup","_ref3","_this10","backToDefault","_this11","changed","_reset","_this12","deleteIn","_len5","argv","_key5","_spliceArrayValue","howmany","_this13","_len6","_key6","argc","startIndex","listMap","keyReg","replaceArgv","idx","idxList","list","removeList","splice","keyMatch","_this14","reg","v","parentName","parent","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","webpackPolyfill","paths","webpackContext","req","webpackContextResolve","code","g","q","z","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","DESCRIPTORS","getKeys","gOPS","$assign","K","T","aLen","getSymbols","isEnum","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","toInteger","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","setPrototypeOf","awrap","async","iter","reverse","pop","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_arr","_n","_e","_s","arrayLikeToArray","minLen","_messages2","_validator","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","noop","serializeRules","series","validator","getValidationMethod","Schema","_rules","_options","messages","_messages","doIt","required","email","url","tel","minLength","maxLength","pattern","validateFunc","ruleType","_required","_format","_size","_length","_pattern","util","aliasName","isStr","isNum","isArr","path","setInWithPath","pathIndex","initialized","copy","checked","defaultTrigger","nrule","validateMap","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","nextTick","title","browser","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","_react","_reactLifecyclesCompat","_getContextProps2","_consumer2","_errorBoundary2","childContextCache","setMomentLocale","ConfigProvider","_Component","getChildContext","componentWillUnmount","Children","only","getContextProps","initLocales","setLanguage","setLocale","setDirection","getLanguage","getDirection","Consumer","getContext","$at","iterated","_t","point","TO_STRING","charCodeAt","ObjectProto","TO_STRING_TAG","DOMIterables","Collection","addToUnscopables","step","_k","Arguments","META","KEY","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","gOPN","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","findChild","setSymbolDesc","D","protoDesc","isSymbol","$defineProperty","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","meta","NEED","fastKey","getWeak","onFreeze","windowNames","getWindowNames","check","buggy","$Object","Timeline","expand","fold","Balloon","Card","Calendar","today","ok","clear","prevYear","nextYear","prevMonth","nextMonth","prevDecade","nextDecade","yearSelectAriaLabel","monthSelectAriaLabel","DatePicker","placeholder","datetimePlaceholder","monthPlaceholder","yearPlaceholder","weekPlaceholder","selectTime","selectDate","startPlaceholder","endPlaceholder","Dialog","cancel","Drawer","Message","closeAriaLabel","Pagination","goTo","page","go","labelPrev","labelNext","inputAriaLabel","selectAriaLabel","pageSize","Input","Select","selectPlaceholder","autoCompletePlaceholder","notFoundContent","maxTagPlaceholder","selectAll","Table","asc","expanded","folded","TimePicker","Transfer","items","moveAll","searchPlaceholder","moveToLeft","moveToRight","Upload","card","addPhoto","download","delete","drag","hint","upload","Search","buttonText","Tag","Rating","description","Switch","Tab","_off","eventName","useCapture","removeEventListener","addEventListener","__fn","prevent","makeChain","fns","bindCtx","fnName","promiseCall","success","failure","catch","flex","transition","animation","_supportEnd","end","WebkitAnimation","OAnimation","WebkitTransition","OTransition","_supportCSS","getFocusNodeList","saveLastFocusNode","lastFocusElement","activeElement","clearLastFocusNode","backLastFocusNode","limitTabRange","keyCode","tabNodeList","maxIndex","targetIndex","shiftKey","preventDefault","_keycode","_isFocusable","nodeName","tabIndex","getAttribute","hasTabIndex","visibility","parentNode","_isVisible","nodeList","querySelectorAll","unshift","timestamp","escapeForId","randomId","rand","globalLocales","currentGlobalLocale","currentGlobalLanguage","currentGlobalRtl","language","shouldComponentUpdate","ConfigedComponent","_getInstance","_deprecated","_instance","exportNames","getInstance","_context$nextLocale","getDisplayName","contextProps","newContextProps","newOthers","content","_contextProps$errorBo","othersBoundary","_hoistNonReactStatics2","_propTypes","replaceKey","transformContext","mapKeys","Cache","_root","_store","Map","size","update","nextkey","_classnames2","_hiddenClassObj","gutter","fixedWidth","align","justify","hidden","hiddenClassObj","_hiddenClassObj2","newClassName","newChildren","gutterNumber","halfGutterString","marginLeft","marginRight","child","isNextCol","cloneElement","paddingLeft","paddingRight","role","breakPoints","span","fixedSpan","fixedOffset","xxs","xs","xl","pointClassObj","pointProps","transformEntryEqual","transformEqual","shallowObjectEquals","attributes","eventsName","attrsPrefix","pickAttrs","attrs","forceReflow","_guid","_KEYCODE","confirm","shortMonths","shortWeekdays","veryShortWeekdays","yearLabel","scriptUrl","nextScriptUrl","zhCN","React","hoistNonReactStatic","getScroll","isVertical","elementProp","getRect","Affix","_updateNodePosition","container","useAbsolute","affixContainer","containerScrollTop","affixOffset","_getOffset","affixNode","containerHeight","affixHeight","containerRect","affixChildHeight","affixChildNode","affixMode","affixStyle","containerStyle","_setAffixStyle","_setContainerStyle","findDOMNode","_getAffixMode","_setEventHandlerForContainer","_removeEventHandlerForContainer","getContainer","offsetTop","offsetBottom","affixed","onAffix","affixRect","containerScrollLeft","classnames","combinedStyle","_affixNodeRefHandler","_affixChildNodeRefHandler","excluded","sourceKeys","_inheritsLoose","createContext","getChildMapping","mapFn","mapper","getProp","getNextChildMapping","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","exit","enter","TransitionGroup","handleExited","contextValue","isMounting","firstRender","_proto","componentDidMount","mounted","appear","currentChildMapping","_this$props","childFactory","TransitionGroupContext","Provider","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","status","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","_ref2","nodeRef","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","setNextCallback","active","event","handler","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","prefixes","getStyleProperty","AnimateChild","endListeners","transitionend","animationend","timeoutMap","listener","endListener","transitionEndListener","generateEndListener","animationEndListener","transitionDelay","transitionDuration","animationDelay","animationDuration","transitionOff","animationOff","isAppearing","removeClassNames","onAppear","onAppearing","appearActive","enterActive","onAppeared","leave","leaveActive","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","FirstChild","Animate","animationAppear","singleMode","beforeAppear","afterAppear","beforeEnter","afterEnter","beforeLeave","onLeave","afterLeave","animateChildren","normalizeNames","Expand","leaving","cacheCurrentStyle","cacheComputedStyle","setCurrentStyleToZero","setCurrentStyleToComputedStyle","restoreCurrentStyle","styleBorderTopWidth","borderTopWidth","stylePaddingTop","paddingTop","styleHeight","stylePaddingBottom","paddingBottom","styleBorderBottomWidth","borderBottomWidth","newAnimation","Shell","cls","Iconfont","script","setAttribute","symbolPrefix","restProps","xlinkHref","viewBox","Icon","_typeMark","createFromIconfont","Avatar","hoverClose","onClose","stopPropagation","closable","img","onClick","closeBtn","onMouseEnter","onHoverClose","onMouseLeave","onLeaveClose","TextAvatar","colorSets","background","getBgColor","ImageAvatar","overlayManager","allOverlays","addOverlay","overlay","removeOverlay","isCurrentOverlay","findNode","param","getElementById","Gateway","containerNode","getContainerNode","targetNode","saveChildRef","createPortal","normalMap","rtlAlign","arrow","trOrigin","rtlTrOrigin","tl","tr","rt","rb","bl","br","lb","edgeMap","getPageX","scrollLeft","getPageY","scrollTop","_getElementRect","elem","offsetLeft","offsetParent","Position","pinElement","baseElement","needAdjust","isRtl","isPinFixed","isBaseFixed","firstPositionResult","expectedAlign","_getExpectedAlign","pinElementPoints","_normalizePosition","baseElementPoints","pinElementParentOffset","_getParentOffset","pinElementParentScrollOffset","_getParentScrollOffset","baseElementOffset","_getLeftTop","_isInViewport","_setPinElementPostion","inViewportLeft","_makeElementInViewport","inViewportTop","_getElementOffset","points","_normalizeElement","_normalizeXY","_xyConverter","isViewport","docElement","docClientLeft","clientLeft","docClientTop","clientTop","_replaceAlignDir","toolTipAlignSet","alignMap","regExp","viewportSize","tagName","postion","offsetParentWidth","setPosition","place","resizeTimeout","needListenResize","handleResize","shouldUpdatePosition","visible","beforePosition","onPosition","contentNode","getContentNode","getTargetNode","resultAlign","VIEWPORT","bodyOverflowY","bodyPaddingRight","isScrollDisplay","scrollbarStyle","hasScroll","doc","scrollHeight","modals","Overlay","getAnimationByAlign","_animation","handleAnimateEnd","lastAlign","_isMounted","onLeaved","_isDestroyed","onLeaving","wrapperNode","getWrapperNode","onOpen","setFocusNode","afterOpen","afterClose","disableScroll","overflowY","autoFocus","_hasFocused","focusTimeout","focusNodeList","contentRef","gatewayRef","getChildNode","canCloseByEsc","_keydownEvents","handleDocumentKeyDown","canCloseByOutSideClick","_clickEvents","handleDocumentClick","_touchEvents","onRequestClose","safeNode","safeNodes","canCloseByMask","getAnimation","beforeOpen","addDocumentEvents","willOpen","willClose","beforeClose","addAnimationEvents","removeDocumentEvents","propChildren","hasMask","wrapperStyle","propShouldUpdatePosition","wrapperClassName","onMaskMouseEnter","onMaskMouseLeave","stateVisible","childClazz","saveContentRef","handlePosition","wrapperClazz","newWrapperStyle","handleMaskClick","saveGatewayRef","Popup","onVisibleChange","canCloseByTrigger","handleVisibleChange","triggerClickKeycode","includes","handleTriggerClick","_mouseNotFirstOnMask","_hideTimer","_showTimer","delay","_isForwardContent","handleTriggerMouseLeave","triggerType","triggerTypes","onKeyDown","onFocus","onBlur","handleTriggerKeyDown","handleTriggerMouseEnter","handleTriggerFocus","handleTriggerBlur","onMouseDown","handleContentMouseDown","handleContentMouseEnter","handleContentMouseLeave","followTrigger","findTriggerNode","handleMaskMouseEnter","handleMaskMouseLeave","handleRequestClose","renderContent","defaultVisible","renderTrigger","renderPortal","BalloonInner","isTooltip","alignEdge","_prefix","aria-live","aria-label","href","getDisabledCompatibleTrigger","displayStyle","pointerEvents","cursor","alignList","_onVisibleChange","resAlign","newAlign","alignKey","safeId","onHover","popupStyle","popupClassName","popupProps","_style","transformOrigin","_onClose","triggerProps","ariaTrigger","newTrigger","_onPosition","mapIconSize","large","medium","small","Button","button","blur","onMouseUp","htmlType","loading","ghost","iconSize","ghostType","btnCls","count","clonedChildren","iconCls","TagName","tagAttrs","buttonRefHandler","ButtonGroup","groupCls","cloneChildren","IconButton","color","Group","newType","primary","secondary","normal","dark","light","iconMap","danger","PopConfirm","icon","footer","confirmProps","cancelProps","onConfirm","onCancel","renderIcon","renderTitleAndContent","renderFooter","Tooltip","simpleKeys","find","rlt","simpleAlign","getSimpleAlign","newTriggerType","Inner","alignment","onCloseClick","ClusterItem","ClusterAvatar","dataSource","onSelect","onAdd","GroupAvatar","onClickMore","needMore","getDigitArray","Sup","lastCount","digit","renderDigit","computeStyle","removeTransition","revert","overflowCount","supNode","refs","sup","scrollNums","getPositionByDigit","transformTo","scrollStyle","noTransition","WebkitTransform","lineHeight","showZero","dot","supClasses","show","realCount","renderNumber","wrapper","Badge","originCount","originOverflowCount","_setNeedMore","_setContentHeight","contentHeight","childrenHeight","_getNodeChildrenHeight","ReactDOM","contentChildNodes","childNodes","lastNode","subTitle","isTab","isBox","extra","showHeadDivider","cardCls","headCls","cardBody","subTitleBox","headExtra","headmain","_contentRefHandler","saveFooter","handleToggle","showTitleBullet","titlePrefixLine","titleBottomLine","bodyHeight","Box","itemNode","parentMode","menu","menuNode","header","querySelector","setFocus","focusable","focusedKey","getFocused","preventScroll","scrollBottom","itemBottom","handleItemClick","handleItemKeyDown","handleClick","labelString","loop","level","replaceClassName","groupIndent","needIndent","dangerous","inlineIndent","itemClassName","focused","cx","tabbableKey","paddingProp","handleKeyDown","SelectableItem","selected","selectMode","selectedKeys","getSelected","handleSelect","hasSelectedIcon","isSelectIconRight","rootSelectedIcon","rootSelectIconRight","helper","newProps","textProps","renderSelectedIcon","PopupItem","popup","openKeys","handleOpen","autoWidth","rootPopupAutoWidth","popupAutoWidth","rootPopupAlign","popupAlign","popupNode","popupNodes","selectable","label","NewItem","getOpen","itemProps","positionProps","getPopupProps","getPopup","handlePopupOpen","handlePopupClose","arrowProps","hasSubMenu","selectableFromProps","noIcon","rootTriggerType","triggerIsIcon","renderItem","renderPopup","SubMenu","subMenuContentClassName","propsTriggerType","inlineArrowDirection","iconArrowType","expandAnimation","liProps","arrorProps","handleMouseEnter","handleMouseLeave","newSubMenuContentClassName","roleMenu","roleItem","subMenu","passParentToChildren","renderInline","getWidth","Menu","lastVisibleIndex","overflowedItems","getIndicatorsItem","defaultSelectedKeys","hozInLine","getNewChildren","getFirstAvaliablelChildKey","getInitOpenKeys","normalizeToArray","adjustChildrenWidth","k2n","spaceWidth","currentSumWidth","menuItemNodes","lastIndicator","moreWidth","menuItemSizes","liWidth","initOpenKeys","defaultOpenKeys","defaultOpenAll","openMode","isPlaceholder","moreCls","p2n","posPrefix","indexWrapper","keyArray","newChild","menuChildType","addIndicators","currentPos","targetPos","currentNums","targetNums","every","newOpenKeys","isSibling","isAncestor","keyPath","labelPath","nums","parentPos","select","menuItem","shallowSelect","newSelectedKeys","getPath","onItemFocus","onItemClick","refPos","ps","isAvailablePos","avaliableKey","getAvailableKey","parentKey","getParentKey","onItemKeyDown","ariaMultiselectable","hozAlign","embeddable","onScroll","headerElement","itemsElement","footerElement","shouldWrapItemsAndFooter","aria-multiselectable","labelToggleChecked","UIState","_onUIFocus","_onUIBlur","isChecked","selectedValue","checkedicon","indeteicon","Checkbox","indeterminate","__group__","defaultChecked","defaultIndeterminate","nextContext","otherProps","othersData","childInput","aria-checked","getStateElement","labelCls","CheckboxGroup","currentValue","valTemp","itemDirection","Radio","resetUIState","isButton","clsInner","clsWrapper","childrenCls","radioComp","aria-disabled","_onUIMouseEnter","_onUIMouseLeave","RadioGroup","childrtl","isButtonShape","CheckableItem","checkType","checkDisabled","handleCheck","Check","checkProps","aria-labelledby","renderCheck","CheckboxItem","checkboxDisabled","RadioItem","newChildClassName","Divider","menuInstance","ContextMenu","clickedPopupMenu","overlayProps","getContent","newOverlayProps","handleOverlayClose","handleOverlayOpen","getOverlay","menuProps","destroy","div","newContext","unmountComponentAtNode","indentSize","onDeselect","link","activated","clazz","Separator","Breadcrumb","maxNode","menuItems","breakpointer","ariaProps","BreadcrumbComponent","CALENDAR_MODES","isDisabledDate","view","checkMomentObj","formatDateValue","reservedValue","getVisibleMonth","defaultVisibleMonth","getVM","isSameYearMonth","dateA","dateB","getLocaleData","closeArea","handleClose","__destroyed","hasAnimation","tagNode","animationName","handleAnimationInit","handleAnimationEnd","leftCls","handleTailClick","_shape","bodyClazz","tailNode","renderTailNode","handleBodyClick","renderAnimatedTag","Selectable","Closeable","Colorable","pointer","interactive","rightCls","linkCls","TableTag","ConfigTag","transfrom","Closable","inputRef","ieHack","getValueLength","opts","beTrimed","overMaxLength","hasLimitHint","classesLenWrap","lenWrap","renderLength","inputStyle","readOnly","cutString","start","selectionStart","selectionEnd","addonBefore","addonAfter","addonBeforeClassName","addonAfterClassName","addonCls","beforeCls","afterCls","before","after","onPressEnter","onClear","nv","strLen","hasClear","stateWrap","clearWrap","showClear","hintIcon","handleKeyDownFromClear","passwordIcon","togglePassword","htmlFor","htmlSize","autoComplete","innerBefore","innerAfter","innerBeforeClassName","innerAfterClassName","hasBorder","addonTextBefore","addonTextAfter","inputRender","hasAddon","getClass","innerCls","innerBeforeCls","innerAfterCls","getProps","dataProps","inputEl","saveRef","inputWrap","renderLabel","renderInner","renderControl","addonBeforeCls","addonAfterCls","isMacSafari","navigator","userAgent","hiddenStyle","zIndex","TextArea","nextFrameId","nextFrameActionId","cancelAnimationFrame","_getHeight","maxHeight","Infinity","requestAnimationFrame","autoHeight","_getMinMaxHeight","_resizeTextArea","minRows","maxRows","helpRef","minHeight","textArea","rows","textareStyle","wrapStyle","data-real","data-fake","saveHelpRef","Loading","tip","indicator","fullScreen","tipAlign","inline","indicatorDom","dotCls","backgroundColor","fusionReactorCls","loadingCls","tipCls","contentCls","isSingle","isNull","parseDataSourceFromChildren","deep","item2","isOption","isOptionGroup","isStrChild","normalizeDataSource","__isAddon","filterDataSource","addonKey","addKey","menuDataSource","loopMap","getKeyItemByValue","valueMap","getValueDataSource","mapValueDS","mapMenuDS","newValue","newValueDS","newMapValueDS","_newMapDS","valueDS","valueToSelectKey","DataStore","filterLocal","mapDataSource","enabledDataSource","flattenDataSource","isChildren","updateAll","getMenuDS","flattingDataSource","NOOP","VirtualList","setScroll","getSpaceBefore","jumpIndex","constrain","cachedScroll","unstable","updateCounter","updateFrameAndClearCache","updateFrame","scrollTo","oldIndex","newIndex","maybeSetState","updateCounterTimeoutId","scrollParent","isEqualSubset","getEl","actual","getScrollSize","getViewportSize","scroll","trueScroll","updateScrollParent","updateVariableFrame","getScrollParent","itemSizeGetter","cacheSizes","getStartAndEnd","space","maxFrom","itemSize","getSizeOf","maxSize","defaultItemHeight","minSize","itemsRenderer","renderMenuItems","listStyle","msTransform","MenuItem","MenuGroup","selectDOM","popupRef","syncWidth","dataStore","updateByDS","getOriginDS","updateByKey","getEnableDS","highlightKey","focusInput","maxCount","highlightIndex","highlightItem","srReader","scrollMenuIntoView","setVisible","highlightTimer","menuRef","scrollIntoViewIfNeeded","ex","useVirtual","onPopupScroll","renderMenuItem","menuClassName","minWidth","handleMenuSelect","renderMenuHeader","renderMenuFooter","handleMenuBodyClick","searchKey","itemRender","isAutoComplete","searchValue","setFirstHightLightKeyForMenu","setDataSource","popupContent","showEmpty","renderSelect","savePopupRef","renderMenu","onToggleHighlightItem","isIE9","currentStyle","fixWidth","useDetailValue","showSearch","handleSingleSelect","handleMultipleSelect","itemObj","cacheValue","valueDataSource","getMapDS","handleChange","handleSearchClear","hiddenSelected","updateSelectAllYet","selectAllYet","hasSelectAll","selectAllValues","handleSearchValue","onSearch","onSearchClear","hasSearch","toggleHighlightItem","chooseHighlightItem","handleDeleteTag","handleClear","proxy","prevVisible","chooseMultipleItem","onRemove","nextValues","selectedValues","totalValues","valueRender","fillProps","maxTagCount","tagInline","retvalue","maxTagPlaceholderEl","limitedCountValue","totalValue","getFlattenDS","holder","selectedValueNodes","labelNode","handleTagClose","hasArrow","aria-hidden","handleArrowClick","valueNodes","renderValues","_placeholder","renderExtraNode","triggerClazz","valuetext","saveSelectRef","handleWrapClick","aria-valuetext","aria-expanded","renderSearchInput","handleSearch","handleSearchKeyDown","saveInputRef","mirrorText","searchInput","triggerSearch","sourceCount","handleSelectAll","setOptions","ie9Hack","AutoComplete","hasPopup","mapDS","handleSelectEvent","actionType","isInputing","shouldControlPopup","highlightHolder","autoCompletePlaceHolder","_inputProps","aria-autocomplete","inputNode","clearNode","Option","OptionGroup","multiple","filterBy","noFoundContent","newprops","Combobox","onInputUpdate","CardHeader","visibleMonth","changeVisibleMonth","changeMode","yearRangeOffset","yearRange","startYear","endYear","onYearChange","selectContainerHandler","localeMonths","yearSelect","getYearSelect","monthSelect","getMonthSelect","panelSelect","onModePanelChange","PureComponent","DatePanelHeader","modes","goNextMonth","goNextYear","goPrevMonth","goPrevYear","monthLabel","MonthPanelHeader","YearPanelHeader","goPrevDecade","goNextDecade","decadeLabel","getDecadeLabel","DateTableHead","elements","isSameDay","isRangeDate","startDate","endDate","isNextMonthDate","DateTable","showOtherMonth","endValue","dateCellRender","disabledDate","onSelectDate","startValue","firstDayOfMonth","datesOfLastMonthCount","lastMonthDate","counter","dateList","monthElements","weekElements","isLastMonth","isNextMonth","isCurrentMonth","isDisabled","isToday","isSelected","isInRange","cellContent","elementCls","aria-selected","isSameMonth","selectedDate","MonthTable","onSelectMonth","monthCellRender","monthLocale","monthList","rowList","monthDate","isThisMonth","localedMonth","monthCellContent","onMonthCellClick","YearTable","onSelectYear","yearCellRender","currentYear","selectedYear","visibleYear","yearElements","rowElements","yearDate","onYearCellClick","nextMode","MODES","onModeChange","reason","onVisibleMonthChange","changeVisibleMonthByOffset","cloneValue","headerProps","tableProps","tables","onSelectCell","panelHeaders","disabledMonth","disabledYear","newDefaultVisibleMonth","preFormatDateValue","CascaderMenu","scrollToSelectedItem","selectedIndex","findIndex","itemSelector","targetItem","CascaderMenuItem","addLoading","removeLoading","focusedFirstChild","setLoadingIfNeed","onExpand","handleExpand","canExpand","onFold","expandTriggerType","checkable","onCheck","Cascader","defaultExpandedValue","expandedValue","checkStrictly","canOnlyCheckLeaf","loadData","updateCache","normalizedValue","normalizeValue","_v2n","st","getExpandedValue","completeValue","lastExpandedValue","setCascaderInnerWidth","cascader","cascaderInner","menus","menusWidth","hasRightBorderClass","_p2n","_source","setCache","expandedMap","isDescendantOrSelf","filterValue","flatValue","childChecked","removeValue","addParentValue","getPos","getDepth","canOnlySelectLeaf","selectedPath","processValue","parentChecked","isSiblingOrSelf","getData","currentData","checkedData","flatData","indeterminateValue","getIndeterminate","indeterminateData","setExpandValue","endExpandedValue","focusedValue","filteredPaths","getFirstFocusKeyByFilteredPaths","getFirstFocusKeyByDataSource","getFirstFocusKey","parentValue","listClassName","saveMenuRef","handleFocus","isLeaf","handleFold","expandedItem","resultRender","lastItem","filteredListStyle","renderFilteredItem","getCascaderNode","renderFilteredList","renderMenus","expandTrigger","CascaderSelect","getLabelPath","displayRender","labels","setFocusValue","cascaderNode","cascaderHeight","changeOnSelect","treeCheckable","checkedValue","renderNotFound","filterItems","saveCascaderRef","renderCascader","renderPopupContent","getMultipleData","getSignleData","handleRemove","handleAfterOpen","resultAutoWidth","Panel","isExpanded","headingId","regionId","aria-controls","renderTitleIcon","Collapse","expandedKeys","defaultExpandedKeys","accordion","setExpandedKey","itemId","collapseId","expandedKey","genratePanelId","hasKeys","allKeys","Boolean","isNextPanel","collapseClassName","getItemsByDataSource","getItemsByChildren","Cover","backgroundImage","Configured","Img","Text","perTick","TimeMenu","scrollToSelected","activeIndex","firstItem","offsetTo","disabledItems","itemCls","menuTitle","_menuRefHandler","checkDateValue","TimePickerPanel","clonedValue","activeHour","activeMinute","activeSecond","showHour","showSecond","hourStep","minuteStep","secondStep","disabledHours","disabledMinutes","disabledSeconds","commonProps","onSelectMenuItem","PANEL","resetValueTime","getDateTimeFormat","showTime","dateTimeFormat","onDateKeydown","dateInputStr","altKey","controlKey","stepUnit","onTimeKeydown","timeInputStr","steps","PanelFooter","targetPanel","panel","onPanelChange","ranges","onOk","disabledOk","panelBtnLabel","sharedBtnProps","createRanges","changePanel","inputAsString","resetTime","prevValue","inputing","inputStr","eventType","clearValue","parsed","dateStr","onDateInputChange","timeStr","onTimeInputChange","newValueOf","preValueOf","onValueChange","footerRender","popupTriggerType","triggerRender","dateInputAriaLabel","timeInputAriaLabel","datePickerCls","triggerInputCls","panelBodyClassName","panelDateInputCls","sharedInputProps","onDateInputBlur","dateInputValue","triggerInputValue","dateInput","onFocusDateInput","datePanel","onSelectCalendarPanel","panelFooter","timeInput","timePanel","timeInputValue","timePanelProps","panelTimeInputCls","onFoucsTimeInput","onTimeInputBlur","onTimeKeyDown","onSelectTimePanel","panelBody","allowClear","popupVisible","RangePanelHeader","startVisibleMonth","endVisibleMonth","localedMonths","startMonthLabel","endMonthLabel","startYearLabel","endYearLabel","RangeCalendar","activePanel","offsetDate","defaultStartValue","defaultEndValue","table","mapInputStateName","startTime","endTime","getFormatValues","RangePicker","prevActiveDateInput","activeDateInput","prevStartValue","prevEndValue","newState","newStartValue","newEndValue","startDateInputStr","endDateInputStr","startTimeInputStr","endTimeInputStr","stateName","clearRange","disabledTime","inputState","startDateInputAriaLabel","startTimeInputAriaLabel","endDateInputAriaLabel","endTimeInputAriaLabel","triggerCls","startDateInputCls","endDateInputCls","startDateInputValue","endDateInputValue","startTriggerValue","endTriggerValue","onDateInputKeyDown","startDateInput","endDateInput","startTimeInput","endTimeInput","startTimeInputValue","endTimeInputValue","sharedTimeInputProps","onFocusTimeInput","onTimeInputKeyDown","startTimeInputCls","endTimeInputCls","sharedTimePickerProps","getDisabledTime","onSelectStartTime","onSelectEndTime","MonthPicker","prevSelectedMonth","selectedMonth","defaultVisibleYear","monthPickerCls","panelInputCls","onFoucsDateInput","YearPicker","yearPickerCls","defaultOpen","onOpenChange","formater","closeLink","renderCloseLink","titleId","getNode","aria-level","noBodyPadding","footerAlign","footerActions","footerContent","btnProps","newBtnProps","closeable","loadingTip","renderHeader","renderBody","okProps","RegionMap","getPosRegion","absPos","getRelativePos","cols","uw","uh","rowIdx","colIdx","mousePosition","pageX","pageY","getInner","bodyNode","adjustPosition","getInnerNode","minMargin","isQuick","innerNode","headerNode","footerNode","getBodyMinHeight","viewportHeight","headerHeight","footerHeight","fallbackAnimation","regin","lastBodyHeight","getBodyHeight","preProps","mapcloseableToConfig","canCloseByCloseClick","closeConfig","getOverlayRef","StepDialog","onStepChange","isView","defaultCurrent","checkView","metas","getViewMeta","isFullScreen","StepView","Configed","shapeToIcon","notice","messagePrefix","onClickHandler","iconType","globalButton","Mask","silent","timeoutId","NewMask","newConfig","handleConfig","mask","myRef","destroyed","inc","toast","help","dialog","ModalInner","messageProps","Modal","newFooterActions","newOnOk","newOnCancel","newOnClose","newTitle","newContent","ConfigModal","unmount","methodFactory","processProps","Reflect","construct","sham","Proxy","ContainerRender","Derived","_super","Super","NewTarget","removeContainer","renderComponent","ready","getComponent","forceRender","_component","unstable_renderSubtreeIntoContainer","autoMount","autoDestroy","cached","createContainer","didUpdate","_container","getScrollBarSize","fresh","outer","outerStyle","widthContained","widthScroll","_options$element","oldStyle","styleKeys","cacheStyle","innerWidth","scrollingEffectClassNameReg","bodyClassName","scrollBarSize","addClassName","windowIsUndefined","IS_REACT_16","cacheOverflow","PortalWrapper","getParent","HTMLElement","setWrapperClassName","savePortal","removeCurrentContainer","switchScrollingEffect","overflowX","_visible","_self","prevGetContainer","portal","getOpenCount","KeyCode","MAC_ENTER","NUM_CENTER","PAUSE","CAPS_LOCK","PRINT_SCREEN","INSERT","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","H","I","J","N","Q","V","X","Y","Z","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","ctrlKey","metaKey","isCharacterKey","transitionEndObject","MozTransition","transitionStr","html","getElementsByTagName","transitionEnd","attachEvent","detachEvent","isNumeric","sourceSymbolKeys","hasNativeReflectConstruct","currentDrawer","DrawerChild","domFocus","removeStartHandler","touches","startPos","clientX","clientY","removeMoveHandler","changedTouches","currentTarget","differX","differY","maskDom","handlerDom","contentDom","getTouchParentScroll","Document","isY","isX","scrollY","scrollX","scrollWidth","onWrapperTransitionEnd","afterVisibleChange","contentWrapper","propertyName","getCurrentDrawerSome","openLevelTransition","_this$props2","_this$getHorizontalBo","getHorizontalBoolAndPlacementName","isHorizontal","placementName","contentValue","setLevelAndScrolling","setLevelTransform","_this$props3","placement","levelMove","ease","showMask","levelDom","levelValue","$levelMove","transformArguments","$value","placementPos","toggleScrollingToDrawerAndBody","_this$props4","openCount","eventArray","domArray","addScrollingEffect","touchAction","passive","remScrollingEffect","_this$props5","widthTransition","transformTransition","heightTransition","_this$props6","getLevelDom","vars","passiveSupported","drawerId","_this$props7","_classnames","_this$props8","$open","prefixCls","maskClosable","maskStyle","onHandleClick","keyboard","handlerChildren","onTouchStart","onTouchMove","DrawerWrapper","_open","$forceRender","rest","shallowCopy","DrawerContext","getDestroyOnClose","destroyClose","destroyOnClose","getPushTransform","bodyStyle","drawerStyle","opacity","onDestroyTransitionEnd","haveMask","parentDrawer","offsetStyle","drawerClassName","omit","getRcDrawerStyle","pull","headerStyle","headerClassName","renderCloseIcon","footerStyle","footerClassName","renderProvider","Dropdown","getVisible","isNextMenu","onMenuClick","onTriggerKeyDown","cloneAndAddKey","firstNode","firstTop","NextField","newOptions","getUseField","validateCallback","resetToDefault","Form","_formField","fieldOptions","saveField","_formSize","setValues","setErrors","labelAlign","labelTextAlign","onSubmit","labelCol","wrapperCol","formClassName","childrenProps","pickerDefined","errorArr","getState","getCfgFromProps","getRule","ruleName","getValueName","getRules","validateState","asterisk","ele","hasFeedback","getSize","getItemLabel","childrenNode","extraProps","init","getHelper","getItemWrapper","requiredMessage","requiredTrigger","minmaxMessage","minmaxTrigger","minmaxLengthMessage","minmaxLengthTrigger","lengthMessage","lengthTrigger","patternMessage","patternTrigger","formatMessage","formatTrigger","validatorTrigger","Submit","Reset","toDefault","validateStatus","zhTW","jaJP","enUS","Link","MenuButton","onPopupVisibleChange","refFn","popupClassNames","onPopupOpen","selectMenu","clickMenuItem","ev","onSideDrawerVisibleChange","onEditTitleChange","isEditing","titleEditable","titleEditTooltip","titleInputWidth","editTitle","onLeaveEditing","onEnterEditing","operations","sideDrawer","sideDrawerLabel","sideDrawerVisible","renderTitle","sideDrawerWidth","renderModal","ServiceManager","deleteAll","timeoutKey","startTimeout","mountNode","createMountNode","ToastQueue","duplicatedItem","innerQueue","innerSubscribers","nextSubscriber","subscribers","subscriber","publish","ToastStatus","freeze","Success","Warning","Info","configRE","motion","initial","easing","parseConfig","orginStyle","computedStyle","transitionRule","hiddenRule","motionToken","cssText","removeAttribute","canceled","attach","numberifyDuration","ToastItem","onPause","onStart","classNamePrefix","getSuffix","toastPrefix","titleCls","textCls","renderMessage","renderHandlers","renderDescription","renderCloseHandler","handlers","onClickHandlers","handlerCls","getStatusClassName","iconName","getStatusIconName","msgCls","descCls","handlePause","handleStart","renderStatusBar","CSSMotion","extraWrap","ComposedComponent","Wrapped","ToastContainer","toasts","findToast","componentProps","pauseable","Tmpl","tmpl","toastGroup","renderToast","ToastManager","flush","containerRef","flushCallback","initialCommand","cmd","DefaultDuration","DefaultPauseable","createSlice","DefaultClosable","createRef","subscribe","createToastInstance","getDuplicationKey","replaceTemplate","Toast","getManager","closeAll","setTemplate","manager","Nav","iconOnly","hasTooltip","activeDirection","noBg","realActiveDirection","newStyle","popupItemProps","getMenuRef","iconEl","newLabel","SubNav","NumberPicker","editable","setInputValue","oldValue","onCorrect","up","down","getCurrentValidValue","strValue","pointPos","cutPos","getPrecision","hasFocused","stepString","precision","precisionFactor","getPrecisionFactor","hackChrome","onDisabled","upBtnProps","downBtnProps","upDisabled","downDisabled","handleMouseDown","dataAttrs","aria-valuemax","aria-valuemin","renderValue","currentPage","currentPageSize","totalPage","getTotalPage","inputValue","onPageItemClick","onPageSizeChange","totalRender","range","isCurrent","isFirst","isLast","onInputChange","onJump","pageShowCount","pages","renderPageItem","othersCount","halfCount","renderPageEllipsis","pageSizeSelector","renderPageSizeDropdown","pageSizeList","selectPopupContiner","onSelectSize","correctCurrent","newCurrent","hideOnlyOnePage","showJump","pageFirst","renderPageFirst","pageLast","renderPageLast","sizeSelector","renderPageSizeSelector","buildComponent","coms","renderPageTotal","renderPageDisplay","pageList","renderPageList","pageJump","renderPageJump","Paragraph","Placeholder","image","NO_CONTACT","NO_TASK","NO_DATA","Line","percent","progressive","textRender","suffixText","wrapCls","lineCls","lineStyle","aria-valuenow","Circle","underlay","underlayStrokeWidth","overlayStrokeWidth","_getCssValue","css","overlayRadius","VIEWBOX_WIDTH","overlayLen","PI","radius","underlayRadius","underlayPath","_getPath","overlayPath","overlayStrokeDasharray","overlayStrokeDashoffset","_computeOverlayStrokeDashOffset","pathCls","fillOpacity","_underlayRefHandler","strokeDasharray","strokeDashoffset","_overlayRefHandler","stroke","Progress","showInfo","inRange","getPercent","isEqual","Scale","scales","scale","_renderItems","Track","Selected","slider","SeletedComps","_getStyle","_getStyleLeft","_getStyleRight","Mark","marks","marksPosition","Slider","hasMovingClass","_getProps","sliderFrag","activeClass","FixedSlider","keyState","_addDocumentEvents","_removeDocumentEvents","_onMouseUpListener","_onMouseUp","tooltipAnimation","hasTip","tipRender","tooltipVisible","addedProps","_onMouseDown","onTooltipVisibleChange","onProcess","_isMultiple","isFixedWidth","LowerSlider","UpperSlider","newprop","Range","initialValue","tempValue","lowerTooltipVisible","upperTooltipVisible","_marksToScales","pace","_start","pauseEvent","_moving","_onProcess","_positionToCurrent","lastPosition","dragging","preValue","getDragging","oldDragging","nextValue","_currentToValue","_onMouseMoveListener","_move","_end","newLeft","newRight","newMaxLeft","newMinRight","_calcMarks","_calcScales","handleLowerTooltipVisibleChange","handleUpperTooltipVisibleChange","hasTips","tipFormatter","supportKeys","ICON_SIZE_MAP","hoverValue","iconSpace","clicked","timer","stateValue","getRenderResult","clearTimer","underlayNode","newIconSize","newIconSpace","allowHalf","fullNum","surplusNum","floorValue","onHoverChange","changingValue","handleChecked","infoValue","ceilValue","showGrade","strokeMode","readAs","enableA11y","sizeMap","hover","iconNode","ratingCls","baseCls","overlayStyle","getOverlayWidth","infoStyle","getInfoLeft","finalProps","onMouseOver","handleHover","onMouseMove","handleLeave","onFilterChange","autoCompleteRef","ins","searchFocus","defaultFilterValue","onClickMask","onInputFocus","onInputBlur","buttonProps","hasIcon","searchText","buttonCls","filterProps","searchIcon","searchBtn","filterSelect","renderSearchIcon","renderSearchButton","othersAttributes","dataAttr","renderAddonAfter","renderInputMask","renderInput","overlayVisible","combox","IconSearchFC","memo","propsValue","propsSearchCls","searchCls","triggerTooltipProps","searchProps","searchRef","useRef","rootCls","wrapperCls","useCallback","handleBlur","useEffect","iconButton","IconSearch","handleOpenChange","checkSpecKeys","spec","keysArray","getTrackCSS","trackWidth","trackHeight","trackChildren","slideCount","slidesToShow","vertical","slideHeight","variableWidth","slideWidth","centerMode","getTrackAnimateCSS","speed","cssEase","getTrackLeft","targetLeft","targetSlide","targetSlideIndex","slideOffset","verticalOffset","infinite","slidesToScroll","condition","slideIndex","trackRef","listWidth","EventHandlers","changeSlide","indexOffset","currentSlide","slideHandler","keyHandler","accessibility","selectHandler","swipeStart","swipe","draggable","posX","posY","touchObject","startX","startY","curX","curY","swipeMove","animating","curLeft","track","swipeLength","sqrt","positionOffset","verticalSwiping","dotCount","swipeDirection","touchSwipeLength","edgeFriction","edgeDragged","edgeEvent","swiped","swipeEvent","swipeLeft","trackStyle","getNavigableIndexes","breakPoint","indexes","checkNavigable","navigables","prevNavigable","getSlideCount","centerOffset","swipeToSlide","swipedSlide","slides","slide","getHeight","dataset","swipeEnd","minSwipe","touchThreshold","listHeight","newSlide","currentDirection","currentLeft","onInnerSliderEnter","autoplay","pauseOnHover","pause","onInnerSliderLeave","autoPlay","helpers","initialize","slickList","centerPadding","defaultActiveIndex","adaptHeight","adaptiveHeight","canGoNext","canGo","waitForAnimate","lazyLoad","lazyLoadedList","animationEndCallback","onBeforeChange","loaded","slidesToLoad","slidesLen","sliderIndex","pre","useCSS","nextStateChanges","arrowHoverHandler","swipeAngle","xDist","yDist","atan2","play","nextIndex","hasMounted","autoPlayTimer","autoplaySpeed","Arrow","clickHandler","arrowSize","arrowPosition","arrowDirection","ARROW_ICON_TYPES","arrowClazz","hoz","ver","getKey","fallbackKey","renderSlides","specProps","preCloneSlides","postCloneSlides","childOnClickOptions","cssClasses","childStyle","getSlideStyle","slickClasses","slickActive","slickCenter","slickCloned","getSlideClasses","outline","focusOnSelect","infiniteCount","Dots","dotsClass","dotsDirection","dotsRender","dotsClazz","leftBound","rightBound","itemClazz","dotOptions","handleProp","handleChangeSlide","docIndex","currentSlideIndex","InnerSlider","slickGoTo","onWindowResized","clearInterval","attr","dotsEle","prevArrow","nextArrow","arrows","dots","trackProps","dotProps","_instanceRefHandler","onEnterArrow","onLeaveArrow","centerPaddingStyle","verticalHeightStyle","padding","onTouchEnd","onTouchCancel","HelpersMixin","EventHandlersMixin","innerSlider","slideDirection","sliderProps","dotRender","touchMove","fade","arrowPos","initialSlide","afterChange","beforeChange","SplitButton","leftButtonProps","triggerClassNames","_wrapperRefHandler","selectMenuItem","Step","parentWidth","parentHeight","currentfocus","resize","adjustHeight","labelPlacement","getElementsByClassName","re","itemHeight","setHeight","_getValidChildren","_direction","_labelPlacement","stepCls","_stepRefHandler","StepItem","stepWidth","tail","stepNode","refName","eventHandler","adjustTail","resetTailStyle","_itemRender","overlayCls","nodeElement","_getNode","finalNodeElement","_refHandlerCreator","removeClickedCls","aria-current","arrowElement","otherElement","Star","starred","defaultStarred","starredText","triggerEvents","getOffsetWH","tabPosition","getOffsetLT","isTransformSupported","floatRight","floatLeft","setSlideBtn","getDropdownItems","badge","onCloseKeyDown","removeTab","badgeV","iconV","activeKey","tabRender","excessMode","dropdownTabs","tabs","tabTemplateFn","defaultTabTemplateRender","rst","onNavItemClick","onNavItemMouseEnter","onNavItemMouseLeave","activeTabRefHandler","activeTab","activeTabWH","wrapperWH","activeTabOffset","wrapperOffset","setOffset","onTriggerEvent","updateTimer","nav","navbar","prevBtn","nextBtn","showBtn","initialSettings","scrollTimer","scrollToActiveTab","slideTimer","checkSlideBtn","setActive","navWH","relativeOffset","_adjustTarget","navOffset","navStyle","canTransform","webkitTransform","mozTransform","navbarWH","minOffset","_setBtnStyle","wrapperWidth","tabsWidth","tab","nextButton","prevButton","restButton","showNextPrev","renderDropdownTabs","onPrevClick","prevBtnHandler","onNextClick","nextBtnHandler","containerCls","navCls","tabList","renderTabList","navChildren","wrapperRefHandler","navRefHandler","navbarCls","navbarRefHandler","TabContent","unmountInactiveTabs","formatChildren","TabItem","_actived","setActiveKey","newKey","getNextActiveKey","handleTriggerEvent","getDefaultActiveKey","defaultActiveKey","isNext","navClassName","contentStyle","contentClassName","newPosition","navProps","onNavKeyDown","contentProps","tabChildren","resDirection","tabBarExtraContent","blackList","statics","Target","rowIndex","onRowHover","isEnter","currentRow","Cell","columns","getCellProps","cellRef","primaryKey","lockType","colIndex","dataIndex","alignHeader","fetchDataByPath","notRenderCellIndex","matchCellIndex","cellIndex","colSpan","rowSpan","_getNotRenderCellIndex","cellClass","last","cell","maxColIndex","maxRowIndex","colGroup","expandedIndexSimulate","renderCells","row","resizable","innerStyle","__normalized","filterMode","filterMenuProps","filters","sortable","lock","columnId","isInHeader","tagStyle","cellProps","textAlign","verticalAlign","AutoWidth","renderCalculator","Body","rowRef","onRowClick","onRowMouseEnter","onRowMouseLeave","emptyContent","components","getRowProps","RowComponent","CellComponent","rowProps","rowClass","__expanded","rowClassName","getRowRef","Filter","filterRef","_selectedKeys","filterParams","onFilter","filterConfig","subMenuSelectable","renderMenuContent","onFilterConfirm","onFilterClear","filterKeydown","onFilterVisible","onFilterSelect","Sort","order","initialOrder","onSort","sortIcons","sortStatus","icons","sortOrder","keydownHandler","renderSort","Resize","lastPageX","unSelect","changedPageX","destory","userSelect","Header","headerCellRef","affixRef","onResizeChange","selectedRowKeys","rowSelection","FilterComponent","SortComponent","ResizeComponent","col","titleAddons","sortElement","filterElement","resizeElement","getCellRef","Wrapper","Column","ColumnGroup","getBestWidth","headerWidth","sizeGroup","groupBy","bodyWidths","sizesA","sizesB","Calculators","colGroups","column","calced","headerCalculator","bodyCalculators","bestWidth","isMax","enable","calculatorId","AutoWidthInstance","maxValue","maxValueId","Calculator","bindCalculator","ColGroup","bindColGroup","flatChildren","getTableInstance","getTableInstanceForVirtual","refColGroup","calcAndUpdate","normalizeChildren","fetchInfoFromBinaryChildren","getChildren","hasGroupHeader","groupChildren","propsChildren","analyzeColDefine","groupChild","getColSpan","hasHeader","wrapperContent","HeaderComponent","WrapperComponent","BodyComponent","renderColGroup","getWrapperRef","getAffixRef","getHeaderCellRef","normalizeChildrenState","renderTable","isZebra","entireDataSource","loadingComponent","LoadingComponent","loadingClassName","expandedRowRender","expandedRowIndent","openRowKeys","hasExpandedRowCtrl","getExpandedColProps","onRowOpen","onExpandedRowClick","fixedHeader","maxBodyHeight","stickyHeader","affixProps","indent","isTree","rowHeight","onBodyScroll","LockRow","ExpandedRow","leftIndent","rightIndent","totalIndent","renderCols","expandedIndex","renderExpandedRow","newRowIndex","SelectionRow","TreeRow","treeStatus","__level","TreeCell","onTreeNodeClick","firstCellStyle","treeArrowNode","treeArrowType","openTreeRowKeys","hasExpanded","expandedKeydown","tree","BaseComponent","TreeTable","ds","getChildrenKeyById","getTreeNodeStatus","openKey","FixedHeader","FixedBody","FixedWrapper","FixedTable","innerHeaderNode","adjustFixedHeaderSize","paddingName","unique","selection","SelectionTable","columnProps","renderSelectionHeader","renderSelectionBody","selectAllRow","flatDataSource","userAttrs","titleProps","selectOneRow","records","onSelectAll","triggerSelection","listHeader","hasChildrenSelection","hasSelection","ExpandedTable","onExpandedClick","switchNode","toArrayChildren","renderExpandedCell","itemCopy","VirtualBody","tableNode","virtualScroll","virtualScrollNode","onLockBodyScroll","onVirtualScroll","getBodyNode","getLockNode","innerTop","virtualScrollRef","tableRef","VirtualTable","scrollToRow","lastScrollTop","computeScrollToRow","computeBodyHeight","computeInnerTop","hasVirtualData","adjustScrollTop","adjustSize","reComputeSize","getRowNode","rowClientHeight","ExpectStart","visibleCount","tableInc","headerClientWidth","leftNode","bodyLeftNode","rightNode","bodyRightNode","hasScrollbar","getVisibleRange","LockBody","onLockBodyWheel","onWheel","onBodyWheel","LockHeader","LockTable","isLock","deltaY","deltaX","safeScrollX","lockRightBody","lockLeftBody","scrollNode","newScrollTop","lockRightTable","lockLeftTable","lockLeftChildren","lockRightChildren","_isLock","splitChildren","splitFromNormalizeChildren","mergeFromSplitLockChildren","originChildren","deepCopy","lockChildren","scrollToCol","colCellNode","getCellNode","rowCellNode","bodyNodeOffset","adjustIfTableNotNeedLock","adjustHeaderSize","adjustBodySize","adjustCellSize","lockLeftLen","lockRightLen","_notNeedAdjustLockLeft","_notNeedAdjustLockRight","isOriginLock","widthObj","headerCell","getHeaderCellNode","cellWidths","headerWidths","configWidths","removeLockTable","lockRightBodyWrapper","hasHozScroll","lockBodyHeight","headerRightRow","headerLeftRow","headerRightLockRow","headerLeftLockRow","maxRightRowHeight","tableRightInc","updatePosition","maxLeftRowHeight","tableLeftInc","lockLeftRow","lockRightRow","getFirstNormalCellNode","lockLeftHeight","lockRightHeight","normalizedChildren","LockWrapper","newItem","ListHeader","useFirstLevelDataWhenNoChildren","ListFooter","GroupListRow","renderChildren","toRenderList","isFirstLevelDataWhenNoChildren","cells","isChildrenSelection","listNode","cameType","isSelection","ListBody","ListTable","listFooter","isList","StickHeader","newAffixProps","sticky","StickyTable","StickyHeader","GroupHeader","GroupFooter","expandedRowKeys","onExpandedChange","isLoading","optimization","getRowClassName","timePickerLocale","onClearValue","onKeyown","triggerInput","panelProps","onTimePanelSelect","isHover","startInputing","endInputing","startInputStr","endInputStr","startInputValue","endInputValue","onTrigger","onTriggerChange","onStartInputChange","onStartInputBlur","onEndInputChange","onEndInputBlur","onMouseOut","renderTimePanel","folderIndex","foldArea","foldShow","childrenCount","foldNodeShow","toggleFold","timelineCls","TimelineItem","isSpread","timeLeft","finalItemNode","folderCls","itemNodeCls","dotTailCls","timelineNode","TransferItem","highlight","needHighlight","addHighlightTimer","removeHighlightTimer","panelPosition","onDragStart","referenceTop","referenceHeight","dragPosition","onDragOver","dragGap","getDragGap","onDragEnd","onDrop","dragValue","dragOverValue","isSimple","getItemDOM","handleDragStart","handleDragOver","handleDragEnd","handleDrop","TransferPanel","searchedValue","footerId","baseId","headerId","searched","allChecked","enabledDatasource","itemValue","onMove","customerList","customerPanel","getListDOM","handleItemDragStart","handleItemDragOver","handleItemDragEnd","handleItemDrop","renderNotFoundContent","showCheckAll","onMoveAll","checkedCount","totalCount","totalEnabledCount","countLabel","handleAllCheck","renderSearch","renderList","defaultLeftChecked","defaultRightChecked","filterCheckedValue","leftCheckedValue","rightCheckedValue","leftValue","getLeftValue","rightValue","itemValues","valuePropName","referenceValue","currentIndex","referenceIndex","expectIndex","movedValue","setValueState","disabledValue","rightData","groupDatasource","leftData","movedData","leftDisabled","rightDisabled","handleMoveItem","titles","leftDatasource","rightDatasource","handleSimpleMove","handleSimpleMoveAll","handlePanelChange","handlePanelSort","renderCenter","TreeNodeInput","TreeNode","editing","getParentNode","eventKey","isNodeBlock","returnValue","setLoading","onEditFinish","onRightClick","handleDragEnter","canDrop","handleDragLeave","handleEditFinish","onDoubleClick","handleEditStart","onContextMenu","handleRightClick","lineState","showLine","isRoot","renderRightAngle","labelProps","addCallbacks","handleInputKeyDown","hasChildTree","childTree","dragOver","dragOverGapTop","dragOverGapBottom","rootDraggable","filterTreeNode","indexArr","onDragEnter","onDragLeave","innerClassName","defaultPaddingLeft","innerProps","aria-posinset","aria-setsize","renderSwitcher","renderNoopSwitcher","renderCheckbox","renderChildTree","filterChildKey","_k2n","newKeys","filterParentKey","getAllCheckedKeys","checkedKeys","flatKeys","removeKey","addParentKey","Tree","indeterminateKeys","getExpandedKeys","getSelectedKeys","getCheckedKeys","getIndeterminateKeys","willReceiveProps","defaultExpandAll","autoExpandParent","newExpandedKeys","ancestorPos","ancestorKey","defaultCheckedKeys","processKey","setExpandedState","selectedNodes","getNodes","checkedStrategy","checkedNodes","checkedNodesPositions","parentCheck","newCheckedKeys","dragOverNodeKey","dropPosition","dragNodeKey","dragNode","dragNodesKeys","getDropPosition","labelWrapperNode","labelWrapper","params","generateDropParams","getNodeProps","isLabelBlock","renderByDataSource","renderByChildren","Node","TreeSelect","treeCheckedStrategy","getKeysByValue","keyNotInDataSource","getValueByKeys","forSelect","removedItem","removedValue","treeCheckStrictly","removedPos","parentIndex","searchedKeys","retainedKeys","isSearched","posArr","kk","setFocusKey","retainedNodes","retainedNode","hideNode","searching","isParentMatched","addNode","treeSelectPrefix","treeDefaultExpandAll","treeDefaultExpandedKeys","treeLoadData","customTreeProps","treeProps","saveTreeRef","notFound","createNodesByData","searchNodes","valueForSelect","getValueForSelect","getFileItem","file","fileList","matchKey","errorCode","EXCEED_LIMIT","BEFOREUPLOAD_REJECT","RESPONSE_FAIL","listType","defaultFileList","uploaderRef","startUpload","isUploading","xhr","getBody","responseText","response","parse","XMLHttpRequest","onProgress","onprogress","formData","FormData","append","filename","onerror","onError","onload","onSuccess","ontimeout","withCredentials","headers","setRequestHeader","send","Uploader","beforeUpload","reqs","files","post","requestOptions","request","defaultRequest","Selecter","filesArr","fileRef","click","dataTransfer","dropEffect","preventDragOver","accept","dragable","saveFileRef","Html5Uploader","getUploadOptions","uploader","onAbort","INPUT_STYLE","fontSize","IframeUploader","uploading","contentDocument","innerHTML","endUpload","domain","updateInputWH","rootNode","formNode","form","dataSpan","inputs","createDocumentFragment","submit","iframeName","onLoad","encType","autoUpload","File","saveUploaderRef","List","removeFile","onImageError","onPreview","useDataURL","FileReader","originFileObj","imgURL","reader","onloadend","readAsDataURL","previewFile","previewDataUrl","downloadURL","sizeCaculator","errorMsg","alt","fileSize","SIZE_SUFFIX","suffixIndex","extraRender","progressProps","getInfo","handleCancel","rel","getTextList","getImageList","getPictureCardList","listclassNames","afterSelect","less","objFile","lastModified","lastModifiedDate","fileToObject","uploadFiles","discardFiles","isPassed","formatter","old","readonly","isExceedLimit","onRemoveFunc","otherAttributes","html5Uploader","uploadButtonCls","othersForList","othersForUpload","Dragger","ErrorCode","ImageUpload","DragUpload","Core","CropUpload"],"mappings":"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","file":"at.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AT\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"AT\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__4__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 293);\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\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","//! moment.js\n//! version : 2.26.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function 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.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function 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\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function 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\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function 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\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function 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\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (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\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\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\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 }\n return m._isValid;\n }\n\n function 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.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\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 (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; 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\n function 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\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function 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\n function 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 for (i = 0; i < arguments.length; 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\n var deprecations = {};\n\n function 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\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function 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\n function 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\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (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\n var 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\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function 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\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([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 }\n function 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\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function 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\n function 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\n function 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\n var 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\n function 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\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var 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\n function 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\n function 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\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function 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\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function 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\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function 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\n function 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\n function 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\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; 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\n var 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 = /[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 regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function 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\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\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 for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function 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\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var 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 function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (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\n function 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\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['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\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function 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\n function 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\n function 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\n function 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\n function setMonth(mom, value) {\n var dayOfMonth;\n\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 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function 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\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function 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\n function 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\n function 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 for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\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 for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\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\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function 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\n function 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\n function 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\n function 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\n function 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\n function 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\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var 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\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function 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\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['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\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function 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\n function 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\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\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\n function 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\n function 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\n function 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\n function 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\n function 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\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\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\n function 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\n function 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\n function 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\n function 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\n function 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\n function 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\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function 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\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('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 });\n addParseToken('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 });\n addParseToken('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 });\n addParseToken('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\n function 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\n var 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\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var 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\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function 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\n function 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\n function 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\n function 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 ) {\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.\n function 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\n function 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\n function 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\n function 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\n function listLocales() {\n return keys(locales);\n }\n\n function 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)\n var extendedIsoRegex = /^\\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 = /^\\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 = /^(?:(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\n function 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\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; 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 = isoTimes.length; 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\n function 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\n function 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\n function 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\n function 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\n function 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\n function 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\n function 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\n hooks.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 and will be removed in an upcoming major release. Please refer to ' +\n '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.\n function 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\n function 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]\n function 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\n function 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\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function 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\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; 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\n function 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\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; 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\n function 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\n function 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\n function 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\n function 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\n function 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\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var 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.\n function 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?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\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 < ordering.length; ++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\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function 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\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function 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\n function 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\n function 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\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['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']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function 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.\n function 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\n function 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.\n hooks.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.\n function 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\n function 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\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function 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\n function 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\n function 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\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function 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\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var 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 = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function 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\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function 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\n function 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\n function 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\n function 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\n function 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\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function 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\n function 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\n function 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\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\n function 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\n function 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\n function 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\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n 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\n function clone() {\n return new Moment(this);\n }\n\n function 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\n function 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\n function 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\n function 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\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function 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\n function 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\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function 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 */\n function 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\n function 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\n function 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\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function 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\n function 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.\n function 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\n var 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\n function localeData() {\n return this._locale;\n }\n\n var 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):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function 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\n function 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\n function 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\n function 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\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function 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\n function 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\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function 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\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\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 addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['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\n function 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\n function 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\n function 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\n function 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.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\n function 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.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\n function 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.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\n function 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.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\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\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\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function 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\n function 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\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function 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\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('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\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function 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\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function 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)\n function 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\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('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\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function 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\n function 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)\n function 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)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function 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\n function 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\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function 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\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var 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\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var 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\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var 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\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function 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\n function 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\n function 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\n function 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\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function 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\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.26.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.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\n return hooks;\n\n})));\n","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.format = format;\nexports.asyncMap = asyncMap;\nexports.asyncMapPromise = asyncMapPromise;\nexports.complementError = complementError;\nexports.processErrorResults = processErrorResults;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar formatRegExp = /%[sdj%]/g;\n\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var i = 1;\n var f = args[0];\n var len = args.length;\n\n if (typeof f === 'function') {\n return f(args.slice(1));\n }\n\n if (typeof f === 'string') {\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') {\n return '%';\n }\n\n if (i >= len) {\n return x;\n }\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n default:\n return x;\n }\n });\n return str;\n }\n\n return f;\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n var index = 0;\n var arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n\n var original = index;\n index = index + 1;\n\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n return callback([]);\n }\n }\n\n next([]);\n}\n/**\n * 平铺规则\n * @param {object} objArr [description]\n * @return {Array} [description]\n */\n\n\nfunction flattenObjArr(objArr) {\n var ret = [];\n Object.keys(objArr).forEach(function (k) {\n Object.keys(objArr[k]).forEach(function (r) {\n ret.push(objArr[k][r]);\n });\n });\n return ret;\n}\n/**\n * 异步调用\n * @param {map} objArr 校验规则对象列表\n * @param {object} option 配置项\n * @param {Function} func 每个校验规则\n * @param {Function} callback 全部完成后的执行\n */\n\n\nfunction asyncMap(objArr, option, func, callback) {\n // 发现第一个错误即返回\n if (option.first) {\n var flattenArr = flattenObjArr(objArr);\n return asyncSerialArray(flattenArr, func, callback);\n }\n\n var objArrKeys = Object.keys(objArr);\n var objArrLength = objArrKeys.length;\n var total = 0;\n var results = [];\n\n var next = function next(errors) {\n results.push(errors);\n total++;\n\n if (total === objArrLength) {\n return callback(results);\n }\n };\n\n objArrKeys.forEach(function (key) {\n var arr = objArr[key];\n asyncSerialArray(arr, func, next);\n });\n}\n\nfunction resolveErrorPromiseInSeries(_x, _x2) {\n return _resolveErrorPromiseInSeries.apply(this, arguments);\n}\n\nfunction _resolveErrorPromiseInSeries() {\n _resolveErrorPromiseInSeries = (0, _asyncToGenerator2.default)(\n /*#__PURE__*/\n _regenerator.default.mark(function _callee2(arr, func) {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", arr.reduce(\n /*#__PURE__*/\n function () {\n var _ref = (0, _asyncToGenerator2.default)(\n /*#__PURE__*/\n _regenerator.default.mark(function _callee(prevPromise, next) {\n var errors;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return prevPromise;\n\n case 3:\n errors = _context.sent;\n _context.next = 9;\n break;\n\n case 6:\n _context.prev = 6;\n _context.t0 = _context[\"catch\"](0);\n errors = _context.t0;\n\n case 9:\n if (!(errors && errors.length)) {\n _context.next = 11;\n break;\n }\n\n return _context.abrupt(\"return\", errors);\n\n case 11:\n return _context.abrupt(\"return\", func(next));\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[0, 6]]);\n }));\n\n return function (_x6, _x7) {\n return _ref.apply(this, arguments);\n };\n }(), Promise.resolve()));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _resolveErrorPromiseInSeries.apply(this, arguments);\n}\n\nfunction asyncMapPromise(_x3, _x4, _x5) {\n return _asyncMapPromise.apply(this, arguments);\n}\n\nfunction _asyncMapPromise() {\n _asyncMapPromise = (0, _asyncToGenerator2.default)(\n /*#__PURE__*/\n _regenerator.default.mark(function _callee3(objArr, option, func) {\n var flatObjArr, objArrValues;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!option.first) {\n _context3.next = 3;\n break;\n }\n\n flatObjArr = flattenObjArr(objArr);\n return _context3.abrupt(\"return\", resolveErrorPromiseInSeries(flatObjArr, func));\n\n case 3:\n objArrValues = Object.values(objArr);\n return _context3.abrupt(\"return\", Promise.all(objArrValues.map(function (val) {\n return resolveErrorPromiseInSeries(val, func);\n })));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return _asyncMapPromise.apply(this, arguments);\n}\n\nfunction complementError(rule) {\n return function (oe) {\n if (oe && oe.message) {\n oe.field = rule.field;\n return oe;\n }\n\n return {\n message: oe,\n field: rule.field\n };\n };\n}\n/**\n *\n * @param {Array} results errors from running validation\n * @returns {Object} { errors: Array, fields: Object }\n */\n\n\nfunction processErrorResults() {\n var results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n errors = errors.concat(e);\n } else {\n errors.push(e);\n }\n }\n\n for (var i = 0; i < results.length; i++) {\n add(results[i]);\n }\n\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n for (var _i = 0; _i < errors.length; _i++) {\n var field = errors[_i].field;\n\n if (field) {\n fields[field] = fields[field] || [];\n fields[field].push(errors[_i]);\n }\n }\n }\n\n return {\n errors: errors,\n fields: fields\n };\n}","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nexports.typeOf = typeOf;\nexports.isArrayLike = isArrayLike;\nexports.isPromise = isPromise;\nexports.isPlainObject = isPlainObject;\nexports.shallowEqual = shallowEqual;\nexports.each = each;\nexports.pickOthers = pickOthers;\nexports.pickAttrsWith = pickAttrsWith;\nexports.isNil = isNil;\nexports.deepMerge = deepMerge;\nexports.isFunctionComponent = isFunctionComponent;\nexports.isClassComponent = isClassComponent;\nexports.isReactFragment = isReactFragment;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 获取对象的类型\n * @param {*} obj\n * @return {String}\n *\n * @example\n * typeOf([]) === 'Array'\n * typeOf() === 'Undefined'\n * typeOf(1) === 'Number'\n */\nfunction typeOf(obj) {\n return Object.prototype.toString.call(obj).replace(/\\[object\\s|]/g, '');\n}\n\n/**\n * 判断是否是数组或类数组对象\n * @param {*} obj\n * @return {Boolean}\n *\n * @example\n * isArrayLike([]) === true\n * isArrayLike(arguments) === true\n * isArrayLike(this.props.children) === true\n */\nfunction isArrayLike(obj) {\n var length = !!obj && 'length' in obj && obj.length;\n var type = typeOf(obj);\n\n return type === 'Array' || length === 0 || typeof length === 'number' && length > 0 && length - 1 in obj;\n}\n\n/**\n * 判断对象是否是一个promise,即是否可以用.then\n * @param {*} obj\n * @return {Boolean}\n */\nfunction isPromise(obj) {\n return !!obj && ((typeof obj === 'undefined' ? 'undefined' : (0, _typeof3.default)(obj)) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n\n/**\n * 是否是一个纯净的对象\n * @param {*} obj\n * @return {Boolean}\n * @reference https://github.com/jonschlinkert/is-plain-object\n */\nfunction isPlainObject(obj) {\n if (typeOf(obj) !== 'Object') {\n return false;\n }\n\n var ctor = obj.constructor;\n\n if (typeof ctor !== 'function') {\n return false;\n }\n\n var prot = ctor.prototype;\n\n if (typeOf(prot) !== 'Object') {\n return false;\n }\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\n/**\n * 对象浅比较\n * @param {Object} objA\n * @param {Object} objB\n * @param {Function} [compare] 手动调用方法比较\n * @return {Boolean} 对象浅比较是否相等\n *\n * @example\n * object.shallowEqual({a: 100}, {a: 100}); // true\n */\nfunction shallowEqual(objA, objB, compare) {\n if (objA === objB) {\n return true;\n }\n\n // 其中一个不是object,则不相等\n if (!objA || !objB || (typeof objA === 'undefined' ? 'undefined' : (0, _typeof3.default)(objA)) + (typeof objB === 'undefined' ? 'undefined' : (0, _typeof3.default)(objB)) !== 'objectobject') {\n return false;\n }\n\n var keyA = Object.keys(objA);\n var keyB = Object.keys(objB);\n var len = keyA.length;\n\n // key 数量不一致则不相等\n if (len !== keyB.length) {\n return false;\n }\n\n var hasCallback = typeof compare === 'function';\n\n for (var i = 0; i < len; i++) {\n var key = keyA[i];\n\n if (!Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n\n var valA = objA[key];\n var valB = objB[key];\n\n var ret = hasCallback ? compare(valA, valB, key) : void 0;\n\n if (ret === false || ret === void 0 && valA !== valB) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * 遍历对象或数组,或者类数组,例如React中的children对象、arguments等\n * @param {Object|Array} obj\n * @param {Function} callback fn(n, i) or fn(val, key)\n * @param {Number} [direction = 1] 是否倒序遍历,只对数组有效\n * @return {Object|Array}\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 */\nfunction each(obj, callback, direction) {\n var reversed = direction === -1;\n var length = obj.length;\n var value = void 0,\n i = reversed ? length - 1 : 0;\n\n if (isArrayLike(obj)) {\n for (; i < length && i >= 0; reversed ? i-- : i++) {\n value = callback.call(obj[i], obj[i], i);\n\n if (value === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(i)) {\n value = callback.call(obj[i], obj[i], i);\n\n if (value === false) {\n break;\n }\n }\n }\n }\n\n return obj;\n}\n\n// @private 判断key是否在数组或对象中\nvar _isInObj = function _isInObj(key, obj, isArray) {\n return isArray ? obj.indexOf(key) > -1 : key in obj;\n};\n\n/**\n * 过滤出其它属性\n * @param {Object|Array} holdProps 过滤的参照对象,最终的结果只保留不在参照对象中的key\n * @param {Object} props 被过滤的对象\n * @return {Object} others\n *\n * @example\n * object.pickOthers(FooComponent.propTypes, this.props);\n * object.pickOthers(['className', 'onChange'], this.props);\n */\nfunction pickOthers(holdProps, props) {\n var others = {};\n var isArray = typeOf(holdProps) === 'Array';\n\n for (var key in props) {\n if (!_isInObj(key, holdProps, isArray)) {\n others[key] = props[key];\n }\n }\n\n return others;\n}\n\n/**\n * 过滤出带prefix的属性\n * @param {Object} holdProps 过滤的参照对象,最终的结果只保留不在参照对象中的key\n * @param {string} prefix 包含的字符串\n * @return {Object} others\n *\n * @example\n * object.pickAttrsWith(FooComponent.propTypes, 'data-');\n */\nfunction pickAttrsWith(holdProps, prefix) {\n var others = {};\n\n for (var key in holdProps) {\n if (key.match(prefix)) {\n others[key] = holdProps[key];\n }\n }\n\n return others;\n}\n\n/**\n * Checks if value is `null` or `undefined`.\n * @param {*} value\n * @return {Boolean}\n */\nfunction 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/**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n * @reference https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge?page=1&tab=votes#tab-top\n */\nfunction deepMerge(target) {\n for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (!sources.length) return target;\n var source = sources.shift();\n\n if (!isPlainObject(target)) {\n target = {};\n }\n\n if (isPlainObject(target) && isPlainObject(source)) {\n for (var key in source) {\n // 如果是object 进行深拷贝\n if (isPlainObject(source[key]) && !_react2.default.isValidElement(source[key])) {\n var _extends2;\n\n if (!target[key]) (0, _extends5.default)(target, (_extends2 = {}, _extends2[key] = {}, _extends2));\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 } else {\n var _extends3;\n\n (0, _extends5.default)(target, (_extends3 = {}, _extends3[key] = source[key], _extends3));\n }\n }\n }\n\n return deepMerge.apply(undefined, [target].concat(sources));\n}\n\n/**\n * 组件是否为 Fucntion Component\n * @param {*} component 传入的组件\n */\nfunction isFunctionComponent(component) {\n return typeOf(component) === 'Function' && component.prototype.isReactComponent === undefined;\n}\n\n/**\n * 组件是否为 Class Component\n * @param {*} component 传入的组件\n */\nfunction isClassComponent(component) {\n return typeOf(component) === 'Function' && component.prototype.isReactComponent !== undefined;\n}\n\n/**\n * 判断是否为 ReactFragment\n * @param {*} component 传入的组件\n */\nfunction isReactFragment(component) {\n if (isNil(component)) {\n return false;\n }\n\n if (component.type) {\n return component.type === _react2.default.Fragment;\n }\n return component === _react2.default.Fragment;\n}","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var _typeof = require(\"../helpers/typeof\");\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\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","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = true;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","exports.f = {}.propertyIsEnumerable;\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","var styleEqual = require('style-equal');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction type(a) {\n return Array.isArray(a) ? 'array' : typeof a;\n}\n\nfunction elementEquals(a, b) {\n var typeOfA = type(a);\n var typeOfB = type(b);\n\n if (typeOfA !== typeOfB) return false;\n\n switch (typeOfA) {\n case 'array':\n if (a.length !== b.length) return false;\n for (var i = 0; i < a.length; i++) {\n if (!elementEquals(a[i], b[i])) return false;\n }\n return true;\n case 'object':\n if (!a || !b) return a === b;\n if (a.type !== b.type) return false;\n if (a.key !== b.key) return false;\n if (a.ref !== b.ref) return false;\n return shallowElementEquals(a.props, b.props);\n break;\n default:\n return a === b;\n }\n}\n\nfunction shallowElementEquals(a, b) {\n var aCount = 0;\n var bCount = 0;\n\n for (var key in a) {\n if (hasOwnProperty.call(a, key)) {\n if (key === 'style') {\n // NOTE(lmr): kind of risky, but i'm assuming that a `style` prop is a React Native style,\n // and using the `styleEqual` algorithm here.\n if (!styleEqual(a[key], b[key])) return false;\n } else if (key === 'children') {\n // will compare children later\n } else {\n if (a[key] !== b[key]) return false;\n }\n aCount++;\n }\n }\n\n for (var key in b) {\n if (hasOwnProperty.call(b, key)) {\n bCount++;\n }\n }\n\n if (aCount !== bCount) return false;\n\n // compare children last...\n return elementEquals(a.children, b.children);\n}\n\nmodule.exports = shallowElementEquals;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _configProvider = require('../config-provider');\n\nvar _configProvider2 = _interopRequireDefault(_configProvider);\n\nvar _row = require('./row');\n\nvar _row2 = _interopRequireDefault(_row);\n\nvar _col = require('./col');\n\nvar _col2 = _interopRequireDefault(_col);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Grid = {\n Row: _configProvider2.default.config(_row2.default, {\n transform: /* istanbul ignore next */function transform(props, deprecated) {\n if ('type' in props) {\n deprecated('type', 'fixed | wrap | gutter', 'Row');\n\n var _props = props,\n type = _props.type,\n others = (0, _objectWithoutProperties3.default)(_props, ['type']);\n\n var types = Array.isArray(type) ? type : [type];\n var fixed = void 0;\n if (types.indexOf('fixed') > -1) {\n fixed = true;\n }\n var wrap = void 0;\n if (types.indexOf('wrap') > -1) {\n wrap = true;\n }\n props = (0, _extends3.default)({ fixed: fixed, wrap: wrap }, others);\n }\n\n return props;\n }\n }),\n Col: _configProvider2.default.config(_col2.default)\n};\n\nexports.default = Grid;\nmodule.exports = exports['default'];","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","module.exports = require(\"regenerator-runtime\");\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","module.exports = {};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","const fullbackGlobal = {};\n\nexport class CacheManager {\n static get global() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return fullbackGlobal;\n }\n\n static get globalCache() {\n if (typeof CacheManager.global._atIconScriptCaches !== 'undefined') {\n return CacheManager.global._atIconScriptCaches;\n }\n\n CacheManager.global._atIconScriptCaches = new Set();\n return CacheManager.global._atIconScriptCaches;\n }\n\n static has = val => {\n return CacheManager.globalCache.has(val);\n };\n\n static add = val => {\n return CacheManager.globalCache.add(val);\n };\n}\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\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 });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'birneçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\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 });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\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 });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha invalida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\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 });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\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 });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var hi = moment.defineLocale('hi', {\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\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 });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n '_'\n ),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\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 });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\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 });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\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 });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\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 });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\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 });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n );\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return (\n '(' +\n monthsSubjective[momentToFormat.month()] +\n '|' +\n monthsNominative[momentToFormat.month()] +\n ')'\n );\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\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 });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\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 });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Пагоҳ соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js language configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js language configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = require('./_hide');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.default = getContextProps;\n\nvar _zhCn = require('../locale/zh-cn.js');\n\nvar _zhCn2 = _interopRequireDefault(_zhCn);\n\nvar _util = require('../util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @param {Object|Boolean} input\n * @returns {Object} typeof obj.open === 'boolean'\n */\nvar parseBoundary = function parseBoundary(input) {\n var obj = void 0;\n if (input === undefined || input === null) {\n return {};\n } else if (typeof input === 'boolean') {\n obj = { open: input };\n } else {\n obj = (0, _extends3.default)({ open: true }, input);\n }\n\n return obj;\n};\n\nfunction getContextProps(props, context, displayName) {\n var prefix = props.prefix,\n locale = props.locale,\n pure = props.pure,\n rtl = props.rtl,\n device = props.device,\n popupContainer = props.popupContainer,\n errorBoundary = props.errorBoundary;\n var nextPrefix = context.nextPrefix,\n nextLocale = context.nextLocale,\n nextPure = context.nextPure,\n nextWarning = context.nextWarning,\n nextRtl = context.nextRtl,\n nextDevice = context.nextDevice,\n nextPopupContainer = context.nextPopupContainer,\n nextErrorBoundary = context.nextErrorBoundary;\n\n\n var newPrefix = prefix || nextPrefix;\n\n var localeFromContext = void 0;\n if (nextLocale) {\n localeFromContext = nextLocale[displayName];\n if (localeFromContext) {\n localeFromContext.momentLocale = nextLocale.momentLocale;\n }\n }\n\n var newLocale = void 0;\n if (locale) {\n newLocale = _util.obj.deepMerge({}, _zhCn2.default[displayName], localeFromContext, locale);\n } else if (localeFromContext) {\n newLocale = _util.obj.deepMerge({}, _zhCn2.default[displayName], localeFromContext);\n }\n\n var newPure = typeof pure === 'boolean' ? pure : nextPure;\n var newRtl = typeof rtl === 'boolean' ? rtl : nextRtl;\n\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 = (0, _extends3.default)({}, parseBoundary(nextErrorBoundary), parseBoundary(errorBoundary));\n\n if (!('open' in newErrorBoundary)) {\n newErrorBoundary.open = false;\n }\n\n return {\n prefix: newPrefix,\n locale: newLocale,\n pure: newPure,\n rtl: newRtl,\n warning: nextWarning,\n device: device || nextDevice || undefined,\n popupContainer: popupContainer || nextPopupContainer,\n errorBoundary: newErrorBoundary\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.htmlId = exports.KEYCODE = exports.guid = exports.focus = exports.support = exports.str = exports.obj = exports.log = exports.func = exports.events = exports.env = exports.dom = undefined;\n\nvar _dom2 = require('./dom');\n\nvar _dom = _interopRequireWildcard(_dom2);\n\nvar _env2 = require('./env');\n\nvar _env = _interopRequireWildcard(_env2);\n\nvar _events2 = require('./events');\n\nvar _events = _interopRequireWildcard(_events2);\n\nvar _func2 = require('./func');\n\nvar _func = _interopRequireWildcard(_func2);\n\nvar _log2 = require('./log');\n\nvar _log = _interopRequireWildcard(_log2);\n\nvar _object2 = require('./object');\n\nvar _object = _interopRequireWildcard(_object2);\n\nvar _string2 = require('./string');\n\nvar _string = _interopRequireWildcard(_string2);\n\nvar _support2 = require('./support');\n\nvar _support = _interopRequireWildcard(_support2);\n\nvar _focus2 = require('./focus');\n\nvar _focus = _interopRequireWildcard(_focus2);\n\nvar _guid2 = require('./guid');\n\nvar _guid3 = _interopRequireDefault(_guid2);\n\nvar _keycode = require('./keycode');\n\nvar _keycode2 = _interopRequireDefault(_keycode);\n\nvar _htmlId2 = require('./htmlId');\n\nvar _htmlId = _interopRequireWildcard(_htmlId2);\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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar dom = exports.dom = _dom;\nvar env = exports.env = _env;\nvar events = exports.events = _events;\nvar func = exports.func = _func;\nvar log = exports.log = _log;\nvar obj = exports.obj = _object;\nvar str = exports.str = _string;\nvar support = exports.support = _support;\nvar focus = exports.focus = _focus;\nvar guid = exports.guid = _guid3.default;\nvar KEYCODE = exports.KEYCODE = _keycode2.default;\nvar htmlId = exports.htmlId = _htmlId;","'use strict';\n\nexports.__esModule = true;\nexports.matches = exports.hasDOM = undefined;\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nexports.hasClass = hasClass;\nexports.addClass = addClass;\nexports.removeClass = removeClass;\nexports.toggleClass = toggleClass;\nexports.getStyle = getStyle;\nexports.setStyle = setStyle;\nexports.scrollbar = scrollbar;\nexports.getOffset = getOffset;\nexports.getPixels = getPixels;\nexports.getClosest = getClosest;\nexports.getMatches = getMatches;\n\nvar _string = require('./string');\n\nvar _object = require('./object');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 是否能使用 DOM 方法\n * @type {Boolean}\n */\nvar hasDOM = exports.hasDOM = typeof window !== 'undefined' && !!window.document && !!document.createElement;\n\n/**\n * 节点是否包含指定 className\n * @param {Element} node\n * @param {String} className\n * @return {Boolean}\n *\n * @example\n * dom.hasClass(document.body, 'foo');\n */\nfunction hasClass(node, className) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return false;\n }\n\n if (node.classList) {\n return node.classList.contains(className);\n } else {\n return node.className.indexOf(className) > -1;\n }\n}\n\n/**\n * 添加 className\n * @param {Element} node\n * @param {String} className\n *\n * @example\n * dom.addClass(document.body, 'foo');\n */\nfunction addClass(node, className, _force) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return;\n }\n\n if (node.classList) {\n node.classList.add(className);\n } else if (_force === true || !hasClass(node, className)) {\n node.className += ' ' + className;\n }\n}\n\n/**\n * 移除 className\n * @param {Element} node\n * @param {String} className\n *\n * @example\n * dom.removeClass(document.body, 'foo');\n */\nfunction removeClass(node, className, _force) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return;\n }\n\n if (node.classList) {\n node.classList.remove(className);\n } else if (_force === true || hasClass(node, className)) {\n node.className = node.className.replace(className, '').replace(/\\s+/g, ' ').trim();\n }\n}\n\n/**\n * 切换 className\n * @param {Element} node\n * @param {String} className\n * @return {Boolean} 执行后节点上是否还有此 className\n *\n * @example\n * dom.toggleClass(document.body, 'foo');\n */\nfunction toggleClass(node, className) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return false;\n }\n\n if (node.classList) {\n return node.classList.toggle(className);\n } else {\n var flag = hasClass(node, className);\n flag ? removeClass(node, className, true) : addClass(node, className, true);\n\n return !flag;\n }\n}\n\n/**\n * 元素是否匹配 CSS 选择器\n * @param {Element} node DOM 节点\n * @param {String} selector CSS 选择器\n * @return {Boolean}\n *\n * @example\n * dom.matches(mountNode, '.container'); // boolean\n */\nvar matches = exports.matches = function () {\n var matchesFn = null;\n /* istanbul ignore else */\n if (hasDOM) {\n var _body = document.body || document.head;\n matchesFn = _body.matches ? 'matches' : _body.webkitMatchesSelector ? 'webkitMatchesSelector' : _body.msMatchesSelector ? 'msMatchesSelector' : _body.mozMatchesSelector ? 'mozMatchesSelector' : null;\n }\n\n return function (node, selector) {\n if (!hasDOM || !node) {\n return false;\n }\n\n return matchesFn ? node[matchesFn](selector) : false;\n };\n}();\n\n/**\n * 获取元素计算后的样式\n * @private\n * @param {Element} node\n * @return {Object}\n */\nfunction _getComputedStyle(node) {\n return node && node.nodeType === 1 ? window.getComputedStyle(node, null) : {};\n}\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 * 校验并修正元素的样式属性值\n * @private\n * @param {Element} node\n * @param {String} type\n * @param {Number} value\n */\nfunction _getStyleValue(node, type, value) {\n type = type.toLowerCase();\n\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\n if (!(type in removePixel)) {\n // 属性值是否需要去掉 px 单位,这里假定此类的属性值都是 px 为单位的\n removePixel[type] = PIXEL_PATTERN.test(type);\n }\n\n return removePixel[type] ? parseFloat(value) || 0 : value;\n}\n\nvar floatMap = { cssFloat: 1, styleFloat: 1, float: 1 };\n\n/**\n * 获取元素计算后的样式\n * @param {Element} node DOM 节点\n * @param {String} name 属性名\n * @return {Number|Object}\n */\nfunction getStyle(node, name) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return null;\n }\n\n var style = _getComputedStyle(node);\n\n // 如果不指定属性名,则返回全部值\n if (arguments.length === 1) {\n return style;\n }\n\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n\n return _getStyleValue(node, name, style.getPropertyValue((0, _string.hyphenate)(name)) || node.style[(0, _string.camelcase)(name)]);\n}\n\n/**\n * 设置元素的样式\n * @param {Element} node DOM 节点\n * @param {Object|String} name 属性名,或者是一个对象,包含多个属性\n * @param {Number|String} value 属性值\n *\n * @example\n * // 设置单个属性值\n * dom.setStyle(mountNode, 'width', 100);\n * // 设置多条属性值\n * dom.setStyle(mountNode, {\n * width: 100,\n * height: 200\n * });\n */\nfunction setStyle(node, name, value) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return false;\n }\n\n // 批量设置多个值\n if ((typeof name === 'undefined' ? 'undefined' : (0, _typeof3.default)(name)) === 'object' && arguments.length === 2) {\n (0, _object.each)(name, function (val, key) {\n 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 = value + 'px';\n }\n node.style[(0, _string.camelcase)(name)] = value; // IE8 support\n }\n}\n\n/**\n * 获取默认的滚动条大小\n * @return {Object} width, height\n */\nfunction scrollbar() {\n var scrollDiv = document.createElement('div');\n\n setStyle(scrollDiv, {\n position: 'absolute',\n width: '100px',\n height: '100px',\n overflow: 'scroll',\n top: '-9999px'\n });\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n var scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n return {\n width: scrollbarWidth,\n height: scrollbarHeight\n };\n}\n\n/**\n * 获取元素距离视口顶部和左边的偏移距离\n * @return {Object} top, left\n */\nfunction 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/**\n * 获取不同单位转为 number 的长度\n * @param {string|number} len 传入的长度\n * @return {number} pixels\n */\nfunction getPixels(len) {\n var win = document.defaultView;\n if (typeof +len === 'number' && !isNaN(+len)) {\n return +len;\n }\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\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\n return 0;\n}\n\n/**\n * 匹配特定选择器且离当前元素最近的祖先元素(也可以是当前元素本身),如果匹配不到,则返回 null\n * @param {element} dom 待匹配的元素\n * @param {string} selecotr 选择器\n * @return {element} parent\n */\nfunction getClosest(dom, selector) {\n /* istanbul ignore if */\n if (!hasDOM || !dom) {\n return null;\n }\n\n // ie9\n /* istanbul ignore if */\n if (!Element.prototype.closest) {\n if (!document.documentElement.contains(dom)) return null;\n do {\n if (getMatches(dom, selector)) return dom;\n dom = dom.parentElement;\n } while (dom !== null);\n } else {\n return dom.closest(selector);\n }\n return null;\n}\n\n/**\n * 如果元素被指定的选择器字符串选择,getMatches() 方法返回true; 否则返回false\n * @param {element} dom 待匹配的元素\n * @param {string} selecotr 选择器\n * @return {element} parent\n */\nfunction getMatches(dom, selector) {\n /* istanbul ignore if */\n if (!hasDOM || !dom) {\n return null;\n }\n\n /* istanbul ignore if */\n if (Element.prototype.matches) {\n return dom.matches(selector);\n } else if (Element.prototype.msMatchesSelector) {\n return dom.msMatchesSelector(selector);\n } else if (Element.prototype.webkitMatchesSelector) {\n return dom.webkitMatchesSelector(selector);\n }\n\n return null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.camelcase = camelcase;\nexports.hyphenate = hyphenate;\nexports.template = template;\n\nvar _log = require('./log');\n\nvar _object = require('./object');\n\n/**\n * 将字符串转化为驼峰式写法\n * @param {String} str 例:-webkit-transition\n * @return {String} 例:WebkitTransition\n */\nfunction camelcase(str) {\n if (!/-/.test(str)) {\n return str || '';\n }\n return str.toLowerCase().replace(/-([a-z])/g, function ($0, $1) {\n return $1.toUpperCase();\n });\n}\n\n/**\n * 将驼峰式字符串转化为连字符写法\n * @param {String} str 例:WebkitTransition\n * @return {String} 例:-webkit-transition\n */\nfunction hyphenate(str) {\n var strType = (0, _object.typeOf)(str);\n if (strType !== 'String') {\n (0, _log.warning)('[ hyphenate(str: string): string ] ' + ('Expected arguments[0] to be a string but get a ' + strType + '.') + 'It will return an empty string without any processing.');\n return '';\n }\n return str.replace(/([A-Z])/g, function ($0) {\n return '-' + $0.toLowerCase();\n });\n}\n\n/**\n * 替换模板字符串\n * @param {String} tpl 例:当前{current}, 共{total}页\n * @param {Object} object 例:{current: 1, total: 9}\n * @return {String} 例:\n */\nfunction template(tpl) {\n var object = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var tplType = (0, _object.typeOf)(tpl);\n if (tplType !== 'String') {\n (0, _log.warning)('[ template(tpl: string, object: object): string ] ' + ('Expected arguments[0] to be a string but get a ' + tplType + '.') + 'It will return an empty string without any processing.');\n return '';\n }\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}","'use strict';\n\nexports.__esModule = true;\nexports.deprecated = deprecated;\nexports.warning = warning;\n\nvar _env = require('./env');\n\n/* eslint no-console: 0 */\n\n/**\n * 反对使用某一方法或属性的警告\n * @param {String} props 过时的属性或方法名\n * @param {String} instead 替代的属性或方法名\n * @param {String} component 组件名\n *\n * @example\n * log.deprecated('onBeforeClose', 'beforeClose', 'Dialog');\n * // Warning: onBeforeClose is deprecated at [ Dialog ], use [ beforeClose ] instead of it.\n */\nfunction deprecated(props, instead, component) {\n /* istanbul ignore else */\n if (!(0, _env.isProduction)() && typeof console !== 'undefined' && console.error) {\n return console.error('Warning: [ ' + props + ' ] is deprecated at [ ' + component + ' ], ' + ('use [ ' + instead + ' ] instead of it.'));\n }\n}\n\n/**\n * 控制台警告日志\n * @param {String} msg\n * @return {Console<Error> | void}\n */\nfunction warning(msg) {\n /* istanbul ignore else */\n if (!(0, _env.isProduction)() && typeof console !== 'undefined' && console.error) {\n return console.error('Warning: ' + msg);\n }\n}","'use strict';\n\nexports.__esModule = true;\n/**\n * IE浏览器的渲染引擎版本号\n * 注意:此属性与浏览器版本号不同,IE的渲染引擎版本号是可以通过HTML header或手动设置去更改的\n * @type {Number} 6 ~ 11\n */\nvar ieVersion = exports.ieVersion = typeof document !== 'undefined' ? document.documentMode : undefined;\n\n/**\n * 判断是否是生产环境\n * @type {Boolean}\n */\nvar isProduction = exports.isProduction = function isProduction() {\n var PRODUCTION_ENV = 'production';\n var result = false;\n try {\n if (process.env.NODE_ENV === PRODUCTION_ENV) {\n result = true;\n }\n } catch (err) {\n //\n }\n\n if (!result) {\n try {\n if (window.process.env.NODE_ENV === PRODUCTION_ENV) {\n result = true;\n }\n } catch (err) {\n //\n }\n }\n\n return result;\n};\n\nexports.default = {\n ieVersion: ieVersion,\n isProduction: isProduction\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.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\n // version 0.x\n ESCAPE: 27,\n LEFT_ARROW: 37,\n UP_ARROW: 38,\n RIGHT_ARROW: 39,\n DOWN_ARROW: 40,\n\n // MacOS\n CONTROL: 17,\n OPTION: 18,\n CMD: 91,\n COMMAND: 91,\n DELETE: 8\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _class, _temp;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nDefaultUI.propTypes = {\n error: _propTypes2.default.object,\n errorInfo: _propTypes2.default.object\n};\n\nfunction DefaultUI() {\n return '';\n}\n\nvar ErrorBoundary = (_temp = _class = function (_React$Component) {\n (0, _inherits3.default)(ErrorBoundary, _React$Component);\n\n function ErrorBoundary(props) {\n (0, _classCallCheck3.default)(this, ErrorBoundary);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this, props));\n\n _this.state = { error: null, errorInfo: null };\n return _this;\n }\n\n ErrorBoundary.prototype.componentDidCatch = function componentDidCatch(error, errorInfo) {\n this.setState({\n error: error,\n errorInfo: errorInfo\n });\n\n var afterCatch = this.props.afterCatch;\n\n\n if ('afterCatch' in this.props && typeof afterCatch === 'function') {\n this.props.afterCatch(error, errorInfo);\n }\n };\n\n ErrorBoundary.prototype.render = function render() {\n var _props$fallbackUI = this.props.fallbackUI,\n FallbackUI = _props$fallbackUI === undefined ? DefaultUI : _props$fallbackUI;\n\n\n if (this.state.errorInfo) {\n return _react2.default.createElement(FallbackUI, {\n error: this.state.error,\n errorInfo: this.state.errorInfo\n });\n }\n // Normally, just render children\n return this.props.children;\n };\n\n return ErrorBoundary;\n}(_react2.default.Component), _class.propTypes = {\n children: _propTypes2.default.element,\n /**\n * 捕获错误后的自定义处理, 比如埋点上传\n * @param {Object} error 错误\n * @param {Object} errorInfo 错误详细信息\n */\n afterCatch: _propTypes2.default.func,\n /**\n * 捕获错误后的展现 自定义组件\n * @param {Object} error 错误\n * @param {Object} errorInfo 错误详细信息\n * @returns {Element} 捕获错误后的处理\n */\n fallbackUI: _propTypes2.default.func\n}, _temp);\nErrorBoundary.displayName = 'ErrorBoundary';\nexports.default = ErrorBoundary;\nmodule.exports = exports['default'];","'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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _validate2 = _interopRequireDefault(require(\"@alifd/validate\"));\n\nvar _utils = require(\"./utils\");\n\nvar initMeta = {\n state: '',\n valueName: 'value',\n trigger: 'onChange'\n};\n\nvar Field =\n/*#__PURE__*/\nfunction () {\n (0, _createClass2.default)(Field, null, [{\n key: \"create\",\n value: function create(com) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new this(com, options);\n }\n }, {\n key: \"getUseField\",\n value: function getUseField(_ref) {\n var _this = this;\n\n var useState = _ref.useState,\n useMemo = _ref.useMemo;\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _useState = useState(),\n _useState2 = (0, _slicedToArray2.default)(_useState, 2),\n setState = _useState2[1];\n\n var field = useMemo(function () {\n return _this.create({\n setState: setState\n }, options);\n }, [setState]);\n return field;\n };\n }\n }]);\n\n function Field(com) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _classCallCheck2.default)(this, Field);\n\n if (!com) {\n (0, _utils.warning)('`this` is missing in `Field`, you should use like `new Field(this)`');\n }\n\n this.com = com;\n this.fieldsMeta = {};\n this.cachedBind = {};\n this.instance = {}; // holds constructor values. Used for setting field defaults on init if no other value or initValue is passed.\n // Also used caching values when using `parseName: true` before a field is initialized\n\n this.values = (0, _extends2.default)({}, options.values);\n this.processErrorMessage = options.processErrorMessage;\n this.afterValidateRerender = options.afterValidateRerender;\n this.options = (0, _extends2.default)({\n parseName: false,\n forceUpdate: false,\n scrollToFirstError: true,\n first: false,\n onChange: function onChange() {},\n autoUnmount: true,\n autoValidate: true\n }, options);\n ['init', 'getValue', 'getValues', 'setValue', 'setValues', 'getError', 'getErrors', 'setError', 'setErrors', 'validateCallback', 'validatePromise', 'getState', 'reset', 'resetToDefault', 'remove', 'spliceArray', 'addArrayValue', 'deleteArrayValue'].forEach(function (m) {\n _this2[m] = _this2[m].bind(_this2);\n });\n }\n\n (0, _createClass2.default)(Field, [{\n key: \"setOptions\",\n value: function setOptions(options) {\n (0, _extends2.default)(this.options, options);\n }\n /**\n * Controlled Component\n * @param {String} name\n * @param {Object} fieldOption\n * @returns {Object} {value, onChange}\n */\n\n }, {\n key: \"init\",\n value: function init(name) {\n var _this3 = this;\n\n var fieldOption = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rprops = arguments.length > 2 ? arguments[2] : undefined;\n var initValue = fieldOption.initValue,\n _fieldOption$valueNam = fieldOption.valueName,\n valueName = _fieldOption$valueNam === void 0 ? 'value' : _fieldOption$valueNam,\n _fieldOption$trigger = fieldOption.trigger,\n trigger = _fieldOption$trigger === void 0 ? 'onChange' : _fieldOption$trigger,\n _fieldOption$rules = fieldOption.rules,\n rules = _fieldOption$rules === void 0 ? [] : _fieldOption$rules,\n _fieldOption$props = fieldOption.props,\n props = _fieldOption$props === void 0 ? {} : _fieldOption$props,\n _fieldOption$getValue = fieldOption.getValueFromEvent,\n getValueFromEvent = _fieldOption$getValue === void 0 ? null : _fieldOption$getValue,\n _fieldOption$getValue2 = fieldOption.getValueFormatter,\n getValueFormatter = _fieldOption$getValue2 === void 0 ? getValueFromEvent : _fieldOption$getValue2,\n setValueFormatter = fieldOption.setValueFormatter,\n _fieldOption$autoVali = fieldOption.autoValidate,\n autoValidate = _fieldOption$autoVali === void 0 ? true : _fieldOption$autoVali;\n var parseName = this.options.parseName;\n\n if (getValueFromEvent) {\n (0, _utils.warning)('`getValueFromEvent` has been deprecated in `Field`, use `getValueFormatter` instead of it');\n }\n\n var originalProps = (0, _extends2.default)({}, props, rprops);\n var defaultValueName = \"default\".concat(valueName[0].toUpperCase()).concat(valueName.slice(1));\n var defaultValue;\n\n if (typeof initValue !== 'undefined') {\n defaultValue = initValue;\n } else if (typeof originalProps[defaultValueName] !== 'undefined') {\n // here use typeof, in case of defaultValue={0}\n defaultValue = originalProps[defaultValueName];\n } // get field from this.fieldsMeta or new one\n\n\n var field = this._getInitMeta(name);\n\n (0, _extends2.default)(field, {\n valueName: valueName,\n initValue: defaultValue,\n disabled: 'disabled' in originalProps ? originalProps.disabled : false,\n getValueFormatter: getValueFormatter,\n setValueFormatter: setValueFormatter,\n rules: Array.isArray(rules) ? rules : [rules],\n ref: originalProps.ref\n }); // Controlled Component, should always equal props.value\n\n if (valueName in originalProps) {\n field.value = originalProps[valueName]; // When rerendering set the values from props.value\n\n if (parseName) {\n this.values = (0, _utils.setIn)(this.values, name, field.value);\n } else {\n this.values[name] = field.value;\n }\n }\n /**\n * first init field (value not in field)\n * should get field.value from this.values or defaultValue\n */\n\n\n if (!('value' in field)) {\n if (parseName) {\n var cachedValue = (0, _utils.getIn)(this.values, name);\n\n if (typeof cachedValue !== 'undefined') {\n field.value = cachedValue;\n } else {\n // save struct to this.values even defaultValue is undefiend\n field.value = defaultValue;\n this.values = (0, _utils.setIn)(this.values, name, field.value);\n }\n } else {\n var _cachedValue = this.values[name];\n\n if (typeof _cachedValue !== 'undefined') {\n field.value = _cachedValue;\n } else if (typeof defaultValue !== 'undefined') {\n // should be same with parseName, but compatible with old versions\n field.value = defaultValue;\n this.values[name] = field.value;\n }\n }\n } // Component props\n\n\n var inputProps = (0, _defineProperty2.default)({\n 'data-meta': 'Field',\n id: name,\n ref: this._getCacheBind(name, \"\".concat(name, \"__ref\"), this._saveRef)\n }, valueName, setValueFormatter ? setValueFormatter(field.value) : field.value);\n var rulesMap = {};\n\n if (this.options.autoValidate && autoValidate !== false) {\n // trigger map\n rulesMap = (0, _utils.mapValidateRules)(field.rules, trigger); // validate hook\n\n var _loop = function _loop(action) {\n if (action === trigger) {\n return \"continue\";\n }\n\n var actionRule = rulesMap[action];\n\n inputProps[action] = function () {\n _this3._validate(name, actionRule, action);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this3._callPropsEvent.apply(_this3, [action, originalProps].concat(args));\n\n _this3._reRender();\n };\n };\n\n for (var action in rulesMap) {\n var _ret = _loop(action);\n\n if (_ret === \"continue\") continue;\n }\n } // onChange hack\n\n\n inputProps[trigger] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this3._callOnChange.apply(_this3, [name, rulesMap[trigger], trigger].concat(args));\n\n _this3._callPropsEvent.apply(_this3, [trigger, originalProps].concat(args));\n\n _this3.options.onChange(name, field.value);\n\n _this3._reRender();\n };\n\n delete originalProps[defaultValueName];\n return (0, _extends2.default)({}, originalProps, inputProps);\n }\n /**\n * event on props\n * props.onChange props.onBlur\n */\n\n }, {\n key: \"_callPropsEvent\",\n value: function _callPropsEvent(action, props) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n action in props && typeof props[action] === 'function' && props[action].apply(props, args);\n }\n }, {\n key: \"_getInitMeta\",\n value: function _getInitMeta(name) {\n if (!(name in this.fieldsMeta)) {\n this.fieldsMeta[name] = (0, _extends2.default)({}, initMeta);\n }\n\n return this.fieldsMeta[name];\n }\n /**\n * update field.value and validate\n */\n\n }, {\n key: \"_callOnChange\",\n value: function _callOnChange(name, rule, trigger) {\n for (var _len4 = arguments.length, others = new Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) {\n others[_key4 - 3] = arguments[_key4];\n }\n\n var e = others[0];\n\n var field = this._get(name);\n\n if (!field) {\n return;\n }\n\n field.value = field.getValueFormatter ? field.getValueFormatter.apply(this, others) : (0, _utils.getValueFromEvent)(e);\n\n if (this.options.parseName) {\n this.values = (0, _utils.setIn)(this.values, name, field.value);\n } else {\n this.values[name] = field.value;\n }\n\n this._resetError(name); // validate while onChange\n\n\n rule && this._validate(name, rule, trigger);\n }\n /**\n * ref must always be the same function, or if not it will be triggerd every time.\n * @param {String} name name of component\n * @param {String} action key to find ref\n * @param {Function} fn saveRef\n */\n\n }, {\n key: \"_getCacheBind\",\n value: function _getCacheBind(name, action, fn) {\n var cache = this.cachedBind[name] = this.cachedBind[name] || {};\n\n if (!cache[action]) {\n cache[action] = fn.bind(this, name);\n }\n\n return cache[action];\n }\n }, {\n key: \"_setCache\",\n value: function _setCache(name, action, hander) {\n var cache = this.cachedBind[name] = this.cachedBind[name] || {};\n cache[action] = hander;\n }\n }, {\n key: \"_getCache\",\n value: function _getCache(name, action) {\n var cache = this.cachedBind[name] || {};\n return cache[action];\n }\n /**\n * NOTE: saveRef is async function. it will be called after render\n * @param {String} name name of component\n * @param {Function} component ref\n */\n\n }, {\n key: \"_saveRef\",\n value: function _saveRef(name, component) {\n var key = \"\".concat(name, \"_field\");\n var autoUnmount = this.options.autoUnmount;\n\n if (!component && autoUnmount) {\n // component with same name (eg: type ? <A name=\"n\"/>:<B name=\"n\"/>)\n // while type changed, B will render before A unmount. so we should cached value for B\n // step: render -> B mount -> 1. _saveRef(A, null) -> 2. _saveRef(B, ref) -> render\n // 1. _saveRef(A, null)\n var cache = this.fieldsMeta[name];\n cache && this._setCache(name, key, cache); // after destroy, delete data\n\n delete this.instance[name];\n this.remove(name);\n return;\n } // 2. _saveRef(B, ref) (eg: same name but different compoent may be here)\n\n\n if (autoUnmount && !this.fieldsMeta[name] && this._getCache(name, key)) {\n this.fieldsMeta[name] = this._getCache(name, key);\n this.setValue(name, this.fieldsMeta[name] && this.fieldsMeta[name].value, false);\n } // only one time here\n\n\n var field = this._get(name);\n\n if (field) {\n var ref = field.ref;\n\n if (ref) {\n if (typeof ref === 'string') {\n throw new Error(\"can not set string ref for \".concat(name));\n } else if (typeof ref === 'function') {\n ref(component);\n } else if ((0, _typeof2.default)(ref) === 'object' && 'current' in ref) {\n // while ref = React.createRef() ref={ current: null}\n ref.current = component;\n }\n }\n\n this.instance[name] = component;\n }\n }\n /**\n * validate one Component\n * @param {String} name name of Component\n * @param {Array} rule\n * @param {String} trigger onChange/onBlur/onItemClick/...\n */\n\n }, {\n key: \"_validate\",\n value: function _validate(name, rule, trigger) {\n var _this4 = this;\n\n var field = this._get(name);\n\n var value = field.value;\n field.state = 'loading';\n\n var validate = this._getCache(name, trigger);\n\n if (validate && typeof validate.abort === 'function') {\n validate.abort();\n }\n\n validate = new _validate2.default((0, _defineProperty2.default)({}, name, rule));\n\n this._setCache(name, trigger, validate);\n\n validate.validate((0, _defineProperty2.default)({}, name, value), function (errors) {\n if (errors && errors.length) {\n field.errors = (0, _utils.getErrorStrs)(errors, _this4.processErrorMessage);\n field.state = 'error';\n } else {\n field.errors = [];\n field.state = 'success';\n }\n\n _this4._reRender();\n });\n }\n }, {\n key: \"getValue\",\n value: function getValue(name) {\n if (this.options.parseName) {\n return (0, _utils.getIn)(this.values, name);\n }\n\n return this.values[name];\n }\n /**\n * 1. get values by names.\n * 2. If no names passed, return shallow copy of `field.values`\n * @param {Array} names\n */\n\n }, {\n key: \"getValues\",\n value: function getValues(names) {\n var _this5 = this;\n\n var allValues = {};\n\n if (names && names.length) {\n names.forEach(function (name) {\n allValues[name] = _this5.getValue(name);\n });\n } else {\n (0, _extends2.default)(allValues, this.values);\n }\n\n return allValues;\n }\n }, {\n key: \"setValue\",\n value: function setValue(name, value) {\n var reRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (name in this.fieldsMeta) {\n this.fieldsMeta[name].value = value;\n }\n\n if (this.options.parseName) {\n this.values = (0, _utils.setIn)(this.values, name, value);\n } else {\n this.values[name] = value;\n }\n\n reRender && this._reRender();\n }\n }, {\n key: \"setValues\",\n value: function setValues() {\n var _this6 = this;\n\n var fieldsValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var reRender = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (!this.options.parseName) {\n Object.keys(fieldsValue).forEach(function (name) {\n _this6.setValue(name, fieldsValue[name], false);\n });\n } else {\n // NOTE: this is a shallow merge\n // Ex. we have two values a.b.c=1 ; a.b.d=2, and use setValues({a:{b:{c:3}}}) , then because of shallow merge a.b.d will be lost, we will get only {a:{b:{c:3}}}\n this.values = (0, _extends2.default)({}, this.values, fieldsValue);\n var fields = this.getNames();\n fields.forEach(function (name) {\n var value = (0, _utils.getIn)(_this6.values, name);\n\n if (value !== undefined) {\n // copy over values that are in this.values\n _this6.fieldsMeta[name].value = value;\n } else {\n // because of shallow merge\n // if no value then copy values from fieldsMeta to keep initialized component data\n _this6.values = (0, _utils.setIn)(_this6.values, name, _this6.fieldsMeta[name].value);\n }\n });\n }\n\n reRender && this._reRender();\n }\n }, {\n key: \"setError\",\n value: function setError(name, errors) {\n var err = Array.isArray(errors) ? errors : errors ? [errors] : [];\n\n if (name in this.fieldsMeta) {\n this.fieldsMeta[name].errors = err;\n } else {\n this.fieldsMeta[name] = {\n errors: err\n };\n }\n\n if (this.fieldsMeta[name].errors && this.fieldsMeta[name].errors.length > 0) {\n this.fieldsMeta[name].state = 'error';\n } else {\n this.fieldsMeta[name].state = '';\n }\n\n this._reRender();\n }\n }, {\n key: \"setErrors\",\n value: function setErrors() {\n var _this7 = this;\n\n var fieldsErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n Object.keys(fieldsErrors).forEach(function (name) {\n _this7.setError(name, fieldsErrors[name]);\n });\n }\n }, {\n key: \"getError\",\n value: function getError(name) {\n var field = this._get(name);\n\n if (field && field.errors && field.errors.length) {\n return field.errors;\n }\n\n return null;\n }\n }, {\n key: \"getErrors\",\n value: function getErrors(names) {\n var _this8 = this;\n\n var fields = names || this.getNames();\n var allErrors = {};\n fields.forEach(function (f) {\n allErrors[f] = _this8.getError(f);\n });\n return allErrors;\n }\n }, {\n key: \"getState\",\n value: function getState(name) {\n var field = this._get(name);\n\n if (field && field.state) {\n return field.state;\n }\n\n return '';\n }\n /**\n * Get errors using `getErrors` and format to match the structure of errors returned in field.validate\n * @param {Array} fieldNames\n * @return {Object || null} map of inputs and their errors\n */\n\n }, {\n key: \"formatGetErrors\",\n value: function formatGetErrors(fieldNames) {\n var errors = this.getErrors(fieldNames);\n var formattedErrors = null;\n\n for (var field in errors) {\n if (errors.hasOwnProperty(field) && errors[field]) {\n var errorsObj = errors[field];\n\n if (!formattedErrors) {\n formattedErrors = {};\n }\n\n formattedErrors[field] = {\n errors: errorsObj\n };\n }\n }\n\n return formattedErrors;\n }\n /**\n * validate by trigger\n * @param {Array} ns names\n * @param {Function} cb callback after validate\n */\n\n }, {\n key: \"validateCallback\",\n value: function validateCallback(ns, cb) {\n var _this9 = this;\n\n var _getParams = (0, _utils.getParams)(ns, cb),\n names = _getParams.names,\n callback = _getParams.callback;\n\n var fieldNames = names || this.getNames();\n var descriptor = {};\n var values = {};\n var hasRule = false;\n\n for (var i = 0; i < fieldNames.length; i++) {\n var name = fieldNames[i];\n\n var field = this._get(name);\n\n if (!field) {\n continue;\n }\n\n if (field.rules && field.rules.length) {\n descriptor[name] = field.rules;\n values[name] = this.getValue(name);\n hasRule = true; // clear error\n\n field.errors = [];\n field.state = '';\n }\n }\n\n if (!hasRule) {\n var errors = this.formatGetErrors(fieldNames);\n callback && callback(errors, this.getValues(names ? fieldNames : []));\n return;\n }\n\n var validate = new _validate2.default(descriptor, {\n first: this.options.first\n });\n validate.validate(values, function (errors) {\n var errorsGroup = null;\n\n if (errors && errors.length) {\n errorsGroup = {};\n errors.forEach(function (e) {\n var fieldName = e.field;\n\n if (!errorsGroup[fieldName]) {\n errorsGroup[fieldName] = {\n errors: []\n };\n }\n\n var fieldErrors = errorsGroup[fieldName].errors;\n fieldErrors.push(e.message);\n });\n }\n\n if (errorsGroup) {\n // update error in every Field\n Object.keys(errorsGroup).forEach(function (i) {\n var field = _this9._get(i);\n\n field.errors = (0, _utils.getErrorStrs)(errorsGroup[i].errors, _this9.processErrorMessage);\n field.state = 'error';\n });\n }\n\n var formattedGetErrors = _this9.formatGetErrors(fieldNames);\n\n if (formattedGetErrors) {\n errorsGroup = (0, _extends2.default)({}, formattedGetErrors, errorsGroup);\n } // update to success which has no error\n\n\n for (var _i = 0; _i < fieldNames.length; _i++) {\n var _name = fieldNames[_i];\n\n var _field = _this9._get(_name);\n\n if (_field && _field.rules && !(errorsGroup && _name in errorsGroup)) {\n _field.state = 'success';\n }\n } // eslint-disable-next-line callback-return\n\n\n callback && callback(errorsGroup, _this9.getValues(names ? fieldNames : []));\n\n _this9._reRender();\n\n if (typeof _this9.afterValidateRerender === 'function') {\n _this9.afterValidateRerender({\n errorsGroup: errorsGroup,\n options: _this9.options,\n instance: _this9.instance\n });\n }\n });\n }\n /**\n * validate by trigger - Promise version\n * NOTES:\n * - `afterValidateRerender` is not called in `validatePromise`. The rerender is called just before this function\n * returns a promise, so use the returned promise to call any after rerender logic.\n *\n * @param {Array} ns names\n * @param {Function} cb (Optional) callback after validate, must return a promise or a value\n * - ({errors, values}) => Promise({errors, values}) | {errors, values}\n * @returns {Promise} - resolves with {errors, values}\n */\n\n }, {\n key: \"validatePromise\",\n value: function () {\n var _validatePromise = (0, _asyncToGenerator2.default)(\n /*#__PURE__*/\n _regenerator.default.mark(function _callee(ns, cb) {\n var _getParams2, names, callback, fieldNames, descriptor, values, hasRule, i, name, field, _errors, validate, results, errors, errorsGroup, callbackResults;\n\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _getParams2 = (0, _utils.getParams)(ns, cb), names = _getParams2.names, callback = _getParams2.callback;\n fieldNames = names || this.getNames();\n descriptor = {};\n values = {};\n hasRule = false;\n i = 0;\n\n case 6:\n if (!(i < fieldNames.length)) {\n _context.next = 15;\n break;\n }\n\n name = fieldNames[i];\n field = this._get(name);\n\n if (field) {\n _context.next = 11;\n break;\n }\n\n return _context.abrupt(\"continue\", 12);\n\n case 11:\n if (field.rules && field.rules.length) {\n descriptor[name] = field.rules;\n values[name] = this.getValue(name);\n hasRule = true; // clear error\n\n field.errors = [];\n field.state = '';\n }\n\n case 12:\n i++;\n _context.next = 6;\n break;\n\n case 15:\n if (hasRule) {\n _context.next = 22;\n break;\n }\n\n _errors = this.formatGetErrors(fieldNames);\n\n if (!callback) {\n _context.next = 21;\n break;\n }\n\n return _context.abrupt(\"return\", callback({\n errors: _errors,\n values: this.getValues(names ? fieldNames : [])\n }));\n\n case 21:\n return _context.abrupt(\"return\", {\n errors: _errors,\n values: this.getValues(names ? fieldNames : [])\n });\n\n case 22:\n validate = new _validate2.default(descriptor, {\n first: this.options.first\n });\n _context.next = 25;\n return validate.validatePromise(values);\n\n case 25:\n results = _context.sent;\n errors = results && results.errors || [];\n errorsGroup = this._getErrorsGroup({\n errors: errors,\n fieldNames: fieldNames\n });\n callbackResults = {\n errors: errorsGroup,\n values: this.getValues(names ? fieldNames : [])\n };\n _context.prev = 29;\n\n if (!callback) {\n _context.next = 34;\n break;\n }\n\n _context.next = 33;\n return callback(callbackResults);\n\n case 33:\n callbackResults = _context.sent;\n\n case 34:\n _context.next = 39;\n break;\n\n case 36:\n _context.prev = 36;\n _context.t0 = _context[\"catch\"](29);\n return _context.abrupt(\"return\", _context.t0);\n\n case 39:\n this._reRender();\n\n return _context.abrupt(\"return\", callbackResults);\n\n case 41:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[29, 36]]);\n }));\n\n function validatePromise(_x, _x2) {\n return _validatePromise.apply(this, arguments);\n }\n\n return validatePromise;\n }()\n }, {\n key: \"_getErrorsGroup\",\n value: function _getErrorsGroup(_ref3) {\n var _this10 = this;\n\n var errors = _ref3.errors,\n fieldNames = _ref3.fieldNames;\n var errorsGroup = null;\n\n if (errors && errors.length) {\n errorsGroup = {};\n errors.forEach(function (e) {\n var fieldName = e.field;\n\n if (!errorsGroup[fieldName]) {\n errorsGroup[fieldName] = {\n errors: []\n };\n }\n\n var fieldErrors = errorsGroup[fieldName].errors;\n fieldErrors.push(e.message);\n });\n }\n\n if (errorsGroup) {\n // update error in every Field\n Object.keys(errorsGroup).forEach(function (i) {\n var field = _this10._get(i);\n\n if (field) {\n field.errors = (0, _utils.getErrorStrs)(errorsGroup[i].errors, _this10.processErrorMessage);\n field.state = 'error';\n }\n });\n }\n\n var formattedGetErrors = this.formatGetErrors(fieldNames);\n\n if (formattedGetErrors) {\n errorsGroup = (0, _extends2.default)({}, formattedGetErrors, errorsGroup);\n } // update to success which has no error\n\n\n for (var i = 0; i < fieldNames.length; i++) {\n var name = fieldNames[i];\n\n var field = this._get(name);\n\n if (field && field.rules && !(errorsGroup && name in errorsGroup)) {\n field.state = 'success';\n }\n }\n\n return errorsGroup;\n }\n }, {\n key: \"_reset\",\n value: function _reset(ns, backToDefault) {\n var _this11 = this;\n\n if (typeof ns === 'string') {\n ns = [ns];\n }\n\n var changed = false;\n var names = ns || Object.keys(this.fieldsMeta);\n\n if (!ns) {\n this.values = {};\n }\n\n names.forEach(function (name) {\n var field = _this11._get(name);\n\n if (field) {\n changed = true;\n field.value = backToDefault ? field.initValue : undefined;\n field.state = '';\n delete field.errors;\n delete field.rules;\n delete field.rulesMap;\n\n if (_this11.options.parseName) {\n _this11.values = (0, _utils.setIn)(_this11.values, name, field.value);\n } else {\n _this11.values[name] = field.value;\n }\n }\n });\n\n if (changed) {\n this._reRender();\n }\n }\n }, {\n key: \"reset\",\n value: function reset(ns) {\n this._reset(ns, false);\n }\n }, {\n key: \"resetToDefault\",\n value: function resetToDefault(ns) {\n this._reset(ns, true);\n }\n }, {\n key: \"getNames\",\n value: function getNames() {\n var fieldsMeta = this.fieldsMeta;\n return Object.keys(fieldsMeta).filter(function () {\n return true;\n });\n }\n }, {\n key: \"remove\",\n value: function remove(ns) {\n var _this12 = this;\n\n if (typeof ns === 'string') {\n ns = [ns];\n }\n\n if (!ns) {\n this.values = {};\n }\n\n var names = ns || Object.keys(this.fieldsMeta);\n names.forEach(function (name) {\n if (name in _this12.fieldsMeta) {\n delete _this12.fieldsMeta[name];\n }\n\n if (_this12.options.parseName) {\n _this12.values = (0, _utils.deleteIn)(_this12.values, name);\n } else {\n delete _this12.values[name];\n }\n });\n }\n }, {\n key: \"addArrayValue\",\n value: function addArrayValue(key, index) {\n for (var _len5 = arguments.length, argv = new Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {\n argv[_key5 - 2] = arguments[_key5];\n }\n\n return this._spliceArrayValue.apply(this, [key, index, 0].concat(argv));\n }\n }, {\n key: \"deleteArrayValue\",\n value: function deleteArrayValue(key, index) {\n var howmany = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n return this._spliceArrayValue(key, index, howmany);\n }\n /**\n * splice array\n * @param {String} key\n * @param {Number} startIndex\n * @param {Number} howmany\n * @param {*} value\n */\n\n }, {\n key: \"_spliceArrayValue\",\n value: function _spliceArrayValue(key, index, howmany) {\n var _this13 = this;\n\n for (var _len6 = arguments.length, argv = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {\n argv[_key6 - 3] = arguments[_key6];\n }\n\n var argc = argv.length;\n var offset = howmany - argc;\n var startIndex = index + howmany;\n /**\n * case 1: names=['key.0', 'key.1'], should delete 'key.1'\n * case 2: names=['key.0.name', 'key.0.email', 'key.1.name', 'key.1.email'], should delete 'key.1.name', 'key.1.email'\n */\n\n var listMap = {};\n var keyReg = new RegExp(\"^(\".concat(key, \".)(\\\\d+)\"));\n var replaceArgv = [];\n var names = this.getNames();\n names.forEach(function (n) {\n var ret = keyReg.exec(n);\n\n if (ret) {\n var idx = parseInt(ret[2]);\n\n if (idx >= startIndex) {\n var l = listMap[idx];\n var item = {\n from: n,\n to: n.replace(keyReg, function (match, p1) {\n return \"\".concat(p1).concat(idx - offset);\n })\n };\n\n if (!l) {\n listMap[idx] = [item];\n } else {\n l.push(item);\n }\n }\n\n if (offset <= 0 && idx >= index && idx < index + argc) {\n replaceArgv.push(n);\n }\n }\n });\n var idxList = Object.keys(listMap).map(function (i) {\n return {\n index: Number(i),\n list: listMap[i]\n };\n }).sort(function (a, b) {\n return offset > 0 ? a.index - b.index : b.index - a.index;\n }); // should be continuous array\n\n if (idxList.length > 0) {\n idxList.forEach(function (l) {\n var list = l.list;\n list.forEach(function (i) {\n _this13.fieldsMeta[i.to] = _this13.fieldsMeta[i.from];\n });\n });\n\n if (offset > 0) {\n var removeList = idxList.slice(idxList.length - offset, idxList.length);\n removeList.forEach(function (item) {\n item.list.forEach(function (i) {\n delete _this13.fieldsMeta[i.from];\n });\n });\n } else {\n // will get from this.values while rerender\n replaceArgv.forEach(function (i) {\n delete _this13.fieldsMeta[i];\n });\n }\n }\n\n var p = this.getValue(key);\n\n if (p) {\n p.splice.apply(p, [index, howmany].concat(argv));\n }\n\n this._reRender();\n }\n /**\n * splice in a Array [deprecated]\n * @param {String} keyMatch like name.{index}\n * @param {Number} startIndex index\n */\n\n }, {\n key: \"spliceArray\",\n value: function spliceArray(keyMatch, startIndex, howmany) {\n var _this14 = this;\n\n if (keyMatch.match(/{index}$/) === -1) {\n (0, _utils.warning)('key should match /{index}$/');\n return;\n } // regex to match field names in the same target array\n\n\n var reg = keyMatch.replace('{index}', '(\\\\d+)');\n var keyReg = new RegExp(\"^\".concat(reg));\n var listMap = {};\n /**\n * keyMatch='key.{index}'\n * case 1: names=['key.0', 'key.1'], should delete 'key.1'\n * case 2: names=['key.0.name', 'key.0.email', 'key.1.name', 'key.1.email'], should delete 'key.1.name', 'key.1.email'\n */\n\n var names = this.getNames();\n names.forEach(function (n) {\n // is name in the target array?\n var ret = keyReg.exec(n);\n\n if (ret) {\n var index = parseInt(ret[1]);\n\n if (index > startIndex) {\n var l = listMap[index];\n var item = {\n from: n,\n to: \"\".concat(keyMatch.replace('{index}', index - 1)).concat(n.replace(ret[0], ''))\n };\n\n if (!l) {\n listMap[index] = [item];\n } else {\n l.push(item);\n }\n }\n }\n });\n var idxList = Object.keys(listMap).map(function (i) {\n return {\n index: Number(i),\n list: listMap[i]\n };\n }).sort(function (a, b) {\n return a.index < b.index;\n }); // should be continuous array\n\n if (idxList.length > 0 && idxList[0].index === startIndex + 1) {\n idxList.forEach(function (l) {\n var list = l.list;\n list.forEach(function (i) {\n var v = _this14.getValue(i.from); // get index value\n\n\n _this14.setValue(i.to, v, false); // set value to index - 1\n\n });\n });\n var lastIdxList = idxList[idxList.length - 1];\n lastIdxList.list.forEach(function (i) {\n _this14.remove(i.from);\n });\n var parentName = keyMatch.replace('.{index}', '');\n parentName = parentName.replace('[{index}]', '');\n var parent = this.getValue(parentName);\n\n if (parent) {\n // if parseName=true then parent is an Array object but does not know an element was removed\n // this manually decrements the array length\n parent.length--;\n }\n }\n }\n }, {\n key: \"_resetError\",\n value: function _resetError(name) {\n var field = this._get(name);\n\n delete field.errors; //清空错误\n\n field.state = '';\n } //trigger rerender\n\n }, {\n key: \"_reRender\",\n value: function _reRender() {\n if (this.com) {\n if (!this.options.forceUpdate && this.com.setState) {\n this.com.setState({});\n } else if (this.com.forceUpdate) {\n this.com.forceUpdate(); //forceUpdate 对性能有较大的影响,成指数上升\n }\n }\n }\n }, {\n key: \"_get\",\n value: function _get(name) {\n return name in this.fieldsMeta ? this.fieldsMeta[name] : null;\n }\n }]);\n return Field;\n}();\n\nvar _default = Field;\nexports.default = _default;","/**\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 = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\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 };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var map = {\n\t\"./af\": 53,\n\t\"./af.js\": 53,\n\t\"./ar\": 54,\n\t\"./ar-dz\": 55,\n\t\"./ar-dz.js\": 55,\n\t\"./ar-kw\": 56,\n\t\"./ar-kw.js\": 56,\n\t\"./ar-ly\": 57,\n\t\"./ar-ly.js\": 57,\n\t\"./ar-ma\": 58,\n\t\"./ar-ma.js\": 58,\n\t\"./ar-sa\": 59,\n\t\"./ar-sa.js\": 59,\n\t\"./ar-tn\": 60,\n\t\"./ar-tn.js\": 60,\n\t\"./ar.js\": 54,\n\t\"./az\": 61,\n\t\"./az.js\": 61,\n\t\"./be\": 62,\n\t\"./be.js\": 62,\n\t\"./bg\": 63,\n\t\"./bg.js\": 63,\n\t\"./bm\": 64,\n\t\"./bm.js\": 64,\n\t\"./bn\": 65,\n\t\"./bn.js\": 65,\n\t\"./bo\": 66,\n\t\"./bo.js\": 66,\n\t\"./br\": 67,\n\t\"./br.js\": 67,\n\t\"./bs\": 68,\n\t\"./bs.js\": 68,\n\t\"./ca\": 69,\n\t\"./ca.js\": 69,\n\t\"./cs\": 70,\n\t\"./cs.js\": 70,\n\t\"./cv\": 71,\n\t\"./cv.js\": 71,\n\t\"./cy\": 72,\n\t\"./cy.js\": 72,\n\t\"./da\": 73,\n\t\"./da.js\": 73,\n\t\"./de\": 74,\n\t\"./de-at\": 75,\n\t\"./de-at.js\": 75,\n\t\"./de-ch\": 76,\n\t\"./de-ch.js\": 76,\n\t\"./de.js\": 74,\n\t\"./dv\": 77,\n\t\"./dv.js\": 77,\n\t\"./el\": 78,\n\t\"./el.js\": 78,\n\t\"./en-au\": 79,\n\t\"./en-au.js\": 79,\n\t\"./en-ca\": 80,\n\t\"./en-ca.js\": 80,\n\t\"./en-gb\": 81,\n\t\"./en-gb.js\": 81,\n\t\"./en-ie\": 82,\n\t\"./en-ie.js\": 82,\n\t\"./en-il\": 83,\n\t\"./en-il.js\": 83,\n\t\"./en-in\": 84,\n\t\"./en-in.js\": 84,\n\t\"./en-nz\": 85,\n\t\"./en-nz.js\": 85,\n\t\"./en-sg\": 86,\n\t\"./en-sg.js\": 86,\n\t\"./eo\": 87,\n\t\"./eo.js\": 87,\n\t\"./es\": 88,\n\t\"./es-do\": 89,\n\t\"./es-do.js\": 89,\n\t\"./es-us\": 90,\n\t\"./es-us.js\": 90,\n\t\"./es.js\": 88,\n\t\"./et\": 91,\n\t\"./et.js\": 91,\n\t\"./eu\": 92,\n\t\"./eu.js\": 92,\n\t\"./fa\": 93,\n\t\"./fa.js\": 93,\n\t\"./fi\": 94,\n\t\"./fi.js\": 94,\n\t\"./fil\": 95,\n\t\"./fil.js\": 95,\n\t\"./fo\": 96,\n\t\"./fo.js\": 96,\n\t\"./fr\": 97,\n\t\"./fr-ca\": 98,\n\t\"./fr-ca.js\": 98,\n\t\"./fr-ch\": 99,\n\t\"./fr-ch.js\": 99,\n\t\"./fr.js\": 97,\n\t\"./fy\": 100,\n\t\"./fy.js\": 100,\n\t\"./ga\": 101,\n\t\"./ga.js\": 101,\n\t\"./gd\": 102,\n\t\"./gd.js\": 102,\n\t\"./gl\": 103,\n\t\"./gl.js\": 103,\n\t\"./gom-deva\": 104,\n\t\"./gom-deva.js\": 104,\n\t\"./gom-latn\": 105,\n\t\"./gom-latn.js\": 105,\n\t\"./gu\": 106,\n\t\"./gu.js\": 106,\n\t\"./he\": 107,\n\t\"./he.js\": 107,\n\t\"./hi\": 108,\n\t\"./hi.js\": 108,\n\t\"./hr\": 109,\n\t\"./hr.js\": 109,\n\t\"./hu\": 110,\n\t\"./hu.js\": 110,\n\t\"./hy-am\": 111,\n\t\"./hy-am.js\": 111,\n\t\"./id\": 112,\n\t\"./id.js\": 112,\n\t\"./is\": 113,\n\t\"./is.js\": 113,\n\t\"./it\": 114,\n\t\"./it-ch\": 115,\n\t\"./it-ch.js\": 115,\n\t\"./it.js\": 114,\n\t\"./ja\": 116,\n\t\"./ja.js\": 116,\n\t\"./jv\": 117,\n\t\"./jv.js\": 117,\n\t\"./ka\": 118,\n\t\"./ka.js\": 118,\n\t\"./kk\": 119,\n\t\"./kk.js\": 119,\n\t\"./km\": 120,\n\t\"./km.js\": 120,\n\t\"./kn\": 121,\n\t\"./kn.js\": 121,\n\t\"./ko\": 122,\n\t\"./ko.js\": 122,\n\t\"./ku\": 123,\n\t\"./ku.js\": 123,\n\t\"./ky\": 124,\n\t\"./ky.js\": 124,\n\t\"./lb\": 125,\n\t\"./lb.js\": 125,\n\t\"./lo\": 126,\n\t\"./lo.js\": 126,\n\t\"./lt\": 127,\n\t\"./lt.js\": 127,\n\t\"./lv\": 128,\n\t\"./lv.js\": 128,\n\t\"./me\": 129,\n\t\"./me.js\": 129,\n\t\"./mi\": 130,\n\t\"./mi.js\": 130,\n\t\"./mk\": 131,\n\t\"./mk.js\": 131,\n\t\"./ml\": 132,\n\t\"./ml.js\": 132,\n\t\"./mn\": 133,\n\t\"./mn.js\": 133,\n\t\"./mr\": 134,\n\t\"./mr.js\": 134,\n\t\"./ms\": 135,\n\t\"./ms-my\": 136,\n\t\"./ms-my.js\": 136,\n\t\"./ms.js\": 135,\n\t\"./mt\": 137,\n\t\"./mt.js\": 137,\n\t\"./my\": 138,\n\t\"./my.js\": 138,\n\t\"./nb\": 139,\n\t\"./nb.js\": 139,\n\t\"./ne\": 140,\n\t\"./ne.js\": 140,\n\t\"./nl\": 141,\n\t\"./nl-be\": 142,\n\t\"./nl-be.js\": 142,\n\t\"./nl.js\": 141,\n\t\"./nn\": 143,\n\t\"./nn.js\": 143,\n\t\"./oc-lnc\": 144,\n\t\"./oc-lnc.js\": 144,\n\t\"./pa-in\": 145,\n\t\"./pa-in.js\": 145,\n\t\"./pl\": 146,\n\t\"./pl.js\": 146,\n\t\"./pt\": 147,\n\t\"./pt-br\": 148,\n\t\"./pt-br.js\": 148,\n\t\"./pt.js\": 147,\n\t\"./ro\": 149,\n\t\"./ro.js\": 149,\n\t\"./ru\": 150,\n\t\"./ru.js\": 150,\n\t\"./sd\": 151,\n\t\"./sd.js\": 151,\n\t\"./se\": 152,\n\t\"./se.js\": 152,\n\t\"./si\": 153,\n\t\"./si.js\": 153,\n\t\"./sk\": 154,\n\t\"./sk.js\": 154,\n\t\"./sl\": 155,\n\t\"./sl.js\": 155,\n\t\"./sq\": 156,\n\t\"./sq.js\": 156,\n\t\"./sr\": 157,\n\t\"./sr-cyrl\": 158,\n\t\"./sr-cyrl.js\": 158,\n\t\"./sr.js\": 157,\n\t\"./ss\": 159,\n\t\"./ss.js\": 159,\n\t\"./sv\": 160,\n\t\"./sv.js\": 160,\n\t\"./sw\": 161,\n\t\"./sw.js\": 161,\n\t\"./ta\": 162,\n\t\"./ta.js\": 162,\n\t\"./te\": 163,\n\t\"./te.js\": 163,\n\t\"./tet\": 164,\n\t\"./tet.js\": 164,\n\t\"./tg\": 165,\n\t\"./tg.js\": 165,\n\t\"./th\": 166,\n\t\"./th.js\": 166,\n\t\"./tl-ph\": 167,\n\t\"./tl-ph.js\": 167,\n\t\"./tlh\": 168,\n\t\"./tlh.js\": 168,\n\t\"./tr\": 169,\n\t\"./tr.js\": 169,\n\t\"./tzl\": 170,\n\t\"./tzl.js\": 170,\n\t\"./tzm\": 171,\n\t\"./tzm-latn\": 172,\n\t\"./tzm-latn.js\": 172,\n\t\"./tzm.js\": 171,\n\t\"./ug-cn\": 173,\n\t\"./ug-cn.js\": 173,\n\t\"./uk\": 174,\n\t\"./uk.js\": 174,\n\t\"./ur\": 175,\n\t\"./ur.js\": 175,\n\t\"./uz\": 176,\n\t\"./uz-latn\": 177,\n\t\"./uz-latn.js\": 177,\n\t\"./uz.js\": 176,\n\t\"./vi\": 178,\n\t\"./vi.js\": 178,\n\t\"./x-pseudo\": 179,\n\t\"./x-pseudo.js\": 179,\n\t\"./yo\": 180,\n\t\"./yo.js\": 180,\n\t\"./zh-cn\": 181,\n\t\"./zh-cn.js\": 181,\n\t\"./zh-hk\": 182,\n\t\"./zh-hk.js\": 182,\n\t\"./zh-mo\": 183,\n\t\"./zh-mo.js\": 183,\n\t\"./zh-tw\": 184,\n\t\"./zh-tw.js\": 184\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 213;","'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","/** @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","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _util = require(\"./util\");\n\nvar _messages2 = _interopRequireDefault(require(\"./messages\"));\n\nvar _validator = require(\"./validator\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction noop() {}\n\nfunction serializeRules(source, rules) {\n // serialize rules\n var arr;\n var value;\n var series = {};\n var names = Object.keys(rules);\n names.forEach(function (name) {\n arr = rules[name];\n value = source[name];\n\n if (!Array.isArray(arr)) {\n arr = [arr];\n }\n\n arr.forEach(function (rule) {\n rule.validator = (0, _validator.getValidationMethod)(rule);\n rule.field = name;\n\n if (!rule.validator) {\n return;\n }\n\n series[name] = series[name] || [];\n series[name].push({\n rule: rule,\n value: value,\n source: source,\n field: name\n });\n });\n });\n return series;\n}\n\nvar Schema =\n/*#__PURE__*/\nfunction () {\n function Schema(rules) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _classCallCheck2.default)(this, Schema);\n this._rules = rules;\n this._options = _objectSpread({}, options, {\n messages: _objectSpread({}, _messages2.default, {}, options.messages)\n });\n this.complete = [];\n }\n\n (0, _createClass2.default)(Schema, [{\n key: \"abort\",\n value: function abort() {\n for (var i = 0; i < this.complete.length; i++) {\n this.complete[i] = noop;\n }\n }\n }, {\n key: \"messages\",\n value: function messages(_messages) {\n this._options.messages = Object.assign({}, this._options.messages, _messages);\n }\n /**\n *\n * @param {Object} source - map of field names and values to use in validation\n * @param {Function} callback - OPTIONAL - callback to run after all\n * @returns {null | Promise}\n * - { null } - if using callbacks\n * - { Promise }\n * - { errors: null } - if no rules or no errors\n * - { errors: Array, fields: Object } - errors from validation and fields that have errors\n */\n\n }, {\n key: \"validate\",\n value: function validate(source, callback) {\n var _this = this;\n\n if (!callback) {\n return this.validatePromise(source);\n }\n\n if (!this._rules || Object.keys(this._rules).length === 0) {\n if (callback) {\n callback(null);\n }\n\n return;\n }\n\n var series = serializeRules(source, this._rules);\n\n if (Object.keys(series).length === 0) {\n callback(null);\n } // callback function for all rules return\n\n\n function complete(results) {\n var i;\n var field;\n var errors = [];\n var fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n errors = errors.concat(e);\n } else {\n errors.push(e);\n }\n }\n\n for (i = 0; i < results.length; i++) {\n add(results[i]);\n }\n\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n for (i = 0; i < errors.length; i++) {\n field = errors[i].field;\n fields[field] = fields[field] || [];\n fields[field].push(errors[i]);\n }\n }\n\n callback(errors, fields);\n }\n\n this.complete.push(complete);\n var idx = this.complete.length; // async validate\n\n (0, _util.asyncMap)(series, this._options, function (data, doIt) {\n var rule = data.rule;\n rule.field = data.field;\n\n function cb() {\n var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var errors = e;\n\n if (!Array.isArray(errors)) {\n errors = [errors];\n } // 自定义错误\n\n\n if (errors.length && rule.message) {\n errors = [].concat(rule.message);\n }\n\n errors = errors.map((0, _util.complementError)(rule));\n doIt(errors);\n }\n\n var res = rule.validator(rule, data.value, cb, _this._options);\n\n if (res && res.then) {\n res.then(function () {\n return cb();\n }, function (e) {\n return cb(e);\n });\n }\n }, function (results) {\n _this.complete[idx - 1](results);\n });\n }\n /**\n *\n * @param {Object} source - map of field names and values to use in validation\n * @returns {Promise}\n * - { errors: null } if no rules or no errors\n * - { errors: Array, fields: Object } - errors from validation and fields that have errors\n */\n\n }, {\n key: \"validatePromise\",\n value: function () {\n var _validatePromise = (0, _asyncToGenerator2.default)(\n /*#__PURE__*/\n _regenerator.default.mark(function _callee2(source) {\n var _this2 = this;\n\n var series, results;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!this._rules || Object.keys(this._rules).length === 0)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\", Promise.resolve({\n errors: null\n }));\n\n case 2:\n series = serializeRules(source, this._rules);\n\n if (!(Object.keys(series).length === 0)) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt(\"return\", Promise.resolve({\n errors: null\n }));\n\n case 5:\n _context2.next = 7;\n return (0, _util.asyncMapPromise)(series, this._options,\n /*#__PURE__*/\n function () {\n var _ref = (0, _asyncToGenerator2.default)(\n /*#__PURE__*/\n _regenerator.default.mark(function _callee(data) {\n var rule, errors;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n rule = data.rule;\n rule.field = data.field;\n _context.prev = 2;\n _context.next = 5;\n return rule.validator(rule, data.value, null, _this2._options);\n\n case 5:\n errors = _context.sent;\n _context.next = 11;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](2);\n errors = _context.t0;\n\n case 11:\n if (!errors) {\n _context.next = 17;\n break;\n }\n\n if (!Array.isArray(errors)) {\n errors = [errors];\n } // 自定义错误\n\n\n if (errors.length && rule.message) {\n errors = [].concat(rule.message);\n }\n\n return _context.abrupt(\"return\", errors.map((0, _util.complementError)(rule)));\n\n case 17:\n return _context.abrupt(\"return\", []);\n\n case 18:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[2, 8]]);\n }));\n\n return function (_x2) {\n return _ref.apply(this, arguments);\n };\n }());\n\n case 7:\n results = _context2.sent;\n return _context2.abrupt(\"return\", (0, _util.processErrorResults)(results));\n\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function validatePromise(_x) {\n return _validatePromise.apply(this, arguments);\n }\n\n return validatePromise;\n }()\n }]);\n return Schema;\n}();\n\nvar _default = Schema;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\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};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateFunc = validateFunc;\nexports.getValidationMethod = getValidationMethod;\n\nvar _rules = _interopRequireDefault(require(\"./rules/\"));\n\n/* eslint-disable callback-return */\n\n/**\n * {required, format} => format; {required} => required\n * If a promise is wanted from the validator, either return a promise from the callback,\n * or do not pass a callback\n *\n * @param {function} validator [description]\n * @param {string} ruleType [description]\n * @return {function} [description]\n */\nfunction validateFunc(validator, ruleType) {\n return function (rule, value, cb, options) {\n var errors = []; // 如果是非required校验\n\n if (ruleType !== 'required') {\n var _errors = [];\n\n _rules.default.required(rule, value, _errors, options); // 空数据\n\n\n if (_errors.length > 0) {\n if ('required' in rule && rule.required) {\n if (cb) {\n return cb(_errors);\n } else {\n return Promise.reject(_errors);\n }\n } else if (cb) {\n return cb([]); //空数据,并且没有require要求,则忽略\n } else {\n return Promise.resolve(null);\n }\n }\n }\n\n validator(rule, value, errors, options);\n\n if (cb) {\n return cb(errors);\n }\n\n if (Promise) {\n return Promise.resolve(errors);\n }\n };\n}\n/**\n * {required, format} => format; {required} => required\n * @param {object} rule [description]\n * @return {function} [description]\n */\n\n\nfunction getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n\n var keys = Object.keys(rule); //required和其他校验规则共存\n //{required, format} {required, unknown}\n\n for (var i = 0; i < keys.length; i++) {\n var ruleType = keys[i];\n\n if (ruleType === 'required') {\n continue;\n }\n\n if (ruleType in _rules.default) {\n return validateFunc(_rules.default[ruleType], ruleType);\n }\n } // 有其他位置参数\n\n\n if ('required' in rule && rule.required) {\n return validateFunc(_rules.default.required, 'required');\n }\n\n return null;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _required = _interopRequireDefault(require(\"./required\"));\n\nvar _format = _interopRequireDefault(require(\"./format\"));\n\nvar _size = _interopRequireDefault(require(\"./size\"));\n\nvar _length = _interopRequireDefault(require(\"./length\"));\n\nvar _pattern = _interopRequireDefault(require(\"./pattern\"));\n\nvar _default = {\n required: _required.default,\n format: _format.default,\n min: _size.default,\n max: _size.default,\n minLength: _length.default,\n maxLength: _length.default,\n length: _length.default,\n pattern: _pattern.default\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar util = _interopRequireWildcard(require(\"../util\"));\n\n/**\n * Rule for validating required fields.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction required(rule, value, errors, options) {\n if (value === undefined || value === null || value === '' || value.length === 0) {\n errors.push(util.format(options.messages.required, rule.aliasName || rule.field));\n }\n}\n\nvar _default = required;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar util = _interopRequireWildcard(require(\"../util\"));\n\nvar pattern = {\n email: /\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*/,\n url: new RegExp(\"^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$\", 'i'),\n number: /\\d*/,\n tel: /^(1\\d{10})$|(((400)-(\\d{3})-(\\d{4}))|^((\\d{7,8})|(\\d{3,4})-(\\d{7,8})|(\\d{7,8})-(\\d{1,4}))$)$|^([ ]?)$/\n};\nvar types = {\n number: function number(value) {\n if (isNaN(value)) {\n return false;\n }\n\n return typeof value === 'number' || typeof value === 'string' && !!value.match(pattern.number);\n },\n email: function email(value) {\n return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;\n },\n url: function url(value) {\n return typeof value === 'string' && !!value.match(pattern.url);\n },\n tel: function tel(value) {\n return typeof value === 'string' && !!value.match(pattern.tel);\n }\n};\n/**\n * Rule for validating the type of a value.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\n\nfunction format(rule, value, errors, options) {\n var custom = ['email', 'number', 'url', 'tel'];\n var ruleType = rule.format;\n\n if (custom.indexOf(ruleType) > -1 && !types[ruleType](value)) {\n errors.push(util.format(options.messages.format[ruleType], rule.aliasName || rule.field, rule.format));\n }\n}\n\nvar _default = format;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar util = _interopRequireWildcard(require(\"../util\"));\n\n/**\n * Rule for validating minimum and maximum allowed values.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction size(rule, value, errors, options) {\n var key = null;\n var isNum = typeof value === 'number';\n var isStr = typeof value === 'string';\n\n if (isNum) {\n key = 'number';\n } else if (isStr) {\n key = 'string';\n }\n\n if (!key) {\n return false;\n }\n\n var val = value;\n var max = Number(rule.max);\n var min = Number(rule.min);\n\n if (min || max) {\n if (isStr) {\n val = Number(val);\n }\n\n if (val < min) {\n errors.push(util.format(options.messages[key].min, rule.aliasName || rule.field, rule.min));\n } else if (val > max) {\n errors.push(util.format(options.messages[key].max, rule.aliasName || rule.field, rule.max));\n }\n }\n}\n\nvar _default = size;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar util = _interopRequireWildcard(require(\"../util\"));\n\n/**\n * Rule for validating minimum and maximum allowed values.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction length(rule, value, errors, options) {\n var key = null;\n var isNum = typeof value === 'number';\n var isStr = typeof value === 'string';\n var isArr = Array.isArray(value);\n\n if (isNum) {\n key = 'number';\n } else if (isStr) {\n key = 'string';\n } else if (isArr) {\n key = 'array';\n }\n\n if (!key) {\n return false;\n }\n\n var val = value;\n var length = Number(rule.length);\n var maxLength = Number(rule.maxLength);\n var minLength = Number(rule.minLength);\n\n if (minLength || maxLength || length) {\n if (isNum) {\n val = \"\".concat(val);\n }\n\n val = val.length;\n\n if (length && val !== rule.length) {\n errors.push(util.format(options.messages[key].length, rule.aliasName || rule.field, rule.length));\n } else if (val < minLength) {\n errors.push(util.format(options.messages[key].minLength, rule.aliasName || rule.field, rule.minLength));\n } else if (val > maxLength) {\n errors.push(util.format(options.messages[key].maxLength, rule.aliasName || rule.field, rule.maxLength));\n }\n }\n}\n\nvar _default = length;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar util = _interopRequireWildcard(require(\"../util\"));\n\n/**\n * Rule for validating a regular expression pattern.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n if (!rule.pattern.test(value)) {\n errors.push(util.format(options.messages.pattern, rule.aliasName || rule.field, value, rule.pattern));\n }\n } else if (typeof rule.pattern === 'string') {\n var _pattern = new RegExp(rule.pattern);\n\n if (!_pattern.test(value)) {\n errors.push(util.format(options.messages.pattern, rule.aliasName || rule.field, value, rule.pattern));\n }\n }\n }\n}\n\nvar _default = pattern;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getIn = getIn;\nexports.setIn = setIn;\nexports.deleteIn = deleteIn;\nexports.getErrorStrs = getErrorStrs;\nexports.getParams = getParams;\nexports.getValueFromEvent = getValueFromEvent;\nexports.mapValidateRules = mapValidateRules;\nexports.warning = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _extends3 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nfunction getIn(state, name) {\n if (!state) {\n return state;\n }\n\n var path = typeof name === 'string' ? name.replace(/\\[/, '.').replace(/\\]/, '').split('.') : '';\n var length = path.length;\n\n if (!length) {\n return undefined;\n }\n\n var result = state;\n\n for (var i = 0; i < length && !!result; ++i) {\n result = result[path[i]];\n }\n\n return result;\n}\n\nvar setInWithPath = function setInWithPath(state, value, path, pathIndex) {\n if (pathIndex >= path.length) {\n return value;\n }\n\n var first = path[pathIndex];\n var next = setInWithPath(state && state[first], value, path, pathIndex + 1);\n\n if (!state) {\n var initialized = isNaN(first) ? {} : [];\n initialized[first] = next;\n return initialized;\n }\n\n if (Array.isArray(state)) {\n var copy = [].concat(state);\n copy[first] = next;\n return copy;\n }\n\n return (0, _extends3.default)({}, state, (0, _defineProperty2.default)({}, first, next));\n};\n\nfunction setIn(state, name, value) {\n return setInWithPath(state, value, typeof name === 'string' ? name.replace(/\\[/, '.').replace(/\\]/, '').split('.') : '', 0);\n}\n\nfunction deleteIn(state, name) {\n if (!state) {\n return;\n }\n\n var path = typeof name === 'string' ? name.replace(/\\[/, '.').replace(/\\]/, '').split('.') : '';\n var length = path.length;\n\n if (!length) {\n return state;\n }\n\n var result = state;\n\n for (var i = 0; i < length && !!result; ++i) {\n if (i === length - 1) {\n delete result[path[i]];\n } else {\n result = result[path[i]];\n }\n }\n\n return state;\n}\n\nfunction getErrorStrs(errors, processErrorMessage) {\n if (errors) {\n return errors.map(function (e) {\n var message = e.message || e;\n\n if (typeof processErrorMessage === 'function') {\n return processErrorMessage(message);\n }\n\n return message;\n });\n }\n\n return errors;\n}\n\nfunction getParams(ns, cb) {\n var names = typeof ns === 'string' ? [ns] : ns;\n var callback = cb;\n\n if (cb === undefined && typeof names === 'function') {\n callback = names;\n names = undefined;\n }\n\n return {\n names: names,\n callback: callback\n };\n}\n/**\n * 从组件事件中获取数据\n * @param e Event或者value\n * @returns value\n */\n\n\nfunction getValueFromEvent(e) {\n // support custom element\n if (!e || !e.target) {\n return e;\n }\n\n var target = e.target;\n\n if (target.type === 'checkbox') {\n return target.checked;\n } else if (target.type === 'radio') {\n //兼容原生radioGroup\n if (target.value) {\n return target.value;\n } else {\n return target.checked;\n }\n }\n\n return target.value;\n}\n\nfunction validateMap(rulesMap, rule, defaultTrigger) {\n var nrule = (0, _extends3.default)({}, rule);\n\n if (!nrule.trigger) {\n nrule.trigger = [defaultTrigger];\n }\n\n if (typeof nrule.trigger === 'string') {\n nrule.trigger = [nrule.trigger];\n }\n\n for (var i = 0; i < nrule.trigger.length; i++) {\n var trigger = nrule.trigger[i];\n\n if (trigger in rulesMap) {\n rulesMap[trigger].push(nrule);\n } else {\n rulesMap[trigger] = [nrule];\n }\n }\n\n delete nrule.trigger;\n}\n/**\n * 提取rule里面的trigger并且做映射\n * @param {Array} rules 规则\n * @param {String} defaultTrigger 默认触发\n * @return {Object} {onChange:rule1, onBlur: rule2}\n */\n\n\nfunction mapValidateRules(rules, defaultTrigger) {\n var rulesMap = {};\n rules.forEach(function (rule) {\n validateMap(rulesMap, rule, defaultTrigger);\n });\n return rulesMap;\n}\n\nvar warn = function warn() {};\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {\n warn = function warn() {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && console.error) {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n };\n}\n\nvar warning = warn;\nexports.warning = warning;","// shim for using process in browser\nvar process = module.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","'use strict';\n\nexports.__esModule = true;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _class, _temp;\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactLifecyclesCompat = require('react-lifecycles-compat');\n\nvar _getContextProps = require('./get-context-props');\n\nvar _getContextProps2 = _interopRequireDefault(_getContextProps);\n\nvar _config = require('./config');\n\nvar _consumer = require('./consumer');\n\nvar _consumer2 = _interopRequireDefault(_consumer);\n\nvar _errorBoundary = require('./error-boundary');\n\nvar _errorBoundary2 = _interopRequireDefault(_errorBoundary);\n\nvar _cache = require('./cache');\n\nvar _cache2 = _interopRequireDefault(_cache);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar childContextCache = new _cache2.default();\n\nvar setMomentLocale = function setMomentLocale(locale) {\n var moment = void 0;\n try {\n moment = require('moment');\n } catch (e) {\n // ignore\n }\n\n if (moment && locale) {\n moment.locale(locale.momentLocale);\n }\n};\n/**\n * ConfigProvider\n * @propsExtends false\n */\nvar ConfigProvider = (_temp = _class = function (_Component) {\n (0, _inherits3.default)(ConfigProvider, _Component);\n\n /**\n * 传入组件,生成受 ConfigProvider 控制的 HOC 组件\n * @param {Component} Component 组件类\n * @param {Object} options 可选项\n * @returns {Component} HOC\n */\n function ConfigProvider() {\n (0, _classCallCheck3.default)(this, ConfigProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call.apply(_Component, [this].concat(args)));\n\n childContextCache.add(_this, (0, _extends3.default)({}, childContextCache.get(_this, {}), _this.getChildContext()));\n\n setMomentLocale(_this.props.locale);\n\n _this.state = {\n locale: _this.props.locale\n };\n return _this;\n }\n\n /**\n * 传入组件的 props 和 displayName,得到和 childContext 计算过的包含有 preifx/locale/pure 的对象,一般用于通过静态方法生成脱离组件树的组件\n * @param {Object} props 组件的 props\n * @param {String} displayName 组件的 displayName\n * @returns {Object} 新的 context props\n */\n\n\n ConfigProvider.prototype.getChildContext = function getChildContext() {\n var _props = this.props,\n prefix = _props.prefix,\n locale = _props.locale,\n pure = _props.pure,\n warning = _props.warning,\n rtl = _props.rtl,\n device = _props.device,\n popupContainer = _props.popupContainer,\n errorBoundary = _props.errorBoundary;\n var _context = this.context,\n nextPrefix = _context.nextPrefix,\n nextLocale = _context.nextLocale,\n nextPure = _context.nextPure,\n nextRtl = _context.nextRtl,\n nextWarning = _context.nextWarning,\n nextDevice = _context.nextDevice,\n nextPopupContainer = _context.nextPopupContainer,\n nextErrorBoundary = _context.nextErrorBoundary;\n\n\n return {\n nextPrefix: prefix || nextPrefix,\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\n ConfigProvider.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.locale !== prevState.locale) {\n setMomentLocale(nextProps.locale);\n\n return {\n locale: nextProps.locale\n };\n }\n\n return null;\n };\n\n ConfigProvider.prototype.componentDidUpdate = function componentDidUpdate() {\n childContextCache.add(this, (0, _extends3.default)({}, childContextCache.get(this, {}), this.getChildContext()));\n };\n\n ConfigProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n childContextCache.remove(this);\n };\n\n ConfigProvider.prototype.render = function render() {\n return _react.Children.only(this.props.children);\n };\n\n return ConfigProvider;\n}(_react.Component), _class.propTypes = {\n /**\n * 样式类名的品牌前缀\n */\n prefix: _propTypes2.default.string,\n /**\n * 国际化文案对象,属性为组件的 displayName\n */\n locale: _propTypes2.default.object,\n /**\n * 是否开启错误捕捉 errorBoundary\n * 如需自定义参数,请传入对象 对象接受参数列表如下:\n *\n * fallbackUI `Function(error?: {}, errorInfo?: {}) => Element` 捕获错误后的展示\n * afterCatch `Function(error?: {}, errorInfo?: {})` 捕获错误后的行为, 比如埋点上传\n */\n errorBoundary: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object]),\n /**\n * 是否开启 Pure Render 模式,会提高性能,但是也会带来副作用\n */\n pure: _propTypes2.default.bool,\n /**\n * 是否在开发模式下显示组件属性被废弃的 warning 提示\n */\n warning: _propTypes2.default.bool,\n /**\n * 是否开启 rtl 模式\n */\n rtl: _propTypes2.default.bool,\n /**\n * 设备类型,针对不同的设备类型组件做出对应的响应式变化\n */\n device: _propTypes2.default.oneOf(['tablet', 'desktop', 'phone']),\n /**\n * 组件树\n */\n children: _propTypes2.default.any,\n /**\n * 指定浮层渲染的父节点, 可以为节点id的字符串,也可以返回节点的函数\n */\n popupContainer: _propTypes2.default.any\n}, _class.defaultProps = {\n warning: true,\n errorBoundary: false\n}, _class.contextTypes = {\n nextPrefix: _propTypes2.default.string,\n nextLocale: _propTypes2.default.object,\n nextPure: _propTypes2.default.bool,\n nextRtl: _propTypes2.default.bool,\n nextWarning: _propTypes2.default.bool,\n nextDevice: _propTypes2.default.oneOf(['tablet', 'desktop', 'phone']),\n nextPopupContainer: _propTypes2.default.any,\n nextErrorBoundary: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object])\n}, _class.childContextTypes = {\n nextPrefix: _propTypes2.default.string,\n nextLocale: _propTypes2.default.object,\n nextPure: _propTypes2.default.bool,\n nextRtl: _propTypes2.default.bool,\n nextWarning: _propTypes2.default.bool,\n nextDevice: _propTypes2.default.oneOf(['tablet', 'desktop', 'phone']),\n nextPopupContainer: _propTypes2.default.any,\n nextErrorBoundary: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object])\n}, _class.config = function (Component, options) {\n return (0, _config.config)(Component, options);\n}, _class.getContextProps = function (props, displayName) {\n return (0, _getContextProps2.default)(props, childContextCache.root() || {}, displayName);\n}, _class.initLocales = _config.initLocales, _class.setLanguage = _config.setLanguage, _class.setLocale = _config.setLocale, _class.setDirection = _config.setDirection, _class.getLanguage = _config.getLanguage, _class.getLocale = _config.getLocale, _class.getDirection = _config.getDirection, _class.Consumer = _consumer2.default, _class.ErrorBoundary = _errorBoundary2.default, _class.getContext = function () {\n var _ref = childContextCache.root() || {},\n nextPrefix = _ref.nextPrefix,\n nextLocale = _ref.nextLocale,\n nextPure = _ref.nextPure,\n nextRtl = _ref.nextRtl,\n nextWarning = _ref.nextWarning,\n nextDevice = _ref.nextDevice,\n nextPopupContainer = _ref.nextPopupContainer,\n nextErrorBoundary = _ref.nextErrorBoundary;\n\n return {\n prefix: nextPrefix,\n locale: nextLocale,\n pure: nextPure,\n rtl: nextRtl,\n warning: nextWarning,\n device: nextDevice,\n popupContainer: nextPopupContainer,\n errorBoundary: nextErrorBoundary\n };\n}, _temp);\nConfigProvider.displayName = 'ConfigProvider';\nexports.default = (0, _reactLifecyclesCompat.polyfill)(ConfigProvider);\nmodule.exports = exports['default'];","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","'use strict';\n\nexports.__esModule = true;\nexports.default = {\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 },\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 Select: {\n selectPlaceholder: '请选择',\n autoCompletePlaceholder: '请输入',\n notFoundContent: '无选项',\n maxTagPlaceholder: '已选择 {selected}/{total} 项',\n selectAll: '全选'\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 },\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};\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.on = on;\nexports.once = once;\n/**\n * 取消事件绑定\n * @param {*} node DOM节点或任何可以绑定事件的对象\n * @param {String} eventName 事件名\n * @param {Function} callback 回调方法\n * @param {Boolean} [useCapture=false] 是否开启事件捕获优先\n */\nfunction _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 * 绑定事件\n * @param {*} node DOM节点或任何可以绑定事件的对象\n * @param {String} eventName 事件名\n * @param {Function} callback 回调方法\n * @param {Boolean} useCapture 是否开启事件捕获优先\n * @return {Object} 返回的object中包含一个off方法,用于取消事件监听\n *\n * @example\n * const handler = events.on(document.body, 'click', e => {\n * // handle click ...\n * });\n * // 取消事件绑定\n * handler.off();\n */\nexports.off = _off;\nfunction on(node, eventName, callback, useCapture) {\n /* istanbul ignore else */\n if (node.addEventListener) {\n node.addEventListener(eventName, callback, useCapture || false);\n }\n\n return {\n off: function off() {\n return _off(node, eventName, callback, useCapture);\n }\n };\n}\n\n/**\n * 绑定事件,只执行一次后销毁\n * @param {*} node DOM节点或任何可以绑定事件的对象\n * @param {String} eventName 事件名\n * @param {Function} callback 回调方法\n * @param {Boolean} useCapture 是否开启事件捕获优先\n * @return {Function} 返回的object中包含一个off方法,用于取消事件监听\n */\nfunction once(node, eventName, callback, useCapture) {\n return on(node, eventName, function __fn() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n\n // 由于addEventListener中的参数options只在Chrome 55、Firefox(Gecko)以上版本支持,故还是用传统的方法实现once\n _off(node, eventName, __fn, useCapture);\n }, useCapture);\n}","'use strict';\n\nexports.__esModule = true;\nexports.prevent = exports.noop = undefined;\nexports.makeChain = makeChain;\nexports.bindCtx = bindCtx;\nexports.promiseCall = promiseCall;\n\nvar _object = require('./object');\n\n/**\n * 一个空方法,返回入参本身或空对象\n */\nvar noop = exports.noop = function noop() {};\n\n/**\n * 一个空方法,返回false\n */\nvar prevent = exports.prevent = function prevent() {\n return false;\n};\n\n/**\n * 将N个方法合并为一个链式调用的方法\n * @return {Function} 合并后的方法\n * 参考 https://github.com/react-component/util/\n *\n * @example\n * func.makeChain(this.handleChange, this.props.onChange);\n */\nfunction makeChain() {\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n for (var i = 0, j = fns.length; i < j; i++) {\n if (fns[i] && fns[i].apply) {\n fns[i].apply(this, args);\n }\n }\n };\n}\n\n/**\n * 批量改变方法的上下文\n * 此方法在react组件中很有用,在constructor中批量将组件上的方法执行上下文绑定到组件本身\n * 注意:用bind改变函数运行的上下文只会生效一次\n * @param {Object} ctx 方法挂载的对象以及执行的上下文\n * @param {Array<String>} fns 方法名列表\n *\n * @example\n * func.bindCtx(this, ['handleClick', 'handleChange']);\n */\nfunction bindCtx(ctx, fns, ns) {\n if (typeof fns === 'string') {\n fns = [fns];\n }\n\n // 方法的挂载空间,如果不传,默认与ctx相同\n ns = ns || ctx;\n\n fns.forEach(function (fnName) {\n // 这里不要添加空方法判断,由调用者保证正确性,否则出了问题无法排查\n ns[fnName] = ns[fnName].bind(ctx);\n });\n}\n\n/**\n * 用于执行回调方法后的逻辑\n * @param {*} ret 回调方法执行结果\n * @param {Function} success 执行结果返回非false的回调\n * @param {Function} [failure=noop] 执行结果返回false的回调\n */\nfunction promiseCall(ret, success) {\n var failure = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : noop;\n\n if ((0, _object.isPromise)(ret)) {\n return ret.then(function (result) {\n success(result);\n return result;\n }).catch(function (e) {\n failure(e);\n // throw e;\n });\n }\n\n return ret !== false ? success(ret) : failure(ret);\n}","'use strict';\n\nexports.__esModule = true;\nexports.flex = exports.transition = exports.animation = undefined;\n\nvar _dom = require('./dom');\n\nvar _object = require('./object');\n\nvar animationEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n OAnimation: 'oAnimationEnd',\n animation: 'animationend'\n};\n\nvar transitionEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n OTransition: 'oTransitionEnd',\n transition: 'transitionend'\n};\n\n/**\n * 是否支持某些动效事件,如果支持,返回相应的end事件名\n * @private\n * @param {Object<String>} names\n * @return {Object|false}\n */\nfunction _supportEnd(names) {\n /* istanbul ignore if */\n if (!_dom.hasDOM) {\n return false;\n }\n\n var el = document.createElement('div');\n var ret = false;\n\n (0, _object.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\n return ret;\n}\n\n/**\n * 是否支持某些CSS属性\n * @private\n * @param {Object<Array<String>>} names\n * @return {Boolean} is support\n */\nfunction _supportCSS(names) {\n /* istanbul ignore if */\n if (!_dom.hasDOM) {\n return false;\n }\n\n var el = document.createElement('div');\n var ret = false;\n\n (0, _object.each)(names, function (val, key) {\n (0, _object.each)(val, function (item) {\n try {\n el.style[key] = item;\n ret = ret || el.style[key] === item;\n } catch (e) {\n // It will be throw error when set unknown property under IE8\n }\n return !ret; // 如果有一个支持就返回false,后面不需要再判断\n });\n\n return !ret;\n });\n\n return ret;\n}\n\n/**\n * 是否支持animation以及动画结束事件名\n * @type {Object|false}\n * @property {String} end 动画结束事件名\n */\nvar animation = exports.animation = _supportEnd(animationEndEventNames);\n\n/**\n * 是否支持transition以及过滤效果结束事件名\n * @type {Object|false}\n * @property {String} end 过渡效果结束事件名\n */\nvar transition = exports.transition = _supportEnd(transitionEventNames);\n\n/**\n * 是否支持flex属性\n * @type {Boolean}\n */\nvar flex = exports.flex = _supportCSS({\n display: ['flex', '-webkit-flex', '-moz-flex', '-ms-flexbox']\n});","'use strict';\n\nexports.__esModule = true;\nexports.getFocusNodeList = getFocusNodeList;\nexports.saveLastFocusNode = saveLastFocusNode;\nexports.clearLastFocusNode = clearLastFocusNode;\nexports.backLastFocusNode = backLastFocusNode;\nexports.limitTabRange = limitTabRange;\n\nvar _keycode = require('./keycode');\n\nvar _keycode2 = _interopRequireDefault(_keycode);\n\nvar _object = require('./object');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 用于切换页面元素的焦点\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\n if (_isVisible(node)) {\n if (nodeName === 'input') {\n return !node.disabled && node.type !== 'hidden';\n } else if (['select', 'textarea', 'button'].indexOf(nodeName) > -1) {\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 */\nfunction getFocusNodeList(node) {\n var res = [];\n var nodeList = node.querySelectorAll('*');\n\n (0, _object.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\n if (_isFocusable(node)) {\n res.unshift(node);\n }\n\n return res;\n}\n\n// 用于记录上一次获得焦点的无素\nvar lastFocusElement = null;\n\n/**\n * 保存最近一次获得焦点的无素\n */\nfunction saveLastFocusNode() {\n lastFocusElement = document.activeElement;\n}\n\n/**\n * 清除焦点记录\n */\nfunction clearLastFocusNode() {\n lastFocusElement = null;\n}\n\n/**\n * 尝试将焦点切换到上一个元素\n */\nfunction backLastFocusNode() {\n if (lastFocusElement) {\n try {\n // 元素可能已经被移动了\n lastFocusElement.focus();\n } catch (e) {\n // ignore ...\n }\n }\n}\n\n/**\n * 在限制的范围内切换焦点\n * @param {Element} node 容器节点\n * @param {Event} e 键盘事件\n */\nfunction limitTabRange(node, e) {\n if (e.keyCode === _keycode2.default.TAB) {\n var tabNodeList = getFocusNodeList(node);\n var maxIndex = tabNodeList.length - 1;\n var index = tabNodeList.indexOf(document.activeElement);\n\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}","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (prefix) {\n prefix = prefix || '';\n\n return prefix + (timestamp++).toString(36);\n};\n\nvar timestamp = Date.now();\n\n/**\n * 生成全局唯一的id\n * @param {String} [prefix=''] 前缀字符串\n * @return {String}\n *\n * @example\n * guid(); // j7jv509c\n * guid('prefix-'); // prefix-j7jv509d\n */\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nexports.randomId = randomId;\nexports.escapeForId = escapeForId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Generate a string to be used for HTML id attributes\n *\n * @param {String} 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 {Number} max - range for the random number generator. Defaults to 1,000,000, but can be set higher if necessary.\n * @returns {String}\n */\nfunction randomId(prefix) {\n var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000000;\n\n var rand = Math.ceil(Math.random() * max);\n\n return prefix ? escapeForId(prefix) + '-' + rand : rand.toString(10);\n}\n\n/**\n * Replace characters not allowed for HTML id attributes\n *\n * @param {String} text\n * @returns {String}\n */\nfunction escapeForId(text) {\n if (!text) {\n return '';\n }\n\n if ((typeof text === 'undefined' ? 'undefined' : (0, _typeof3.default)(text)) === 'object') {\n text = JSON.stringify(text);\n } else if (typeof text !== 'string') {\n text = String(text);\n }\n\n return text.replace(/['\"]/gm, '').replace(/[\\s'\"]/gm, '-');\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.initLocales = initLocales;\nexports.setLanguage = setLanguage;\nexports.setLocale = setLocale;\nexports.setDirection = setDirection;\nexports.getLocale = getLocale;\nexports.getLanguage = getLanguage;\nexports.getDirection = getDirection;\nexports.config = config;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _hoistNonReactStatics = require('hoist-non-react-statics');\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _util = require('../util');\n\nvar _getContextProps = require('./get-context-props');\n\nvar _getContextProps2 = _interopRequireDefault(_getContextProps);\n\nvar _errorBoundary = require('./error-boundary');\n\nvar _errorBoundary2 = _interopRequireDefault(_errorBoundary);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar shallowEqual = _util.obj.shallowEqual;\n\n\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}\n\nvar globalLocales = void 0;\nvar currentGlobalLanguage = 'zh-cn';\nvar currentGlobalLocale = {};\nvar currentGlobalRtl = void 0;\n\nfunction initLocales(locales) {\n globalLocales = locales;\n\n if (locales) {\n currentGlobalLocale = locales[currentGlobalLanguage];\n\n if (typeof currentGlobalRtl !== 'boolean') {\n currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n }\n }\n}\n\nfunction setLanguage(language) {\n if (globalLocales) {\n currentGlobalLanguage = language;\n currentGlobalLocale = globalLocales[language];\n\n if (typeof currentGlobalRtl !== 'boolean') {\n currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n }\n }\n}\n\nfunction setLocale(locale) {\n currentGlobalLocale = (0, _extends3.default)({}, globalLocales ? globalLocales[currentGlobalLanguage] : {}, locale);\n\n if (typeof currentGlobalRtl !== 'boolean') {\n currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n }\n}\n\nfunction setDirection(dir) {\n currentGlobalRtl = dir === 'rtl';\n}\n\nfunction getLocale() {\n return currentGlobalLocale;\n}\n\nfunction getLanguage() {\n return currentGlobalLanguage;\n}\n\nfunction getDirection() {\n return currentGlobalRtl;\n}\n\nfunction config(Component) {\n var _class, _temp;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // 非 forwardRef 创建的 class component\n if (_util.obj.isClassComponent(Component) && 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\n return true;\n };\n }\n\n var ConfigedComponent = (_temp = _class = function (_React$Component) {\n (0, _inherits3.default)(ConfigedComponent, _React$Component);\n\n function ConfigedComponent(props, context) {\n (0, _classCallCheck3.default)(this, ConfigedComponent);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this, props, context));\n\n _this._getInstance = _this._getInstance.bind(_this);\n _this._deprecated = _this._deprecated.bind(_this);\n return _this;\n }\n\n ConfigedComponent.prototype._getInstance = function _getInstance(ref) {\n var _this2 = this;\n\n this._instance = ref;\n\n if (this._instance && options.exportNames) {\n options.exportNames.forEach(function (name) {\n var field = _this2._instance[name];\n if (typeof field === 'function') {\n _this2[name] = field.bind(_this2._instance);\n } else {\n _this2[name] = field;\n }\n });\n }\n };\n\n ConfigedComponent.prototype._deprecated = function _deprecated() {\n if (this.context.nextWarning !== false) {\n _util.log.deprecated.apply(_util.log, arguments);\n }\n };\n\n ConfigedComponent.prototype.getInstance = function getInstance() {\n return this._instance;\n };\n\n ConfigedComponent.prototype.render = function render() {\n var _props = this.props,\n prefix = _props.prefix,\n locale = _props.locale,\n pure = _props.pure,\n rtl = _props.rtl,\n device = _props.device,\n popupContainer = _props.popupContainer,\n errorBoundary = _props.errorBoundary,\n others = (0, _objectWithoutProperties3.default)(_props, ['prefix', 'locale', 'pure', 'rtl', 'device', 'popupContainer', 'errorBoundary']);\n var _context = this.context,\n nextPrefix = _context.nextPrefix,\n _context$nextLocale = _context.nextLocale,\n nextLocale = _context$nextLocale === undefined ? {} : _context$nextLocale,\n nextPure = _context.nextPure,\n nextRtl = _context.nextRtl,\n nextDevice = _context.nextDevice,\n nextPopupContainer = _context.nextPopupContainer,\n nextErrorBoundary = _context.nextErrorBoundary;\n\n\n var displayName = options.componentName || getDisplayName(Component);\n var contextProps = (0, _getContextProps2.default)({\n prefix: prefix,\n locale: locale,\n pure: pure,\n device: device,\n popupContainer: popupContainer,\n rtl: rtl,\n errorBoundary: errorBoundary\n }, {\n nextPrefix: nextPrefix,\n nextLocale: (0, _extends3.default)({}, currentGlobalLocale, nextLocale),\n nextPure: nextPure,\n nextDevice: nextDevice,\n nextPopupContainer: nextPopupContainer,\n nextRtl: typeof nextRtl === 'boolean' ? nextRtl : currentGlobalRtl === true ? true : undefined,\n nextErrorBoundary: nextErrorBoundary\n }, displayName);\n\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 ret[name] = contextProps[name];\n }\n return ret;\n }, {});\n\n if ('pure' in newContextProps && newContextProps.pure) {\n _util.log.warning('pure of ConfigProvider is deprecated, use Function Component or React.PureComponent');\n }\n\n var newOthers = options.transform ? options.transform(others, this._deprecated) : others;\n\n var content = _react2.default.createElement(Component, (0, _extends3.default)({}, newOthers, newContextProps, {\n ref: _util.obj.isClassComponent(Component) ? this._getInstance : null\n }));\n\n var _contextProps$errorBo = contextProps.errorBoundary,\n open = _contextProps$errorBo.open,\n othersBoundary = (0, _objectWithoutProperties3.default)(_contextProps$errorBo, ['open']);\n\n\n return open ? _react2.default.createElement(\n _errorBoundary2.default,\n othersBoundary,\n content\n ) : content;\n };\n\n return ConfigedComponent;\n }(_react2.default.Component), _class.propTypes = (0, _extends3.default)({}, Component.propTypes || {}, {\n prefix: _propTypes2.default.string,\n locale: _propTypes2.default.object,\n pure: _propTypes2.default.bool,\n rtl: _propTypes2.default.bool,\n device: _propTypes2.default.oneOf(['tablet', 'desktop', 'phone']),\n popupContainer: _propTypes2.default.any,\n errorBoundary: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object])\n }), _class.contextTypes = (0, _extends3.default)({}, Component.contextTypes || {}, {\n nextPrefix: _propTypes2.default.string,\n nextLocale: _propTypes2.default.object,\n nextPure: _propTypes2.default.bool,\n nextRtl: _propTypes2.default.bool,\n nextWarning: _propTypes2.default.bool,\n nextDevice: _propTypes2.default.oneOf(['tablet', 'desktop', 'phone']),\n nextPopupContainer: _propTypes2.default.any,\n nextErrorBoundary: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.object])\n }), _temp);\n ConfigedComponent.displayName = 'ConfigedComponent';\n\n\n ConfigedComponent.displayName = 'Config(' + getDisplayName(Component) + ')';\n\n (0, _hoistNonReactStatics2.default)(ConfigedComponent, Component);\n\n return ConfigedComponent;\n}","'use strict';\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 contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\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};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\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 for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\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 * @param {Object} obj\n * @param {Function} fn\n * @return {Object}\n */\nvar mapKeys = function mapKeys(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\n return result;\n};\n\n/**\n * Replace specific key with prefix `next`\n * and lowercase first character of the result.\n * @param {String} key\n * @return {String}\n */\nvar replaceKey = function replaceKey(key) {\n return key.replace(/^(next)([A-Z])/, function (match, p1, p2) {\n return p2.toLowerCase();\n });\n};\n\n/**\n * @param {Object} source\n * @return {Object}\n */\nvar transformContext = function transformContext(source) {\n return mapKeys(source, replaceKey);\n};\n\n/**\n * Consumer\n * @param {Object} prop\n * @param {Object} context\n */\nvar Consumer = function Consumer(_ref, context) {\n var children = _ref.children;\n return typeof children === 'function' ? children(transformContext(context)) : null;\n};\n\n/**\n * PropTypes\n * @type {Object}\n * @static\n */\nConsumer.propTypes = {\n // Render context as function\n // Function(context: object): ReactElement\n children: _propTypes2.default.func\n};\n\n/**\n * ContextTypes (legacy context)\n * @type {Object}\n * @static\n */\nConsumer.contextTypes = {\n nextPrefix: _propTypes2.default.string,\n nextLocale: _propTypes2.default.object,\n nextPure: _propTypes2.default.bool,\n newRtl: _propTypes2.default.bool,\n nextWarning: _propTypes2.default.bool,\n nextDevice: _propTypes2.default.oneOf(['tablet', 'desktop', 'phone']),\n nextPopupContainer: _propTypes2.default.any\n};\n\nexports.default = Consumer;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Cache = function () {\n function Cache() {\n (0, _classCallCheck3.default)(this, Cache);\n\n this._root = null;\n this._store = new Map();\n }\n\n Cache.prototype.empty = function empty() {\n return this._store.size === 0;\n };\n\n Cache.prototype.has = function has(key) {\n return this._store.has(key);\n };\n\n Cache.prototype.get = function get(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\n Cache.prototype.add = function add(key, value) {\n if (this.empty()) {\n this._root = key;\n }\n this._store.set(key, value);\n };\n\n Cache.prototype.update = function update(key, value) {\n if (this.has(key)) {\n this._store.set(key, value);\n }\n };\n\n Cache.prototype.remove = function remove(key) {\n this._store.delete(key);\n\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\n Cache.prototype.root = function root() {\n return this._store.get(this._root);\n };\n\n return Cache;\n}();\n\nexports.default = Cache;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _class, _temp;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Grid.Row\n * @order 1\n */\nvar Row = (_temp = _class = function (_Component) {\n (0, _inherits3.default)(Row, _Component);\n\n function Row() {\n (0, _classCallCheck3.default)(this, Row);\n return (0, _possibleConstructorReturn3.default)(this, _Component.apply(this, arguments));\n }\n\n Row.prototype.render = function render() {\n var _extends2, _extends3;\n\n /* eslint-disable no-unused-vars */\n var _props = this.props,\n prefix = _props.prefix,\n pure = _props.pure,\n wrap = _props.wrap,\n fixed = _props.fixed,\n gutter = _props.gutter,\n fixedWidth = _props.fixedWidth,\n align = _props.align,\n justify = _props.justify,\n hidden = _props.hidden,\n className = _props.className,\n Tag = _props.component,\n children = _props.children,\n rtl = _props.rtl,\n others = (0, _objectWithoutProperties3.default)(_props, ['prefix', 'pure', 'wrap', 'fixed', 'gutter', 'fixedWidth', 'align', 'justify', 'hidden', 'className', 'component', 'children', 'rtl']);\n /* eslint-enable no-unused-vars */\n\n var hiddenClassObj = void 0;\n if (hidden === true) {\n var _hiddenClassObj;\n\n hiddenClassObj = (_hiddenClassObj = {}, _hiddenClassObj[prefix + 'row-hidden'] = true, _hiddenClassObj);\n } else if (typeof hidden === 'string') {\n var _hiddenClassObj2;\n\n hiddenClassObj = (_hiddenClassObj2 = {}, _hiddenClassObj2[prefix + 'row-' + hidden + '-hidden'] = !!hidden, _hiddenClassObj2);\n } else if (Array.isArray(hidden)) {\n hiddenClassObj = hidden.reduce(function (ret, point) {\n ret[prefix + 'row-' + point + '-hidden'] = !!point;\n return ret;\n }, {});\n }\n\n var newClassName = (0, _classnames2.default)((0, _extends5.default)((_extends2 = {}, _extends2[prefix + 'row'] = true, _extends2[prefix + 'row-wrap'] = wrap, _extends2[prefix + 'row-fixed'] = fixed, _extends2[prefix + 'row-fixed-' + fixedWidth] = !!fixedWidth, _extends2[prefix + 'row-justify-' + justify] = !!justify, _extends2[prefix + 'row-align-' + align] = !!align, _extends2), hiddenClassObj, (_extends3 = {}, _extends3[className] = !!className, _extends3)));\n\n var newChildren = children;\n var gutterNumber = parseInt(gutter, 10);\n if (gutterNumber !== 0) {\n var halfGutterString = gutterNumber / 2 + 'px';\n others.style = (0, _extends5.default)({\n marginLeft: '-' + halfGutterString,\n marginRight: '-' + halfGutterString\n }, others.style || {});\n newChildren = _react.Children.map(children, function (child) {\n if (child && child.type && typeof child.type === 'function' && child.type.isNextCol) {\n var newChild = (0, _react.cloneElement)(child, {\n style: (0, _extends5.default)({\n paddingLeft: halfGutterString,\n paddingRight: halfGutterString\n }, child.style || {})\n });\n return newChild;\n }\n\n return child;\n });\n }\n\n return _react2.default.createElement(\n Tag,\n (0, _extends5.default)({\n dir: rtl ? 'rtl' : 'ltr',\n role: 'row',\n className: newClassName\n }, others),\n newChildren\n );\n };\n\n return Row;\n}(_react.Component), _class.propTypes = {\n prefix: _propTypes2.default.string,\n pure: _propTypes2.default.bool,\n rtl: _propTypes2.default.bool,\n className: _propTypes2.default.string,\n style: _propTypes2.default.object,\n /**\n * 行内容\n */\n children: _propTypes2.default.node,\n /**\n * 列间隔\n */\n gutter: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n /**\n * 列在行中宽度溢出后是否换行\n */\n wrap: _propTypes2.default.bool,\n /**\n * 行在某一断点下宽度是否保持不变(默认行宽度随视口变化而变化)\n */\n fixed: _propTypes2.default.bool,\n /**\n * 固定行的宽度为某一断点的宽度,不受视口影响而变动\n * @enumdesc 320px, 480px, 720px, 990px, 1200px, 1500px\n */\n fixedWidth: _propTypes2.default.oneOf(['xxs', 'xs', 's', 'm', 'l', 'xl']),\n /**\n * (不支持IE9浏览器)多列垂直方向对齐方式\n * @enumdesc 顶部对齐, 居中对齐, 底部对齐, 按第一行文字基线对齐, 未设置高度或设为 auto,将占满整个容器的高度\n */\n align: _propTypes2.default.oneOf(['top', 'center', 'bottom', 'baseline', 'stretch']),\n /**\n * (不支持IE9浏览器)行内具有多余空间时的布局方式\n * @enumdesc 左对齐, 居中对齐, 右对齐, 两端对齐,列之间间距相等, 每列具有相同的左右间距,行两端间距是列间距的二分之一\n */\n justify: _propTypes2.default.oneOf(['start', 'center', 'end', 'space-between', 'space-around']),\n /**\n * 行在不同断点下的显示与隐藏<br><br>**可选值**:<br>true(在所有断点下隐藏)<br>false(在所有断点下显示)<br>'xs'(在 xs 断点下隐藏)<br>['xxs', 'xs', 's', 'm', 'l', 'xl'](在 xxs, xs, s, m, l, xl 断点下隐藏)\n */\n hidden: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string, _propTypes2.default.array]),\n /**\n * 指定以何种元素渲染该节点\n * - 默认为 'div'\n */\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n}, _class.defaultProps = {\n prefix: 'next-',\n pure: false,\n fixed: false,\n gutter: 0,\n wrap: false,\n component: 'div'\n}, _temp);\nRow.displayName = 'Row';\nexports.default = Row;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _class, _temp;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar breakPoints = ['xxs', 'xs', 's', 'm', 'l', 'xl'];\n\n/**\n * Grid.Col\n * @order 2\n */\nvar Col = (_temp = _class = function (_Component) {\n (0, _inherits3.default)(Col, _Component);\n\n function Col() {\n (0, _classCallCheck3.default)(this, Col);\n return (0, _possibleConstructorReturn3.default)(this, _Component.apply(this, arguments));\n }\n\n Col.prototype.render = function render() {\n var _this2 = this,\n _extends2,\n _extends3;\n\n /* eslint-disable no-unused-vars */\n var _props = this.props,\n prefix = _props.prefix,\n pure = _props.pure,\n span = _props.span,\n offset = _props.offset,\n fixedSpan = _props.fixedSpan,\n fixedOffset = _props.fixedOffset,\n hidden = _props.hidden,\n align = _props.align,\n xxs = _props.xxs,\n xs = _props.xs,\n s = _props.s,\n m = _props.m,\n l = _props.l,\n xl = _props.xl,\n Tag = _props.component,\n className = _props.className,\n children = _props.children,\n rtl = _props.rtl,\n others = (0, _objectWithoutProperties3.default)(_props, ['prefix', 'pure', 'span', 'offset', 'fixedSpan', 'fixedOffset', 'hidden', 'align', 'xxs', 'xs', 's', 'm', 'l', 'xl', 'component', 'className', 'children', 'rtl']);\n /* eslint-enable no-unused-vars */\n\n var pointClassObj = breakPoints.reduce(function (ret, point) {\n var pointProps = {};\n if ((0, _typeof3.default)(_this2.props[point]) === 'object') {\n pointProps = _this2.props[point];\n } else {\n pointProps.span = _this2.props[point];\n }\n\n ret[prefix + 'col-' + point + '-' + pointProps.span] = !!pointProps.span;\n ret[prefix + 'col-' + point + '-offset-' + pointProps.offset] = !!pointProps.offset;\n\n return ret;\n }, {});\n\n var hiddenClassObj = void 0;\n if (hidden === true) {\n var _hiddenClassObj;\n\n hiddenClassObj = (_hiddenClassObj = {}, _hiddenClassObj[prefix + 'col-hidden'] = true, _hiddenClassObj);\n } else if (typeof hidden === 'string') {\n var _hiddenClassObj2;\n\n hiddenClassObj = (_hiddenClassObj2 = {}, _hiddenClassObj2[prefix + 'col-' + hidden + '-hidden'] = !!hidden, _hiddenClassObj2);\n } else if (Array.isArray(hidden)) {\n hiddenClassObj = hidden.reduce(function (ret, point) {\n ret[prefix + 'col-' + point + '-hidden'] = !!point;\n return ret;\n }, {});\n }\n\n var classes = (0, _classnames2.default)((0, _extends5.default)((_extends2 = {}, _extends2[prefix + 'col'] = true, _extends2[prefix + 'col-' + span] = !!span, _extends2[prefix + 'col-fixed-' + fixedSpan] = !!fixedSpan, _extends2[prefix + 'col-offset-' + offset] = !!offset, _extends2[prefix + 'col-offset-fixed-' + fixedOffset] = !!fixedOffset, _extends2[prefix + 'col-' + align] = !!align, _extends2), pointClassObj, hiddenClassObj, (_extends3 = {}, _extends3[className] = className, _extends3)));\n\n return _react2.default.createElement(\n Tag,\n (0, _extends5.default)({\n dir: rtl ? 'rtl' : 'ltr',\n role: 'gridcell',\n className: classes\n }, others),\n children\n );\n };\n\n return Col;\n}(_react.Component), _class.isNextCol = true, _class.propTypes = {\n prefix: _propTypes2.default.string,\n pure: _propTypes2.default.bool,\n rtl: _propTypes2.default.bool,\n className: _propTypes2.default.string,\n /**\n * 列内容\n */\n children: _propTypes2.default.node,\n /**\n * 列宽度<br><br>**可选值**:<br>1, 2, 3, ..., 22, 23, 24\n */\n span: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n /**\n * 固定列宽度,宽度值为20 * 栅格数<br><br>**可选值**:<br>1, 2, 3, ..., 28, 29, 30\n */\n fixedSpan: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n /**\n * (不支持IE9浏览器)列偏移<br><br>**可选值**:<br>1, 2, 3, ..., 22, 23, 24\n */\n offset: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n /**\n * (不支持IE9浏览器)固定列偏移,宽度值为20 * 栅格数<br><br>**可选值**:<br>1, 2, 3, ..., 28, 29, 30\n */\n fixedOffset: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n /**\n * (不支持IE9浏览器)多列垂直方向对齐方式,可覆盖Row的align属性\n */\n align: _propTypes2.default.oneOf(['top', 'center', 'bottom', 'baseline', 'stretch']),\n /**\n * 列在不同断点下的显示与隐藏<br><br>**可选值**:<br>true(在所有断点下隐藏)<br>false(在所有断点下显示)<br>'xs'(在 xs 断点下隐藏)<br>['xxs', 'xs', 's', 'm', 'l', 'xl'](在 xxs, xs, s, m, l, xl 断点下隐藏)\n */\n hidden: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string, _propTypes2.default.array]),\n /**\n * >=320px,响应式栅格,可为栅格数(span)或一个包含栅格数(span)和偏移栅格数(offset)对象\n */\n xxs: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.object]),\n /**\n * >=480px,响应式栅格,可为栅格数(span)或一个包含栅格数(span)和偏移栅格数(offset)对象\n */\n xs: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.object]),\n /**\n * >=720px,响应式栅格,可为栅格数(span)或一个包含栅格数(span)和偏移栅格数(offset)对象\n */\n s: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.object]),\n /**\n * >=990px,响应式栅格,可为栅格数(span)或一个包含栅格数(span)和偏移栅格数(offset)对象\n */\n m: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.object]),\n /**\n * >=1200px,响应式栅格,可为栅格数(span)或一个包含栅格数(span)和偏移栅格数(offset)对象\n */\n l: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.object]),\n /**\n * >=1500px,响应式栅格,可为栅格数(span)或一个包含栅格数(span)和偏移栅格数(offset)对象\n */\n xl: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.object]),\n /**\n * 指定以何种元素渲染该节点,默认为 'div'\n */\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n}, _class.defaultProps = {\n prefix: 'next-',\n pure: false,\n component: 'div'\n}, _temp);\nCol.displayName = 'Col';\nexports.default = Col;\nmodule.exports = exports['default'];","var hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction transformEntryEqual(a, b) {\n for (var k in a) {\n if (hasOwnProperty.call(a, k)) {\n return a[k] === b[k];\n }\n }\n return false;\n}\n\nfunction transformEqual(a, b) {\n if ((!a && !b) || (a === b)) {\n return true;\n }\n if (!a !== !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!transformEntryEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowObjectEquals(a, b) {\n var k;\n var i = 0;\n var j = 0;\n for (k in a) {\n if (hasOwnProperty.call(a, k)) {\n switch (k) {\n case 'transform':\n if (!transformEqual(a[k], b[k])) {\n return false;\n }\n break;\n case 'shadowOffset':\n if (!shallowObjectEquals(a[k], b[k])) {\n return false;\n }\n break;\n default:\n if (a[k] !== b[k]) {\n return false;\n }\n break;\n }\n i++;\n }\n }\n for (k in b) {\n if (hasOwnProperty.call(b, k)) {\n j++;\n }\n }\n return i === j;\n}\n\nfunction styleEqual(a, b) {\n if ((!a && !b) || (a === b)) {\n return true;\n }\n if (!a !== !b) {\n return false;\n }\n switch (typeof a) {\n case 'object':\n if (a instanceof Array) {\n for (var i = 0; i < a.length; i++) {\n if (!styleEqual(a[i], b[i])) {\n return false;\n }\n }\n return a.length === b.length;\n } else {\n return shallowObjectEquals(a, b);\n }\n break;\n case 'number':\n default:\n return a === b;\n }\n}\n\nmodule.exports = styleEqual;\n","/**\n * IE浏览器的渲染引擎版本号\n * 注意:此属性与浏览器版本号不同,IE的渲染引擎版本号是可以通过HTML header或手动设置去更改的\n * @type {Number} 6 ~ 10\n */\nexport const ieVersion = typeof document !== 'undefined' ? document.documentMode : undefined;\n\n/**\n * 判断是否是生产环境\n * @type {Boolean}\n */\nexport const isProduction = () => {\n const PRODUCTION_ENV = 'production';\n let result = false;\n try {\n if (process.env.NODE_ENV === PRODUCTION_ENV) {\n result = true;\n }\n } catch (err) {\n //\n }\n\n if (!result) {\n try {\n if (window.process.env.NODE_ENV === PRODUCTION_ENV) {\n result = true;\n }\n } catch (err) {\n //\n }\n }\n\n return result;\n};\n\nexport default {\n ieVersion,\n isProduction,\n};\n","import { isProduction } from './env';\n\n/* eslint no-console: 0 */\n\n/**\n * 反对使用某一方法或属性的警告\n * @param {String} props 过时的属性或方法名\n * @param {String} instead 替代的属性或方法名\n * @param {String} 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(\n `Warning: [ ${props} ] is deprecated at [ ${component} ], ` +\n `use [ ${instead} ] instead of it.`,\n );\n }\n}\n\n/**\n * 控制台警告日志\n * @param {String} msg\n * @return {Console<Error> | void}\n */\nexport function warning(msg) {\n /* istanbul ignore else */\n if (!isProduction() && typeof console !== 'undefined' && console.error) {\n return console.error(`Warning: ${msg}`);\n }\n}\n","/**\n * 获取对象的类型\n * @param {*} obj\n * @return {String}\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 * 判断是否是数组或类数组对象\n * @param {*} obj\n * @return {Boolean}\n *\n * @example\n * isArrayLike([]) === true\n * isArrayLike(arguments) === true\n * isArrayLike(this.props.children) === true\n */\nexport function isArrayLike(obj) {\n const length = !!obj && 'length' in obj && obj.length;\n const type = typeOf(obj);\n\n return (\n type === 'Array' ||\n length === 0 ||\n (typeof length === 'number' && length > 0 && length - 1 in obj)\n );\n}\n\n/**\n * 判断对象是否是一个promise,即是否可以用.then\n * @param {*} obj\n * @return {Boolean}\n */\nexport function isPromise(obj) {\n return (\n !!obj &&\n (typeof obj === 'object' || typeof obj === 'function') &&\n typeof obj.then === 'function'\n );\n}\n\n/**\n * 是否是一个纯净的对象\n * @param {*} obj\n * @return {Boolean}\n * @reference https://github.com/jonschlinkert/is-plain-object\n */\nexport function isPlainObject(obj) {\n if (typeOf(obj) !== 'Object') {\n return false;\n }\n\n const ctor = obj.constructor;\n\n if (typeof ctor !== 'function') {\n return false;\n }\n\n const prot = ctor.prototype;\n\n if (typeOf(prot) !== 'Object') {\n return false;\n }\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n }\n\n return true;\n}\n\n/**\n * 对象浅比较\n * @param {Object} objA\n * @param {Object} objB\n * @param {Function} [compare] 手动调用方法比较\n * @return {Boolean} 对象浅比较是否相等\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\n // 其中一个不是object,则不相等\n if (!objA || !objB || typeof objA + typeof objB !== 'objectobject') {\n return false;\n }\n\n const keyA = Object.keys(objA);\n const keyB = Object.keys(objB);\n const len = keyA.length;\n\n // key 数量不一致则不相等\n if (len !== keyB.length) {\n return false;\n }\n\n const hasCallback = typeof compare === 'function';\n\n for (let i = 0; i < len; i++) {\n const key = keyA[i];\n\n if (!Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n\n const valA = objA[key];\n const valB = objB[key];\n\n const ret = hasCallback ? compare(valA, valB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valA !== valB)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * 遍历对象或数组,或者类数组,例如React中的children对象、arguments等\n * @param {Object|Array} obj\n * @param {Function} callback fn(n, i) or fn(val, key)\n * @param {Number} [direction = 1] 是否倒序遍历,只对数组有效\n * @return {Object|Array}\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 const reversed = direction === -1;\n const length = obj.length;\n let value,\n i = reversed ? length - 1 : 0;\n\n if (isArrayLike(obj)) {\n for (; i < length && i >= 0; reversed ? i-- : i++) {\n value = callback.call(obj[i], obj[i], i);\n\n if (value === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(i)) {\n value = callback.call(obj[i], obj[i], i);\n\n if (value === false) {\n break;\n }\n }\n }\n }\n\n return obj;\n}\n\n// @private 判断key是否在数组或对象中\nconst _isInObj = (key, obj, isArray) => (isArray ? obj.indexOf(key) > -1 : key in obj);\n\n/**\n * 过滤出其它属性\n * @param {Object|Array} holdProps 过滤的参照对象,最终的结果只保留不在参照对象中的key\n * @param {Object} props 被过滤的对象\n * @return {Object} others\n *\n * @example\n * object.pickOthers(FooComponent.propTypes, this.props);\n * object.pickOthers(['className', 'onChange'], this.props);\n */\nexport function pickOthers(holdProps, props) {\n const others = {};\n const isArray = typeOf(holdProps) === 'Array';\n\n for (const key in props) {\n if (!_isInObj(key, holdProps, isArray)) {\n others[key] = props[key];\n }\n }\n\n return others;\n}\n\n/**\n * 过滤出带prefix的属性\n * @param {Object} holdProps 过滤的参照对象,最终的结果只保留不在参照对象中的key\n * @param {string} prefix 包含的字符串\n * @return {Object} others\n *\n * @example\n * object.pickAttrsWith(FooComponent.propTypes, 'data-');\n */\nexport function pickAttrsWith(holdProps, prefix) {\n const others = {};\n\n for (const key in holdProps) {\n if (key.match(prefix)) {\n others[key] = holdProps[key];\n }\n }\n\n return others;\n}\n\n/**\n * Checks if value is `null` or `undefined`.\n * @param {*} value\n * @return {Boolean}\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/**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n * @reference https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge?page=1&tab=votes#tab-top\n */\nexport function deepMerge(target, ...sources) {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (!isPlainObject(target)) {\n target = {};\n }\n\n if (isPlainObject(target) && isPlainObject(source)) {\n for (const key in source) {\n if (isPlainObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\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 } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return deepMerge(target, ...sources);\n}\n\n\nconst attributes = `accept acceptCharset accessKey action allowFullScreen allowTransparency\nalt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\ncharSet checked classID className colSpan cols content contentEditable contextMenu\ncontrols coords crossOrigin data dateTime default defer dir disabled download draggable\nencType form formAction formEncType formMethod formNoValidate formTarget frameBorder\nheaders height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\nis keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\nmediaGroup method min minLength multiple muted name noValidate nonce open\noptimum pattern placeholder poster preload radioGroup readOnly rel required\nreversed role rowSpan rows sandbox scope scoped scrolling seamless selected\nshape size sizes span spellCheck src srcDoc srcLang srcSet start step style\nsummary tabIndex target title type useMap value width wmode wrap`.replace(/\\s+/g, ' ').replace(/\\t|\\n|\\r/g, '').split(' ');\n\nconst eventsName = `onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError`\n .replace(/\\s+/g, ' ').replace(/\\t|\\n|\\r/g, '').split(' ');\n\nconst attrsPrefix = ['data-', 'aria-'];\n\nexport function pickAttrs(props) {\n const attrs = {};\n for (const key in props) {\n if (attributes.indexOf(key) > -1 || eventsName.indexOf(key) > -1) {\n attrs[key] = props[key];\n } else if (attrsPrefix.map(prefix => new RegExp(`^${prefix}`)).some(reg => key.replace(reg, '') != key)) {\n attrs[key] = props[key];\n }\n }\n return attrs;\n}\n","import { warning } from './log';\nimport { typeOf } from './object';\n\n/**\n * 将字符串转化为驼峰式写法\n * @param {String} str 例:-webkit-transition\n * @return {String} 例:WebkitTransition\n */\nexport function camelcase(str) {\n if (!/-/.test(str)) {\n return str || '';\n }\n return str.toLowerCase().replace(/-([a-z])/g, ($0, $1) => $1.toUpperCase());\n}\n\n/**\n * 将驼峰式字符串转化为连字符写法\n * @param {String} str 例:WebkitTransition\n * @return {String} 例:-webkit-transition\n */\nexport function hyphenate(str) {\n const strType = typeOf(str);\n if (strType !== 'String') {\n warning(\n '[ hyphenate(str: string): string ] ' +\n `Expected arguments[0] to be a string but get a ${strType}.` +\n 'It will return an empty string without any processing.',\n );\n return '';\n }\n return str.replace(/([A-Z])/g, $0 => `-${$0.toLowerCase()}`);\n}\n\n/**\n * 替换模板字符串\n * @param {String} tpl 例:当前{current}, 共{total}页\n * @param {Object} object 例:{current: 1, total: 9}\n * @return {String} 例:\n */\nexport function template(tpl, object = {}) {\n const tplType = typeOf(tpl);\n if (tplType !== 'String') {\n warning(\n '[ template(tpl: string, object: object): string ] ' +\n `Expected arguments[0] to be a string but get a ${tplType}.` +\n 'It will return an empty string without any processing.',\n );\n return '';\n }\n\n return tpl.replace(/\\{[a-z]*\\}/g, str => {\n const key = str.substring(1, str.length - 1);\n return object[key] || '';\n });\n}\n","import { camelcase, hyphenate } from './string';\nimport { each } from './object';\n\n/**\n * 是否能使用 DOM 方法\n * @type {Boolean}\n */\nexport const hasDOM =\n typeof window !== 'undefined' && !!window.document && !!document.createElement;\n\n/**\n * 节点是否包含指定 className\n * @param {Element} node\n * @param {String} className\n * @return {Boolean}\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\n if (node.classList) {\n return node.classList.contains(className);\n } else {\n return node.className.indexOf(className) > -1;\n }\n}\n\n/**\n * 添加 className\n * @param {Element} node\n * @param {String} className\n *\n * @example\n * dom.addClass(document.body, 'foo');\n */\nexport function addClass(node, className, _force) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return;\n }\n\n if (node.classList) {\n node.classList.add(className);\n } else if (_force === true || !hasClass(node, className)) {\n node.className += ` ${className}`;\n }\n}\n\n/**\n * 移除 className\n * @param {Element} node\n * @param {String} className\n *\n * @example\n * dom.removeClass(document.body, 'foo');\n */\nexport function removeClass(node, className, _force) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return;\n }\n\n if (node.classList) {\n node.classList.remove(className);\n } else if (_force === true || hasClass(node, className)) {\n node.className = node.className\n .replace(className, '')\n .replace(/\\s+/g, ' ')\n .trim();\n }\n}\n\n/**\n * 切换 className\n * @param {Element} node\n * @param {String} className\n * @return {Boolean} 执行后节点上是否还有此 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\n if (node.classList) {\n return node.classList.toggle(className);\n } else {\n const flag = hasClass(node, className);\n flag ? removeClass(node, className, true) : addClass(node, className, true);\n\n return !flag;\n }\n}\n\n/**\n * 元素是否匹配 CSS 选择器\n * @param {Element} node DOM 节点\n * @param {String} selector CSS 选择器\n * @return {Boolean}\n *\n * @example\n * dom.matches(mountNode, '.container'); // boolean\n */\nexport const matches = (function() {\n let matchesFn = null;\n /* istanbul ignore else */\n if (hasDOM) {\n const _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\n return function(node, selector) {\n if (!hasDOM || !node) {\n return false;\n }\n\n return matchesFn ? node[matchesFn](selector) : false;\n };\n})();\n\n/**\n * 获取元素计算后的样式\n * @private\n * @param {Element} node\n * @return {Object}\n */\nfunction _getComputedStyle(node) {\n return node && node.nodeType === 1 ? window.getComputedStyle(node, null) : {};\n}\n\nconst PIXEL_PATTERN = /margin|padding|width|height|max|min|offset|size/i;\nconst removePixel = { left: 1, top: 1, right: 1, bottom: 1 };\n\n/**\n * 校验并修正元素的样式属性值\n * @private\n * @param {Element} node\n * @param {String} type\n * @param {Number} value\n */\nfunction _getStyleValue(node, type, value) {\n type = type.toLowerCase();\n\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\n if (!(type in removePixel)) {\n // 属性值是否需要去掉 px 单位,这里假定此类的属性值都是 px 为单位的\n removePixel[type] = PIXEL_PATTERN.test(type);\n }\n\n return removePixel[type] ? parseFloat(value) || 0 : value;\n}\n\nconst floatMap = { cssFloat: 1, styleFloat: 1, float: 1 };\n\n/**\n * 获取元素计算后的样式\n * @param {Element} node DOM 节点\n * @param {String} name 属性名\n * @return {Number|Object}\n */\nexport function getStyle(node, name) {\n /* istanbul ignore if */\n if (!hasDOM || !node) {\n return null;\n }\n\n const style = _getComputedStyle(node);\n\n // 如果不指定属性名,则返回全部值\n if (arguments.length === 1) {\n return style;\n }\n\n name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name;\n\n return _getStyleValue(\n node,\n name,\n style.getPropertyValue(hyphenate(name)) || node.style[camelcase(name)],\n );\n}\n\n/**\n * 设置元素的样式\n * @param {Element} node DOM 节点\n * @param {Object|String} name 属性名,或者是一个对象,包含多个属性\n * @param {Number|String} 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 // 批量设置多个值\n if (typeof name === 'object' && arguments.length === 2) {\n each(name, (val, key) => setStyle(node, key, val));\n } else {\n name = floatMap[name] ? ('cssFloat' in node.style ? 'cssFloat' : 'styleFloat') : name;\n if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n value = `${value}px`;\n }\n node.style[camelcase(name)] = value; // IE8 support\n }\n}\n\n/**\n * 获取默认的滚动条大小\n * @return {Object} width, height\n */\nexport function scrollbar() {\n const scrollDiv = document.createElement('div');\n\n setStyle(scrollDiv, {\n position: 'absolute',\n width: '100px',\n height: '100px',\n overflow: 'scroll',\n top: '-9999px',\n });\n document.body.appendChild(scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n const scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n return {\n width: scrollbarWidth,\n height: scrollbarHeight,\n };\n}\n\n/**\n * 获取元素距离视口顶部和左边的偏移距离\n * @return {Object} top, left\n */\nexport function getOffset(node) {\n const rect = node.getBoundingClientRect();\n const win = node.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset,\n };\n}\n\n/**\n * 强制访问元素的布局属性以触发重排,通常用于保证动画的执行\n * @param {Element} el\n * @return {void}\n */\nexport function forceReflow(el) {\n if (el) {\n el.offsetHeight\n }\n}\n","/**\n * 取消事件绑定\n * @param {*} node DOM节点或任何可以绑定事件的对象\n * @param {String} eventName 事件名\n * @param {Function} callback 回调方法\n * @param {Boolean} [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 * 绑定事件\n * @param {*} node DOM节点或任何可以绑定事件的对象\n * @param {String} eventName 事件名\n * @param {Function} callback 回调方法\n * @param {Boolean} useCapture 是否开启事件捕获优先\n * @return {Object} 返回的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\n return {\n off: () => off(node, eventName, callback, useCapture),\n };\n}\n\n/**\n * 绑定事件,只执行一次后销毁\n * @param {*} node DOM节点或任何可以绑定事件的对象\n * @param {String} eventName 事件名\n * @param {Function} callback 回调方法\n * @param {Boolean} useCapture 是否开启事件捕获优先\n * @return {Function} 返回的object中包含一个off方法,用于取消事件监听\n */\nexport function once(node, eventName, callback, useCapture) {\n return on(\n node,\n eventName,\n function __fn(...args) {\n callback.apply(this, args);\n\n // 由于addEventListener中的参数options只在Chrome 55、Firefox(Gecko)以上版本支持,故还是用传统的方法实现once\n off(node, eventName, __fn, useCapture);\n },\n useCapture,\n );\n}\n","import { isPromise } from './object';\n\n/**\n * 一个空方法,返回入参本身或空对象\n */\nexport const noop = () => {};\n\n/**\n * 一个空方法,返回false\n */\nexport const prevent = () => false;\n\n/**\n * 将N个方法合并为一个链式调用的方法\n * @return {Function} 合并后的方法\n * 参考 https://github.com/react-component/util/\n *\n * @example\n * func.makeChain(this.handleChange, this.props.onChange);\n */\nexport function makeChain(...fns) {\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function chainedFunction(...args) {\n for (let i = 0, j = fns.length; i < j; i++) {\n if (fns[i] && fns[i].apply) {\n fns[i].apply(this, args);\n }\n }\n };\n}\n\n/**\n * 批量改变方法的上下文\n * 此方法在react组件中很有用,在constructor中批量将组件上的方法执行上下文绑定到组件本身\n * 注意:用bind改变函数运行的上下文只会生效一次\n * @param {Object} ctx 方法挂载的对象以及执行的上下文\n * @param {Array<String>} 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\n // 方法的挂载空间,如果不传,默认与ctx相同\n ns = ns || ctx;\n\n fns.forEach(fnName => {\n // 这里不要添加空方法判断,由调用者保证正确性,否则出了问题无法排查\n ns[fnName] = ns[fnName].bind(ctx);\n });\n}\n\n/**\n * 用于执行回调方法后的逻辑\n * @param {*} ret 回调方法执行结果\n * @param {Function} success 执行结果返回非false的回调\n * @param {Function} [failure=noop] 执行结果返回false的回调\n */\nexport function promiseCall(ret, success, failure = noop) {\n if (isPromise(ret)) {\n return ret\n .then(result => {\n success(result);\n return result;\n })\n .catch(e => {\n failure(e);\n // throw e;\n });\n }\n\n return ret !== false ? success(ret) : failure(ret);\n}\n\n/**\n * 用于判断对象是否是函数\n * @param {Object} target\n * @return {Boolean} true, false\n */\nexport function isFunction(target) {\n return typeof target === 'function';\n}\n","import { hasDOM } from './dom';\nimport { each } from './object';\n\nconst animationEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n OAnimation: 'oAnimationEnd',\n animation: 'animationend',\n};\n\nconst transitionEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n OTransition: 'oTransitionEnd',\n transition: 'transitionend',\n};\n\n/**\n * 是否支持某些动效事件,如果支持,返回相应的end事件名\n * @private\n * @param {Object<String>} names\n * @return {Object|false}\n */\nfunction _supportEnd(names) {\n /* istanbul ignore if */\n if (!hasDOM) {\n return false;\n }\n\n const el = document.createElement('div');\n let ret = false;\n\n each(names, (val, key) => {\n /* istanbul ignore else */\n if (el.style[key] !== undefined) {\n ret = { end: val };\n return false;\n }\n });\n\n return ret;\n}\n\n/**\n * 是否支持某些CSS属性\n * @private\n * @param {Object<Array<String>>} names\n * @return {Boolean} is support\n */\nfunction _supportCSS(names) {\n /* istanbul ignore if */\n if (!hasDOM) {\n return false;\n }\n\n const el = document.createElement('div');\n let ret = false;\n\n each(names, (val, key) => {\n each(val, item => {\n try {\n el.style[key] = item;\n ret = ret || el.style[key] === item;\n } catch (e) {\n // It will be throw error when set unknown property under IE8\n }\n return !ret; // 如果有一个支持就返回false,后面不需要再判断\n });\n\n return !ret;\n });\n\n return ret;\n}\n\n/**\n * 是否支持animation以及动画结束事件名\n * @type {Object|false}\n * @property {String} end 动画结束事件名\n */\nexport const animation = _supportEnd(animationEndEventNames);\n\n/**\n * 是否支持transition以及过滤效果结束事件名\n * @type {Object|false}\n * @property {String} end 过渡效果结束事件名\n */\nexport const transition = _supportEnd(transitionEventNames);\n\n/**\n * 是否支持flex属性\n * @type {Boolean}\n */\nexport const 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\n // version 0.x\n ESCAPE: 27,\n LEFT_ARROW: 37,\n UP_ARROW: 38,\n RIGHT_ARROW: 39,\n DOWN_ARROW: 40,\n\n // MacOS\n CONTROL: 17,\n OPTION: 18,\n CMD: 91,\n COMMAND: 91,\n DELETE: 8,\n};\n","import KEYCODE from './keycode';\nimport { each } from './object';\n\n/**\n * 用于切换页面元素的焦点\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 const nodeName = node.nodeName.toLowerCase();\n const tabIndex = parseInt(node.getAttribute('tabindex'), 10);\n const hasTabIndex = !isNaN(tabIndex) && tabIndex > -1;\n\n if (_isVisible(node)) {\n if (nodeName === 'input') {\n return !node.disabled && node.type !== 'hidden';\n } else if (['select', 'textarea', 'button'].indexOf(nodeName) > -1) {\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 const res = [];\n const nodeList = node.querySelectorAll('*');\n\n each(nodeList, item => {\n if (_isFocusable(item)) {\n const method = item.getAttribute('data-auto-focus') ? 'unshift' : 'push';\n res[method](item);\n }\n });\n\n if (_isFocusable(node)) {\n res.unshift(node);\n }\n\n return res;\n}\n\n// 用于记录上一次获得焦点的无素\nlet lastFocusElement = null;\n\n/**\n * 保存最近一次获得焦点的无素\n */\nexport function saveLastFocusNode() {\n lastFocusElement = document.activeElement;\n}\n\n/**\n * 清除焦点记录\n */\nexport function clearLastFocusNode() {\n lastFocusElement = null;\n}\n\n/**\n * 尝试将焦点切换到上一个元素\n */\nexport function backLastFocusNode() {\n if (lastFocusElement) {\n try {\n // 元素可能已经被移动了\n lastFocusElement.focus();\n } catch (e) {\n // ignore ...\n }\n }\n}\n\n/**\n * 在限制的范围内切换焦点\n * @param {Element} node 容器节点\n * @param {Event} e 键盘事件\n */\nexport function limitTabRange(node, e) {\n if (e.keyCode === KEYCODE.TAB) {\n const tabNodeList = getFocusNodeList(node);\n const maxIndex = tabNodeList.length - 1;\n const index = tabNodeList.indexOf(document.activeElement);\n\n if (index > -1) {\n let 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","let timestamp = Date.now();\n\n/**\n * 生成全局唯一的id\n * @param {String} [prefix=''] 前缀字符串\n * @return {String}\n *\n * @example\n * guid(); // j7jv509c\n * guid('prefix-'); // prefix-j7jv509d\n */\nexport default function(prefix) {\n prefix = prefix || '';\n\n return prefix + (timestamp++).toString(36);\n}\n","/**\n * Generate a string to be used for HTML id attributes\n *\n * @param {String} 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 {Number} max - range for the random number generator. Defaults to 1,000,000, but can be set higher if necessary.\n * @returns {String}\n */\nexport function randomId(prefix, max = 1000000) {\n const rand = Math.ceil(Math.random() * max);\n\n return prefix ? `${escapeForId(prefix)}-${rand}` : rand.toString(10);\n}\n\n/**\n * Replace characters not allowed for HTML id attributes\n *\n * @param {String} text\n * @returns {String}\n */\nexport function escapeForId(text) {\n if (!text) {\n return '';\n }\n\n if (typeof text === 'object') {\n text = JSON.stringify(text);\n } else if (typeof text !== 'string') {\n text = String(text);\n }\n\n return text.replace(/['\"]/gm, '').replace(/[\\s'\"]/gm, '-');\n}\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 _guid from './guid';\nimport _KEYCODE from './keycode';\nimport * as _htmlId from './htmlId';\n\nexport const dom = _dom;\nexport const env = _env;\nexport const events = _events;\nexport const func = _func;\nexport const log = _log;\nexport const obj = _object;\nexport const str = _string;\nexport const support = _support;\nexport const focus = _focus;\nexport const guid = _guid;\nexport const KEYCODE = _KEYCODE;\nexport const htmlId = _htmlId;\n","export default {\r\n momentLocale: 'zh-cn',\r\n Timeline: {\r\n expand: '展开',\r\n fold: '收起',\r\n },\r\n Balloon: {\r\n close: '关闭',\r\n confirm: '确定',\r\n cancel: '取消',\r\n },\r\n Card: {\r\n expand: '展开',\r\n fold: '收起',\r\n },\r\n Calendar: {\r\n today: '今天',\r\n now: '此刻',\r\n ok: '确定',\r\n clear: '清除',\r\n month: '月',\r\n year: '年',\r\n prevYear: '上一年',\r\n nextYear: '下一年',\r\n prevMonth: '上个月',\r\n nextMonth: '下个月',\r\n prevDecade: '前十二年',\r\n nextDecade: '后十二年',\r\n yearSelectAriaLabel: '选择年份',\r\n monthSelectAriaLabel: '选择月份',\r\n format: {\r\n months: '1 月_2 月_3 月_4 月_5 月_6 月_7 月_8 月_9 月_10 月_11 月_12 月'.split('_'),\r\n shortMonths: '1 月_2 月_3 月_4 月_5 月_6 月_7 月_8 月_9 月_10 月_11 月_12 月'.split('_'),\r\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\r\n shortWeekdays: '日_一_二_三_四_五_六'.split('_'),\r\n veryShortWeekdays: '日_一_二_三_四_五_六'.split('_'),\r\n yearLabel: 'YYYY 年',\r\n },\r\n },\r\n DatePicker: {\r\n placeholder: '请选择日期',\r\n datetimePlaceholder: '请选择日期和时间',\r\n monthPlaceholder: '请选择月',\r\n yearPlaceholder: '请选择年',\r\n now: '此刻',\r\n selectTime: '选择时间',\r\n selectDate: '选择日期',\r\n ok: '确定',\r\n clear: '清除',\r\n startPlaceholder: '起始日期',\r\n endPlaceholder: '结束日期',\r\n hour: '时',\r\n minute: '分',\r\n second: '秒',\r\n },\r\n Dialog: {\r\n close: '关闭',\r\n ok: '确定',\r\n cancel: '取消',\r\n },\r\n Message: {\r\n closeAriaLabel: '关闭',\r\n },\r\n Pagination: {\r\n goTo: '前往',\r\n page: '页',\r\n total: '第{current}页,共{total}页',\r\n labelPrev: '上一页,当前第{current}页',\r\n labelNext: '下一页,当前第{current}页',\r\n inputAriaLabel: '请输入跳转到第几页',\r\n selectAriaLabel: '请选择每页显示几条',\r\n pageSize: '条/页',\r\n },\r\n Input: {\r\n clear: '清除',\r\n },\r\n Select: {\r\n selectPlaceholder: '请选择',\r\n autoCompletePlaceholder: '请输入',\r\n notFoundContent: '无选项',\r\n maxTagPlaceholder: '已选择 {selected}/{total} 项',\r\n },\r\n Table: {\r\n empty: '没有数据',\r\n ok: '确定',\r\n reset: '重置',\r\n asc: '升序',\r\n desc: '降序',\r\n expanded: '已展开',\r\n folded: '已折叠',\r\n filter: '筛选',\r\n selectAll: '全选',\r\n },\r\n TimePicker: {\r\n placeholder: '请选择时间',\r\n startPlaceholder: '开始时间',\r\n endPlaceholder: '结束时间',\r\n clear: '清除',\r\n hour: '时',\r\n minute: '分',\r\n second: '秒',\r\n },\r\n Transfer: {\r\n items: '项',\r\n item: '项',\r\n moveAll: '移动全部',\r\n searchPlaceholder: '请输入',\r\n moveToLeft: '撤销选中元素',\r\n moveToRight: '提交选中元素',\r\n },\r\n Upload: {\r\n card: {\r\n cancel: '取消',\r\n addPhoto: '上传图片',\r\n download: '下载',\r\n delete: '删除',\r\n },\r\n drag: {\r\n text: '点击或者拖动文件到虚线框内上传',\r\n hint: '支持 docx, xls, PDF, rar, zip, PNG, JPG 等类型的文件',\r\n },\r\n upload: {\r\n delete: '删除',\r\n },\r\n },\r\n Search: {\r\n buttonText: '搜索',\r\n },\r\n Tag: {\r\n delete: '删除',\r\n },\r\n Rating: {\r\n description: '评分选项',\r\n },\r\n};\r\n","import zhCN from '../locale/zh-cn.js';\nimport { obj } from '../util';\n/**\n *\n * @param {Object|Boolean} input\n * @returns {Object} typeof obj.open === 'boolean'\n */\nconst parseBoundary = input => {\n let obj;\n if (input === undefined || input === null) {\n return {};\n } else if (typeof input === 'boolean') {\n obj = { open: input };\n } else {\n obj = { open: true, ...input };\n }\n\n return obj;\n};\n\nexport default function getContextProps(props, context, displayName) {\n const { prefix, locale, pure, rtl, errorBoundary, scriptUrl } = props;\n const { nextPrefix, nextLocale, nextPure, nextWarning, nextRtl, nextErrorBoundary, nextScriptUrl } = context;\n\n const newPrefix = prefix || nextPrefix;\n\n let localeFromContext;\n if (nextLocale) {\n localeFromContext = nextLocale[displayName];\n if (localeFromContext) {\n localeFromContext.momentLocale = nextLocale.momentLocale;\n }\n }\n\n let newLocale;\n if (locale) {\n newLocale = obj.deepMerge({}, zhCN[displayName], localeFromContext, locale);\n } else if (localeFromContext) {\n newLocale = obj.deepMerge({}, zhCN[displayName], localeFromContext);\n }\n\n const newPure = typeof pure === 'boolean' ? pure : nextPure;\n const newRtl = typeof rtl === 'boolean' ? rtl : nextRtl;\n\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 const newErrorBoundary = {\n ...parseBoundary(nextErrorBoundary),\n ...parseBoundary(errorBoundary),\n };\n\n if (!('open' in newErrorBoundary)) {\n newErrorBoundary.open = false;\n }\n\n return {\n prefix: newPrefix,\n locale: newLocale,\n pure: newPure,\n rtl: newRtl,\n warning: nextWarning,\n errorBoundary: newErrorBoundary,\n scriptUrl: scriptUrl || nextScriptUrl,\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nDefaultUI.propTypes = {\n error: PropTypes.object,\n errorInfo: PropTypes.object,\n};\n\nfunction DefaultUI() {\n return '';\n}\n\nexport default class ErrorBoundary extends React.Component {\n static propTypes = {\n children: PropTypes.element,\n /**\n * 捕获错误后的自定义处理, 比如埋点上传\n * @param {Object} error 错误\n * @param {Object} errorInfo 错误详细信息\n */\n afterCatch: PropTypes.func,\n /**\n * 捕获错误后的展现 自定义组件\n * @param {Object} error 错误\n * @param {Object} errorInfo 错误详细信息\n * @returns {Element} 捕获错误后的处理\n */\n fallbackUI: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.state = { error: null, errorInfo: null };\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n error: error,\n errorInfo: errorInfo,\n });\n\n const { afterCatch } = this.props;\n\n if ('afterCatch' in this.props && typeof afterCatch === 'function') {\n this.props.afterCatch(error, errorInfo);\n }\n }\n\n render() {\n const { fallbackUI: FallbackUI = DefaultUI } = this.props;\n\n if (this.state.errorInfo) {\n return <FallbackUI error={this.state.error} errorInfo={this.state.errorInfo} />;\n }\n // Normally, just render children\n return this.props.children;\n }\n}\n","import 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';\n\nconst { shallowEqual } = obj;\n\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}\n\nlet globalLocales;\nlet currentGlobalLanguage = 'zh-cn';\nlet currentGlobalLocale = {};\nlet currentGlobalRtl;\n\nexport function initLocales(locales) {\n globalLocales = locales;\n\n if (locales) {\n currentGlobalLocale = locales[currentGlobalLanguage];\n\n if (typeof currentGlobalRtl !== 'boolean') {\n currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n }\n }\n}\n\nexport function setLanguage(language) {\n if (globalLocales) {\n currentGlobalLanguage = language;\n currentGlobalLocale = globalLocales[language];\n\n if (typeof currentGlobalRtl !== 'boolean') {\n currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n }\n }\n}\n\nexport function setLocale(locale) {\n currentGlobalLocale = {\n ...(globalLocales ? globalLocales[currentGlobalLanguage] : {}),\n ...locale,\n };\n\n if (typeof currentGlobalRtl !== 'boolean') {\n currentGlobalRtl = currentGlobalLocale && currentGlobalLocale.rtl;\n }\n}\n\nexport function setDirection(dir) {\n currentGlobalRtl = dir === 'rtl';\n}\n\nexport function getLocale() {\n return currentGlobalLocale;\n}\n\nexport function getLanguage() {\n return currentGlobalLanguage;\n}\n\nexport function getDirection() {\n return currentGlobalRtl;\n}\n\nexport function config(Component, options = {}) {\n if (Component.prototype.shouldComponentUpdate === undefined) {\n Component.prototype.shouldComponentUpdate = function shouldComponentUpdate(\n nextProps,\n nextState,\n ) {\n if (this.props.pure) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n }\n\n return true;\n };\n }\n\n class ConfigedComponent extends React.Component {\n static propTypes = {\n ...(Component.propTypes || {}),\n prefix: PropTypes.string,\n locale: PropTypes.object,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n errorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n scriptUrl: PropTypes.string,\n };\n\n static contextTypes = {\n ...(Component.contextTypes || {}),\n nextPrefix: PropTypes.string,\n nextLocale: PropTypes.object,\n nextPure: PropTypes.bool,\n nextRtl: PropTypes.bool,\n nextWarning: PropTypes.bool,\n nextErrorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n nextScriptUrl: PropTypes.string,\n };\n\n _getInstance = ref => {\n this._instance = ref;\n\n if (this._instance && options.exportNames) {\n options.exportNames.forEach(name => {\n const field = this._instance[name];\n if (typeof field === 'function') {\n this[name] = field.bind(this._instance);\n } else {\n this[name] = field;\n }\n });\n }\n };\n\n _deprecated = (...args) => {\n if (this.context.nextWarning !== false) {\n log.deprecated(...args);\n }\n };\n\n getInstance() {\n return this._instance;\n }\n\n render() {\n const { prefix, locale, pure, rtl, errorBoundary, scriptUrl, ...others } = this.props;\n const { nextPrefix, nextLocale = {}, nextPure, nextRtl, nextErrorBoundary, nextScriptUrl } = this.context;\n\n const displayName = options.componentName || getDisplayName(Component);\n const contextProps = getContextProps(\n { prefix, locale, pure, rtl, errorBoundary, scriptUrl },\n {\n nextPrefix,\n nextLocale: { ...currentGlobalLocale, ...nextLocale },\n nextPure,\n nextRtl:\n typeof nextRtl === 'boolean' ? nextRtl : currentGlobalRtl === true ? true : undefined,\n nextErrorBoundary,\n nextScriptUrl,\n },\n displayName,\n );\n\n // errorBoundary is only for <ErrorBoundary>\n const newContextProps = ['prefix', 'locale', 'pure', 'rtl', 'scriptUrl'].reduce((ret, name) => {\n if (typeof contextProps[name] !== 'undefined') {\n ret[name] = contextProps[name];\n }\n return ret;\n }, {});\n\n const newOthers = options.transform ? options.transform(others, this._deprecated) : others;\n\n const content = <Component {...newOthers} {...newContextProps} ref={this._getInstance} />;\n\n const { open, ...othersBoundary } = contextProps.errorBoundary;\n\n return open ? <ErrorBoundary {...othersBoundary}>{content}</ErrorBoundary> : content;\n }\n }\n\n ConfigedComponent.displayName = `Config(${getDisplayName(Component)})`;\n\n hoistNonReactStatic(ConfigedComponent, Component);\n\n return ConfigedComponent;\n}\n","import PropTypes from 'prop-types';\n\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 * @param {Object} obj\n * @param {Function} fn\n * @return {Object}\n */\nconst mapKeys = (obj, fn) => {\n const result = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n const newKey = fn(key, value);\n result[newKey] = value;\n }\n }\n\n return result;\n};\n\n/**\n * Replace specific key with prefix `next`\n * and lowercase first character of the result.\n * @param {String} key\n * @return {String}\n */\nconst replaceKey = key => key.replace(/^(next)([A-Z])/, (match, p1, p2) => p2.toLowerCase());\n\n/**\n * @param {Object} source\n * @return {Object}\n */\nconst transformContext = source => mapKeys(source, replaceKey);\n\n/**\n * Consumer\n * @param {Object} prop\n * @param {Object} context\n */\nconst Consumer = ({ children }, context) =>\n typeof children === 'function' ? children(transformContext(context)) : null;\n\n/**\n * PropTypes\n * @type {Object}\n * @static\n */\nConsumer.propTypes = {\n // Render context as function\n // Function(context: object): ReactElement\n children: PropTypes.func,\n};\n\n/**\n * ContextTypes (legacy context)\n * @type {Object}\n * @static\n */\nConsumer.contextTypes = {\n nextPrefix: PropTypes.string,\n nextLocale: PropTypes.object,\n nextPure: PropTypes.bool,\n newRtl: PropTypes.bool,\n nextWarning: PropTypes.bool,\n};\n\nexport default Consumer;\n","import { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport getContextProps from './get-context-props';\nimport {\n config,\n initLocales,\n setLanguage,\n setLocale,\n setDirection,\n getLocale,\n getLanguage,\n getDirection,\n} from './config';\nimport Consumer from './consumer';\nimport ErrorBoundary from './error-boundary';\nimport Cache from './cache';\n\nconst childContextCache = new Cache();\n\n/**\n * ConfigProvider\n * @propsExtends false\n */\nclass ConfigProvider extends Component {\n static propTypes = {\n /**\n * 样式类名的品牌前缀\n */\n prefix: PropTypes.string,\n /**\n * 国际化文案对象,属性为组件的 displayName\n */\n locale: 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 children: PropTypes.element,\n /**\n * Icon symbol加载的js资源\n */\n scriptUrl: PropTypes.string,\n };\n\n static defaultProps = {\n warning: true,\n errorBoundary: false,\n };\n\n static childContextTypes = {\n nextPrefix: PropTypes.string,\n nextLocale: PropTypes.object,\n nextPure: PropTypes.bool,\n nextRtl: PropTypes.bool,\n nextWarning: PropTypes.bool,\n nextErrorBoundary: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n nextScriptUrl: PropTypes.string,\n };\n\n /**\n * 传入组件,生成受 ConfigProvider 控制的 HOC 组件\n * @param {Component} Component 组件类\n * @param {Object} options 可选项\n * @returns {Component} HOC\n */\n static config = (Component, options) => {\n return config(Component, options);\n };\n\n /**\n * 传入组件的 props 和 displayName,得到和 childContext 计算过的包含有 preifx/locale/pure 的对象,一般用于通过静态方法生成脱离组件树的组件\n * @param {Object} props 组件的 props\n * @param {String} displayName 组件的 displayName\n * @returns {Object} 新的 context props\n */\n static getContextProps = (props, displayName) => {\n return getContextProps(props, childContextCache.root() || {}, displayName);\n };\n\n static initLocales = initLocales;\n\n static setLanguage = setLanguage;\n\n static setLocale = setLocale;\n\n static setDirection = setDirection;\n\n static getLanguage = getLanguage;\n\n static getLocale = getLocale;\n\n static getDirection = getDirection;\n\n static Consumer = Consumer;\n\n static ErrorBoundary = ErrorBoundary;\n\n static getContext = () => {\n const { nextPrefix, nextLocale, nextPure, nextRtl, nextWarning, nextErrorBoundary, nextScriptUrl } =\n childContextCache.root() || {};\n\n return {\n prefix: nextPrefix,\n locale: nextLocale,\n pure: nextPure,\n rtl: nextRtl,\n warning: nextWarning,\n errorBoundary: nextErrorBoundary,\n scriptUrl: nextScriptUrl,\n };\n };\n\n constructor(...args) {\n super(...args);\n childContextCache.add(\n this,\n Object.assign({}, childContextCache.get(this, {}), this.getChildContext()),\n );\n }\n\n getChildContext() {\n const { prefix, locale, pure, warning, rtl, errorBoundary, scriptUrl } = this.props;\n\n return {\n nextPrefix: prefix,\n nextLocale: locale,\n nextPure: pure,\n nextRtl: rtl,\n nextWarning: warning,\n nextErrorBoundary: errorBoundary,\n nextScriptUrl: scriptUrl,\n };\n }\n\n componentDidMount() {\n this.setMomentLocale(this.props.locale);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.props.locale !== nextProps.locale) {\n this.setMomentLocale(nextProps.locale);\n }\n }\n\n componentDidUpdate() {\n childContextCache.add(\n this,\n Object.assign({}, childContextCache.get(this, {}), this.getChildContext()),\n );\n }\n\n componentWillUnmount() {\n childContextCache.remove(this);\n }\n\n setMomentLocale(locale) {\n let moment;\n try {\n moment = require('moment');\n } catch (e) {\n // ignore\n }\n\n if (moment && locale) {\n moment.locale(locale.momentLocale);\n }\n }\n\n render() {\n return Children.only(this.props.children);\n }\n}\n\nexport default ConfigProvider;\n","class Cache {\n constructor() {\n this._root = null;\n this._store = new Map();\n }\n\n empty() {\n return this._store.size === 0;\n }\n\n has(key) {\n return this._store.has(key);\n }\n\n get(key, defaultValue) {\n const res = this.has(key) ? this._store.get(key) : this.root();\n return typeof res === 'undefined' || res === null ? defaultValue : res;\n }\n\n add(key, value) {\n if (this.empty()) {\n this._root = key;\n }\n this._store.set(key, value);\n }\n\n update(key, value) {\n if (this.has(key)) {\n this._store.set(key, value);\n }\n }\n\n remove(key) {\n this._store.delete(key);\n }\n\n root() {\n return this._store.get(this._root);\n }\n}\n\nexport default Cache;\n","export function getScroll(node, isVertical) {\n if (typeof window === 'undefined') {\n return 0;\n }\n const windowProp = isVertical ? 'pageYOffset' : 'pageXOffset';\n const elementProp = isVertical ? 'scrollTop' : 'scrollLeft';\n return node === window ? node[windowProp] : node[elementProp];\n}\n\nexport function getRect(node) {\n return node !== window ? node.getBoundingClientRect() : { top: 0, left: 0, bottom: 0 };\n}\n\nexport function getNodeHeight(node) {\n if (!node) {\n return 0;\n }\n if (node === window) {\n return window.innerHeight;\n }\n return node.clientHeight;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { findDOMNode } from 'react-dom';\nimport classnames from 'classnames';\nimport { obj, events, func } from '../util';\nimport ConfigProvider from '../config-provider';\nimport { getScroll, getRect, getNodeHeight } from './util';\n\n/** Affix */\nclass Affix extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 设置 Affix 需要监听滚动事件的容器元素\n * @return {ReactElement} 目标容器元素的实例\n */\n container: PropTypes.func,\n /**\n * 距离窗口顶部达到指定偏移量后触发\n */\n offsetTop: PropTypes.number,\n /**\n * 距离窗口底部达到制定偏移量后触发\n */\n offsetBottom: PropTypes.number,\n /**\n * 当元素的样式发生固钉样式变化时触发的回调函数\n * @param {Boolean} 元素是否被固钉\n */\n onAffix: PropTypes.func,\n /**\n * 是否启用绝对布局实现 affix\n * @param {Boolean} 是否启用绝对布局\n */\n useAbsolute: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.object,\n children: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n container: () => window,\n onAffix: func.noop,\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n style: null,\n containerStyle: null,\n };\n this.affixMode = this._getAffixMode(props);\n }\n\n componentDidMount() {\n const { container } = this.props;\n this._updateNodePosition();\n // wait for parent rendered\n this.timeout = setTimeout(() => {\n this._setEventHandlerForContainer(container);\n });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('offsetTop' in nextProps || 'offsetBottom' in nextProps) {\n this.affixMode = this._getAffixMode(nextProps);\n this._updateNodePosition();\n }\n }\n\n componentWillUnmount() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n const { container } = this.props;\n this._removeEventHandlerForContainer(container);\n }\n\n _setEventHandlerForContainer(getContainer) {\n const container = getContainer();\n if (!container) {\n return;\n }\n events.on(container, 'scroll', this._updateNodePosition, false);\n events.on(container, 'resize', this._updateNodePosition, false);\n }\n\n _removeEventHandlerForContainer(getContainer) {\n const container = getContainer();\n if (container) {\n events.off(container, 'scroll', this._updateNodePosition);\n events.off(container, 'resize', this._updateNodePosition);\n }\n }\n\n updatePosition = () => {\n this._updateNodePosition();\n };\n\n _updateNodePosition = () => {\n const { container, useAbsolute } = this.props;\n const affixContainer = container();\n\n if (!affixContainer) {\n return false;\n }\n const containerScrollTop = getScroll(affixContainer, true); // 容器在垂直位置上的滚动 offset\n const affixOffset = this._getOffset(this.affixNode, affixContainer); // 目标节点当前相对于容器的 offset\n const containerHeight = getNodeHeight(affixContainer); // 容器的高度\n const affixHeight = this.affixNode.offsetHeight;\n const containerRect = getRect(affixContainer);\n\n const affixChildHeight = this.affixChildNode.offsetHeight;\n\n const { affixMode } = this;\n const affixStyle = {\n width: affixOffset.width,\n };\n const containerStyle = {\n width: affixOffset.width,\n height: affixChildHeight,\n };\n\n if (affixMode.top && containerScrollTop > affixOffset.top - affixMode.offset) {\n // affix top\n if (useAbsolute) {\n affixStyle.position = 'absolute';\n affixStyle.top = containerScrollTop - (affixOffset.top - affixMode.offset);\n containerStyle.position = 'relative';\n } else {\n affixStyle.position = 'fixed';\n affixStyle.top = affixMode.offset + containerRect.top;\n }\n this._setAffixStyle(affixStyle, true);\n this._setContainerStyle(containerStyle);\n } else if (\n affixMode.bottom &&\n containerScrollTop < affixOffset.top + affixHeight + affixMode.offset - containerHeight\n ) {\n // affix bottom\n affixStyle.height = affixHeight;\n if (useAbsolute) {\n affixStyle.position = 'absolute';\n affixStyle.top =\n containerScrollTop - (affixOffset.top + affixHeight + affixMode.offset - containerHeight);\n containerStyle.position = 'relative';\n } else {\n affixStyle.position = 'fixed';\n affixStyle.bottom = affixMode.offset;\n }\n this._setAffixStyle(affixStyle, true);\n this._setContainerStyle(containerStyle);\n } else {\n this._setAffixStyle(null);\n this._setContainerStyle(null);\n }\n };\n\n _getAffixMode(nextProps) {\n const props = nextProps || this.props;\n const { offsetTop, offsetBottom } = props;\n const affixMode = {\n top: false,\n bottom: false,\n offset: 0,\n };\n\n if (typeof offsetTop !== 'number' && typeof offsetBottom !== 'number') {\n // set default\n affixMode.top = true;\n } else if (typeof offsetTop === 'number') {\n affixMode.top = true;\n affixMode.bottom = false;\n affixMode.offset = offsetTop;\n } else if (typeof offsetBottom === 'number') {\n affixMode.bottom = true;\n affixMode.top = false;\n affixMode.offset = offsetBottom;\n }\n\n return affixMode;\n }\n\n _setAffixStyle(affixStyle, affixed = false) {\n if (obj.shallowEqual(affixStyle, this.state.style)) {\n return;\n }\n\n this.setState({\n style: affixStyle,\n });\n\n const { onAffix } = this.props;\n\n if (affixed) {\n onAffix(true);\n } else if (!affixStyle) {\n onAffix(false);\n }\n }\n\n _setContainerStyle(containerStyle) {\n if (obj.shallowEqual(containerStyle, this.state.containerStyle)) {\n return;\n }\n this.setState({ containerStyle });\n }\n\n _getOffset(affixNode, affixContainer) {\n const affixRect = affixNode.getBoundingClientRect(); // affix 元素 相对浏览器窗口的位置\n const containerRect = getRect(affixContainer); // affix 容器 相对浏览器窗口的位置\n const containerScrollTop = getScroll(affixContainer, true);\n const containerScrollLeft = getScroll(affixContainer, false);\n\n return {\n top: affixRect.top - containerRect.top + containerScrollTop,\n left: affixRect.left - containerRect.left + containerScrollLeft,\n width: affixRect.width,\n height: affixRect.height,\n };\n }\n\n _affixNodeRefHandler = ref => {\n this.affixNode = findDOMNode(ref);\n };\n\n _affixChildNodeRefHandler = ref => {\n this.affixChildNode = findDOMNode(ref);\n };\n\n render() {\n const { prefix, className, style, children } = this.props;\n const { state } = this;\n const classNames = classnames({\n [`${prefix}affix`]: state.style,\n [`${prefix}affix-top`]: !state.style && this.affixMode.top,\n [`${prefix}affix-bottom`]: !state.style && this.affixMode.bottom,\n [className]: className,\n });\n const combinedStyle = { ...state.containerStyle, ...style };\n\n return (\n <div ref={this._affixNodeRefHandler} style={combinedStyle}>\n <div ref={this._affixChildNodeRefHandler} className={classNames} style={state.style}>\n {children}\n </div>\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(Affix);\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\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 */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) 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\nexport function 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\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return 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}\nexport function 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 (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = 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] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = 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}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\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/**\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\nvar TransitionGroup = /*#__PURE__*/function (_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(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\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 ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = 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 contextValue = this.state.contextValue;\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 /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\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.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.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.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.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.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.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var 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: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\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\nvar Transition = /*#__PURE__*/function (_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; // 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 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 var _proto = Transition.prototype;\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 if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\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(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\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 || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\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(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\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 var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\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 _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n }),\n\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'`), 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 * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\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 = 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. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed.\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 * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\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 = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { func, support, events, dom, guid } from '../util';\n\nconst noop = () => {};\nconst { on, off } = events;\nconst { addClass, removeClass } = dom;\nconst prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\n\nfunction getStyleProperty(node, name) {\n const style = window.getComputedStyle(node);\n let ret = '';\n for (let 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\nexport default class AnimateChild extends Component {\n static 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\n static 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\n constructor(props) {\n super(props);\n func.bindCtx(this, [\n 'handleEnter',\n 'handleEntering',\n 'handleEntered',\n 'handleExit',\n 'handleExiting',\n 'handleExited',\n 'addEndListener',\n ]);\n this.endListeners = {\n transitionend: [],\n animationend: [],\n };\n this.timeoutMap = {};\n }\n\n componentWillUnmount() {\n Object.keys(this.endListeners).forEach(eventName => {\n this.endListeners[eventName].forEach(listener => {\n off(this.node, eventName, listener);\n });\n });\n this.endListeners = {\n transitionend: [],\n animationend: [],\n };\n }\n\n generateEndListener(node, done, eventName, id) {\n const _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\n done();\n off(node, eventName, endListener);\n const listeners = _this.endListeners[eventName];\n const index = listeners.indexOf(endListener);\n index > -1 && listeners.splice(index, 1);\n }\n };\n }\n\n addEndListener(node, done) {\n if (support.transition || support.animation) {\n const id = guid();\n\n this.node = node;\n if (support.transition) {\n const transitionEndListener = this.generateEndListener(node, done, 'transitionend', id);\n on(node, 'transitionend', transitionEndListener);\n this.endListeners.transitionend.push(transitionEndListener);\n }\n if (support.animation) {\n const animationEndListener = this.generateEndListener(node, done, 'animationend', id);\n on(node, 'animationend', animationEndListener);\n this.endListeners.animationend.push(animationEndListener);\n }\n\n setTimeout(() => {\n const transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0;\n const transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0;\n const animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n const animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n const time = Math.max(\n transitionDuration + transitionDelay,\n animationDuration + animationDelay,\n );\n if (time) {\n this.timeoutMap[id] = setTimeout(() => {\n done();\n }, time * 1000 + 200);\n }\n }, 15);\n } else {\n done();\n }\n }\n\n removeEndtListener() {\n this.transitionOff && this.transitionOff();\n this.animationOff && this.animationOff();\n }\n\n removeClassNames(node, names) {\n Object.keys(names).forEach(key => {\n removeClass(node, names[key]);\n });\n }\n\n handleEnter(node, isAppearing) {\n const { names } = this.props;\n if (names) {\n this.removeClassNames(node, names);\n const className = isAppearing ? 'appear' : 'enter';\n addClass(node, names[className]);\n }\n\n const hook = isAppearing ? this.props.onAppear : this.props.onEnter;\n hook(node);\n }\n\n handleEntering(node, isAppearing) {\n setTimeout(() => {\n const { names } = this.props;\n if (names) {\n const className = isAppearing ? 'appearActive' : 'enterActive';\n addClass(node, names[className]);\n }\n\n const hook = isAppearing ? this.props.onAppearing : this.props.onEntering;\n hook(node);\n }, 10);\n }\n\n handleEntered(node, isAppearing) {\n const { names } = this.props;\n if (names) {\n const classNames = isAppearing\n ? [names.appear, names.appearActive]\n : [names.enter, names.enterActive];\n classNames.forEach(className => {\n removeClass(node, className);\n });\n }\n\n const hook = isAppearing ? this.props.onAppeared : this.props.onEntered;\n hook(node);\n }\n\n handleExit(node) {\n const { names } = this.props;\n if (names) {\n this.removeClassNames(node, names);\n addClass(node, names.leave);\n }\n\n this.props.onExit(node);\n }\n\n handleExiting(node) {\n setTimeout(() => {\n const { names } = this.props;\n if (names) {\n addClass(node, names.leaveActive);\n }\n this.props.onExiting(node);\n }, 10);\n }\n\n handleExited(node) {\n const { names } = this.props;\n if (names) {\n [names.leave, names.leaveActive].forEach(className => {\n removeClass(node, className);\n });\n }\n\n this.props.onExited(node);\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n names,\n onAppear,\n onAppeared,\n onAppearing,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n ...others\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n return (\n <Transition\n {...others}\n onEnter={this.handleEnter}\n onEntering={this.handleEntering}\n onEntered={this.handleEntered}\n onExit={this.handleExit}\n onExiting={this.handleExiting}\n onExited={this.handleExited}\n addEndListener={this.addEndListener}\n />\n );\n }\n}\n","import React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport AnimateChild from './child';\n\nconst noop = () => {};\nconst FirstChild = props => {\n const childrenArray = React.Children.toArray(props.children);\n return childrenArray[0] || null;\n};\n\n/**\n * Animate\n */\nclass Animate extends Component {\n static propTypes = {\n /**\n * 动画 className\n */\n animation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n /**\n * 子元素第一次挂载时是否执行动画\n */\n animationAppear: PropTypes.bool,\n /**\n * 包裹子元素的标签\n */\n component: PropTypes.any,\n /**\n * 是否只有单个子元素,如果有多个子元素,请设置为 false\n */\n singleMode: PropTypes.bool,\n /**\n * 子元素\n */\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),\n /**\n * 执行第一次挂载动画前触发的回调函数\n */\n beforeAppear: PropTypes.func,\n /**\n * 执行第一次挂载动画,添加 xxx-appear-active 类名后触发的回调函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n onAppear: PropTypes.func,\n /**\n * 执行完第一次挂载动画后触发的函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n afterAppear: PropTypes.func,\n /**\n * 执行进场动画前触发的回调函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n beforeEnter: PropTypes.func,\n /**\n * 执行进场动画,添加 xxx-enter-active 类名后触发的回调函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n onEnter: PropTypes.func,\n /**\n * 执行完进场动画后触发的回调函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n afterEnter: PropTypes.func,\n /**\n * 执行离场动画前触发的回调函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n beforeLeave: PropTypes.func,\n /**\n * 执行离场动画,添加 xxx-leave-active 类名后触发的回调函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n onLeave: PropTypes.func,\n /**\n * 执行完离场动画后触发的回调函数\n * @param {HTMLElement} node 执行动画的 dom 元素\n */\n afterLeave: PropTypes.func,\n };\n\n static 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\n normalizeNames(names) {\n if (typeof names === 'string') {\n return {\n appear: `${names}-appear`,\n appearActive: `${names}-appear-active`,\n enter: `${names}-enter`,\n enterActive: `${names}-enter-active`,\n leave: `${names}-leave`,\n leaveActive: `${names}-leave-active`,\n };\n }\n if (typeof names === 'object') {\n return {\n appear: names.appear,\n appearActive: `${names.appear}-active`,\n enter: `${names.enter}`,\n enterActive: `${names.enter}-active`,\n leave: `${names.leave}`,\n leaveActive: `${names.leave}-active`,\n };\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n animation,\n children,\n animationAppear,\n singleMode,\n component,\n beforeAppear,\n onAppear,\n afterAppear,\n beforeEnter,\n onEnter,\n afterEnter,\n beforeLeave,\n onLeave,\n afterLeave,\n ...others\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n const animateChildren = Children.map(children, child => {\n return (\n <AnimateChild\n key={child.key}\n names={this.normalizeNames(animation)}\n onAppear={beforeAppear}\n onAppearing={onAppear}\n onAppeared={afterAppear}\n onEnter={beforeEnter}\n onEntering={onEnter}\n onEntered={afterEnter}\n onExit={beforeLeave}\n onExiting={onLeave}\n onExited={afterLeave}\n >\n {child}\n </AnimateChild>\n );\n });\n\n return (\n <TransitionGroup\n appear={animationAppear}\n component={singleMode ? FirstChild : component}\n {...others}\n >\n {animateChildren}\n </TransitionGroup>\n );\n }\n}\n\nexport default Animate;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { func, dom } from '../util';\nimport Animate from './animate';\n\nconst noop = () => {};\nconst { getStyle } = dom;\n\nexport default class Expand extends Component {\n static 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\n static defaultProps = {\n beforeEnter: noop,\n onEnter: noop,\n afterEnter: noop,\n beforeLeave: noop,\n onLeave: noop,\n afterLeave: noop,\n };\n\n constructor(props) {\n super(props);\n func.bindCtx(this, [\n 'beforeEnter',\n 'onEnter',\n 'afterEnter',\n 'beforeLeave',\n 'onLeave',\n 'afterLeave',\n ]);\n }\n\n beforeEnter(node) {\n if (this.leaving) {\n this.afterLeave(node);\n }\n\n this.cacheCurrentStyle(node);\n this.cacheComputedStyle(node);\n this.setCurrentStyleToZero(node);\n\n this.props.beforeEnter(node);\n }\n\n onEnter(node) {\n this.setCurrentStyleToComputedStyle(node);\n\n this.props.onEnter(node);\n }\n\n afterEnter(node) {\n this.restoreCurrentStyle(node);\n\n this.props.afterEnter(node);\n }\n\n beforeLeave(node) {\n this.leaving = true;\n\n this.cacheCurrentStyle(node);\n this.cacheComputedStyle(node);\n this.setCurrentStyleToComputedStyle(node);\n\n this.props.beforeLeave(node);\n }\n\n onLeave(node) {\n this.setCurrentStyleToZero(node);\n\n this.props.onLeave(node);\n }\n\n afterLeave(node) {\n this.leaving = false;\n\n this.restoreCurrentStyle(node);\n\n this.props.afterLeave(node);\n }\n\n cacheCurrentStyle(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\n cacheComputedStyle(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\n setCurrentStyleToZero(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\n setCurrentStyleToComputedStyle(node) {\n node.style.borderTopWidth = `${this.borderTopWidth}px`;\n node.style.paddingTop = `${this.paddingTop}px`;\n node.style.height = `${this.height}px`;\n node.style.paddingBottom = `${this.paddingBottom}px`;\n node.style.borderBottomWidth = `${this.borderBottomWidth}px`;\n }\n\n restoreCurrentStyle(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\n render() {\n const { animation, ...others } = this.props;\n const newAnimation = animation || 'expand';\n\n return (\n <Animate\n {...others}\n animation={newAnimation}\n beforeEnter={this.beforeEnter}\n onEnter={this.onEnter}\n afterEnter={this.afterEnter}\n beforeLeave={this.beforeLeave}\n onLeave={this.onLeave}\n afterLeave={this.afterLeave}\n />\n );\n }\n}\n","import Animate from './animate';\nimport Expand from './expand';\n\nAnimate.Expand = Expand;\n\nexport default Animate;\n","/* eslint-disable react/no-multi-comp */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\nimport { CacheManager } from './cache-manager';\n\n/**\n * Icon\n */\nclass Shell extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 指定显示哪种图标\n */\n type: PropTypes.string,\n /**\n * 指定图标大小\n */\n size: PropTypes.oneOf(['xs', 'small', 'medium', 'large', 'xl', 'xxl', 'xxxl']),\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const { prefix, type, size, className, rtl, children } = this.props;\n const other = obj.pickOthers(Shell.propTypes, this.props);\n const classes = cls({\n [`${prefix}icon`]: true,\n [`${prefix}icon-${type}`]: !!type,\n [`${prefix}${size}`]: !!size,\n [className]: !!className,\n });\n\n if (\n rtl &&\n [\n 'chevron-left',\n 'chevron-right',\n 'chevrons-left',\n 'chevrons-right',\n 'arrows-swtich-horizontal',\n 'arrows-swtich-vertical',\n 'arrows-long-down',\n 'arrows-long-up',\n ].indexOf(type) !== -1\n ) {\n other.dir = 'rtl';\n }\n\n return (\n <i {...other} className={classes}>\n {children}\n </i>\n );\n }\n}\n\nfunction create(options = {}) {\n class Iconfont extends React.Component {\n static displayName = 'Iconfont';\n\n constructor(props) {\n super(props);\n const {\n scriptUrl = props.scriptUrl || '//at.alicdn.com/t/font_1310450_0h6a0uj7uj0o.js',\n } = options;\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 (\n typeof document !== 'undefined' &&\n typeof window !== 'undefined' &&\n typeof document.createElement === 'function' &&\n typeof scriptUrl === 'string' &&\n scriptUrl.length &&\n !CacheManager.has(scriptUrl)\n ) {\n const script = document.createElement('script');\n script.setAttribute('src', scriptUrl);\n script.setAttribute('data-namespace', scriptUrl);\n CacheManager.add(scriptUrl);\n document.body.appendChild(script);\n }\n }\n\n render() {\n const { symbolPrefix } = options;\n const { type, children, ...restProps } = this.props;\n let content = null;\n if (type) {\n content = <use xlinkHref={`#${symbolPrefix}${type}`} />;\n }\n return (\n <Shell\n type={type}\n {...restProps}\n className={cls({\n [restProps.className]: !!restProps.className,\n })}\n >\n <svg viewBox=\"0 0 1024 1024\">{content}</svg>\n </Shell>\n );\n }\n }\n\n return Iconfont;\n}\n\nconst Icon = create({\n symbolPrefix: 'at-',\n});\n\nIcon._typeMark = 'icon';\n\nIcon.createFromIconfont = create;\n\nexport default ConfigProvider.config(Icon);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport ConfigProvider from '../../config-provider';\nimport { obj } from '../../util';\nimport Icon from '../../icon';\n\n// 单个头像\nclass Avatar extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n closable: PropTypes.bool,\n img: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n onClose: PropTypes.func,\n onClick: PropTypes.func,\n }\n\n static defaultProps = {\n prefix: 'next-',\n closable: true,\n }\n\n constructor(props) {\n super(props);\n this.state = {\n hoverClose: false,\n };\n }\n\n onHoverClose = () => {\n this.setState({\n hoverClose: true,\n });\n }\n\n onLeaveClose = () => {\n this.setState({\n hoverClose: false,\n });\n }\n\n onClose = (e) => {\n const { onClose } = this.props;\n e.stopPropagation();\n onClose();\n }\n\n render() {\n const { prefix, className, closable, style, img, text, onClick, ...others } = this.props;\n const { hoverClose } = this.state;\n const closeBtn = closable && (\n <Icon\n type=\"remove-o-fill\"\n size=\"small\"\n className={`${prefix}avatar-close`}\n onClick={this.onClose}\n onMouseEnter={this.onHoverClose}\n onMouseLeave={this.onLeaveClose}\n />\n );\n return (\n <div\n className={cls({\n [`${prefix}avatar`]: true,\n [className]: !!className,\n [`${prefix}avatar-hover-close`]: hoverClose,\n })}\n style={style}\n onClick={onClick}\n {...obj.pickAttrs(others)}\n >\n <img className={`${prefix}avatar-img`} src={img} />\n <span className={`${prefix}avatar-name`}>{text}</span>\n {closeBtn}\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(Avatar);\n","import React from 'react';\nimport cls from 'classnames';\nimport PropTypes from 'prop-types';\nimport ConfigProvider from '../../config-provider';\nimport { obj } from '../../util';\n\n// 文字头像\nclass TextAvatar extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n size: PropTypes.oneOf(['xs', 'small', 'medium', 'large', 'xl']),\n style: PropTypes.object,\n className: PropTypes.string,\n text: PropTypes.string.isRequired,\n colorSets: PropTypes.arrayOf(PropTypes.string),\n }\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n colorSets: ['#BC61CF', '#F26666', '#F29A52', '#F4C329', '#CBD057', '#289ED3', '#29B3F0'],\n style: {},\n }\n\n getBgColor = () => {\n const { text, colorSets } = this.props;\n if (typeof text !== 'string' || colorSets.length === 0 || colorSets.length === 1) {\n return '#289ED3';\n }\n const charCode = text.charCodeAt(0);\n const len = colorSets.length;\n const index = charCode % len;\n return colorSets[index];\n }\n\n render() {\n const { prefix, size, style, className, text, ...others } = this.props;\n return (\n <div\n style={{ background: this.getBgColor(), ...style }}\n className={cls({\n [`${prefix}avatar-text`]: true,\n [className]: !!className,\n [`${prefix}avatar-text-${size}`]: true,\n })}\n {...obj.pickAttrs(others)}\n >\n {text}\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(TextAvatar);\n","import React from 'react';\nimport cls from 'classnames';\nimport PropTypes from 'prop-types';\nimport ConfigProvider from '../../config-provider';\nimport { obj } from '../../util';\n\n// 单图片头像\nclass ImageAvatar extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n size: PropTypes.oneOf(['xs', 'small', 'medium', 'large', 'xl']),\n style: PropTypes.object,\n className: PropTypes.string,\n img: PropTypes.string.isRequired,\n }\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n }\n\n render() {\n const { prefix, size, style, className, img, ...others } = this.props;\n return (\n <div\n style={style}\n className={cls({\n [`${prefix}avatar-image`]: true,\n [className]: !!className,\n [`${prefix}avatar-image-${size}`]: true,\n })}\n {...obj.pickAttrs(others)}\n >\n <img src={img} />\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(ImageAvatar);\n","const overlayManager = {\n allOverlays: [],\n\n addOverlay(overlay) {\n this.removeOverlay(overlay);\n this.allOverlays.unshift(overlay);\n },\n\n isCurrentOverlay(overlay) {\n return overlay && this.allOverlays[0] === overlay;\n },\n\n removeOverlay(overlay) {\n const i = this.allOverlays.indexOf(overlay);\n if (i > -1) {\n this.allOverlays.splice(i, 1);\n }\n },\n};\n\nexport default overlayManager;\n","import { findDOMNode } from 'react-dom';\n\nexport default function findNode(target, param) {\n if (!target) {\n return null;\n }\n\n if (typeof target === 'string') {\n return document.getElementById(target);\n }\n\n if (typeof target === 'function') {\n target = target(param);\n }\n\n if (!target) {\n return null;\n }\n\n try {\n return findDOMNode(target);\n } catch (err) {\n return target;\n }\n}\n","import React, { Component, Children } from 'react';\nimport { findDOMNode, createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { func } from '../util';\nimport findNode from './utils/find-node';\n\nconst { makeChain } = func;\n\nexport default class Gateway extends Component {\n static propTypes = {\n children: PropTypes.node,\n container: PropTypes.any,\n target: PropTypes.any,\n };\n\n static defaultProps = {\n container: () => document.body,\n };\n\n componentDidMount() {\n this.containerNode = this.getContainerNode(this.props);\n this.forceUpdate();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.containerNode = this.getContainerNode(nextProps);\n }\n\n getContainerNode(props) {\n const targetNode = findNode(props.target);\n return findNode(props.container, targetNode);\n }\n\n getChildNode() {\n return findDOMNode(this.child);\n }\n\n saveChildRef = ref => {\n this.child = ref;\n };\n\n render() {\n if (!this.containerNode) {\n return null;\n }\n\n const { children } = this.props;\n let child = children ? Children.only(children) : null;\n if (!child) {\n return null;\n }\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 = React.cloneElement(child, {\n ref: makeChain(this.saveChildRef, child.ref),\n });\n\n return createPortal(child, this.containerNode);\n }\n}\n","/**\n * Created by xiachi on 17/1/17.\n */\n\nconst 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: [0, -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: [0, -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, 0],\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, 0],\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: [0, 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: [0, 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, 0],\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, 0],\n },\n};\nconst 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};\n\nexport { normalMap, edgeMap };\n","import { dom } from '../../util';\nimport { edgeMap as alignMap } from '../../balloon/alignMap';\n\nconst VIEWPORT = 'viewport';\n\n// IE8 not support pageXOffset\nconst getPageX = () => window.pageXOffset || document.documentElement.scrollLeft;\nconst getPageY = () => window.pageYOffset || document.documentElement.scrollTop;\n\n/**\n * @private get element rect\n * @param {Element} elem\n * @return {Object}\n * 注意,该方法在处理存在css transform: translate时结果不对\n */\nfunction _getElementRect(elem) {\n let offsetTop = 0;\n let offsetLeft = 0;\n let scrollTop = 0;\n let scrollLeft = 0;\n\n const { offsetHeight } = elem;\n const { offsetWidth } = elem;\n // eslint-disable-next-line no-cond-assign\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop;\n }\n if (!isNaN(elem.offsetLeft)) {\n offsetLeft += elem.offsetLeft;\n }\n if (!isNaN(elem.scrollTop)) {\n scrollTop += elem.scrollTop;\n }\n if (!isNaN(elem.scrollLeft)) {\n scrollLeft += elem.scrollLeft;\n }\n } while ((elem = elem.offsetParent) !== null);\n\n return {\n top: offsetTop - scrollTop - (document.documentElement.scrollTop || document.body.scrollTop),\n left:\n offsetLeft - scrollLeft - (document.documentElement.scrollLeft || document.body.scrollLeft),\n height: offsetHeight,\n width: offsetWidth,\n };\n}\n\n/**\n * @private get viewport size\n * @return {Object}\n */\nfunction _getViewportSize() {\n return {\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight,\n };\n}\nexport default class Position {\n static VIEWPORT = VIEWPORT;\n\n /**\n * @public static place method\n * @param {Object} props\n * @param {String} props.role\n * @param {DOM} props.pinElement\n * @param {DOM} props.baseElement\n * @param {String} props.align\n * @param {Number} props.offset\n * @param {Boolean} props.needAdjust\n * @param {Boolean} props.isRtl\n * @param {DOM} props.containerNode\n * @return {Position}\n */\n static place = props => new Position(props).setPosition();\n\n constructor(props) {\n this.role = props.role;\n this.pinElement = props.pinElement;\n this.baseElement = props.baseElement;\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 this.containerNode = props.containerNode;\n }\n\n setPosition() {\n const { pinElement, baseElement } = this;\n const expectedAlign = this._getExpectedAlign();\n let isPinFixed;\n let isBaseFixed;\n let 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 } else {\n isPinFixed = true;\n }\n if (baseElement === VIEWPORT || dom.getStyle(baseElement, 'position') !== 'fixed') {\n isBaseFixed = false;\n } else {\n isBaseFixed = true;\n }\n // 根据期望的定位\n for (let i = 0; i < expectedAlign.length; i++) {\n const align = expectedAlign[i];\n const pinElementPoints = this._normalizePosition(pinElement, align.split(' ')[0], isPinFixed);\n const baseElementPoints = this._normalizePosition(\n baseElement,\n align.split(' ')[1],\n isPinFixed,\n );\n const pinElementParentOffset = this._getParentOffset(pinElement);\n const pinElementParentScrollOffset = this._getParentScrollOffset(pinElement);\n\n const baseElementOffset =\n isPinFixed && isBaseFixed ? this._getLeftTop(baseElement) : baseElementPoints.offset();\n const top =\n baseElementOffset.top +\n baseElementPoints.y -\n pinElementParentOffset.top -\n pinElementPoints.y +\n pinElementParentScrollOffset.top;\n const left =\n baseElementOffset.left +\n baseElementPoints.x -\n pinElementParentOffset.left -\n pinElementPoints.x +\n pinElementParentScrollOffset.left;\n // 不直接将DOM定位过去,不仅有性能损耗,而且受绝对定位元素尺寸变化问题的影响\n // 假设DOM放置在left,top上,通过计算去判断是否在视口内\n // this._setPinElementPostion(pinElement, { left, top }, this.offset);\n\n if (!firstPositionResult) {\n firstPositionResult = { left, top };\n }\n if (this._isInViewport(pinElement, { left, top }, this.offset, this.containerNode)) {\n this._setPinElementPostion(pinElement, { left, top }, this.offset);\n return align;\n }\n }\n\n // This will only execute if `pinElement` could not be placed entirely in the Viewport\n const inViewportLeft = this._makeElementInViewport(\n pinElement,\n firstPositionResult.left,\n 'Left',\n isPinFixed,\n );\n const inViewportTop = this._makeElementInViewport(\n pinElement,\n firstPositionResult.top,\n 'Top',\n isPinFixed,\n );\n\n this._setPinElementPostion(\n pinElement,\n { left: inViewportLeft, top: inViewportTop },\n this.offset,\n );\n return expectedAlign[0];\n }\n\n _getParentOffset(element) {\n const parent = element.offsetParent || document.documentElement;\n let offset;\n if (parent === document.body && dom.getStyle(parent, 'position') === 'static') {\n offset = {\n top: 0,\n left: 0,\n };\n } else {\n offset = this._getElementOffset(parent);\n }\n\n offset.top += parseFloat(dom.getStyle(parent, 'border-top-width'), 10);\n offset.left += parseFloat(dom.getStyle(parent, 'border-left-width'), 10);\n offset.offsetParent = parent;\n return offset;\n }\n\n _getParentScrollOffset = function (elem) {\n let top = 0;\n let left = 0;\n\n if (elem && elem.offsetParent) {\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\n return {\n top,\n left,\n };\n };\n\n _makeElementInViewport(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\n // let result = number;\n // const docElement = document.documentElement;\n // const offsetParent =\n // pinElement.offsetParent || document.documentElement;\n\n // if (result < 0) {\n // if (isPinFixed) {\n // result = 0;\n // }\n\n // else if (\n // offsetParent === document.body &&\n // dom.getStyle(offsetParent, 'position') === 'static'\n // ) {\n // // Only when div's offsetParent is document.body, we set new position result.\n // result = Math.max(\n // docElement[`scroll${type}`],\n // document.body[`scroll${type}`]\n // );\n // }\n // }\n // return result;\n\n return number < 0 && isPinFixed ? 0 : number;\n }\n\n _normalizePosition(element, align, isPinFixed) {\n const points = this._normalizeElement(element, isPinFixed);\n this._normalizeXY(points, align);\n return points;\n }\n\n _normalizeXY(points, align) {\n const x = align.split('')[1];\n const y = align.split('')[0];\n\n points.x = this._xyConverter(x, points, 'width');\n points.y = this._xyConverter(y, points, 'height');\n\n return points;\n }\n\n _xyConverter(align, points, type) {\n const res = align\n .replace(/t|l/gi, '0%')\n .replace(/c/gi, '50%')\n .replace(/b|r/gi, '100%')\n .replace(/(\\d+)%/gi, (m, d) => {\n return points.size()[type] * (d / 100);\n });\n\n return parseFloat(res, 10) || 0;\n }\n\n _getLeftTop(element) {\n return {\n left: parseFloat(dom.getStyle(element, 'left')) || 0,\n top: parseFloat(dom.getStyle(element, 'top')) || 0,\n };\n }\n\n _normalizeElement(element, isPinFixed) {\n const result = {\n element,\n x: 0,\n y: 0,\n };\n const isViewport = element === VIEWPORT;\n const docElement = document.documentElement;\n\n result.offset = () => {\n if (isPinFixed) {\n return {\n left: 0,\n top: 0,\n };\n } else if (isViewport) {\n return {\n left: getPageX(),\n top: getPageY(),\n };\n } else {\n return this._getElementOffset(element);\n }\n };\n\n result.size = () => {\n if (isViewport) {\n return {\n width: docElement.clientWidth,\n height: docElement.clientHeight,\n };\n } else {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight,\n };\n }\n };\n\n return result;\n }\n\n _getElementOffset(element) {\n const rect = element.getBoundingClientRect();\n const docElement = document.documentElement;\n const body = document.body;\n const docClientLeft = docElement.clientLeft || body.clientLeft || 0;\n const docClientTop = docElement.clientTop || body.clientTop || 0;\n\n return {\n left: rect.left + (getPageX() - docClientLeft),\n top: rect.top + (getPageY() - docClientTop),\n };\n }\n\n // According to the location of the overflow to calculate the desired positioning\n _getExpectedAlign() {\n const align = this.isRtl\n ? this._replaceAlignDir(this.align, /l|r/g, { l: 'r', r: 'l' })\n : this.align;\n const 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(\n this._replaceAlignDir(align, /l|r|t|b/g, {\n l: 'r',\n r: 'l',\n t: 'b',\n b: 't',\n }),\n );\n }\n // Tooltip的对齐方式是其子集,需要过滤掉部分\n if (this.role === 'tooltip') {\n const toolTipAlignSet = [align];\n const keys = Object.keys(alignMap);\n keys.forEach(k => {\n toolTipAlignSet.push(alignMap[k].align, alignMap[k].rtlAlign);\n });\n return Array.from(new Set(toolTipAlignSet));\n }\n return expectedAlign;\n }\n\n // Transform align order.\n _replaceAlignDir(align, regExp, map) {\n return align.replace(regExp, res => {\n return map[res];\n });\n }\n\n // Detecting element is in the window, we want to adjust position later.\n _isInViewport(element, { left, top }, offset, containerNode) {\n const viewportSize = _getViewportSize();\n // 如果传入了 containerNode\n if (containerNode && containerNode.tagName !== 'BODY') {\n return (\n left + offset[0] + element.offsetWidth <\n viewportSize.width + document.documentElement.scrollLeft &&\n top + offset[1] + element.offsetHeight <\n viewportSize.height + document.documentElement.scrollTop\n );\n }\n // Avoid animate problem that use offsetWidth instead of getBoundingClientRect.\n return (\n left + offset[0] >= document.documentElement.scrollLeft &&\n // using strict < instead of <=, to handle the bug of container expaned on element placement\n // closing https://github.com/alibaba-fusion/next/issues/853\n left + offset[0] + element.offsetWidth <\n viewportSize.width + document.documentElement.scrollLeft &&\n top + offset[1] >= document.documentElement.scrollTop &&\n top + offset[1] + element.offsetHeight <\n viewportSize.height + document.documentElement.scrollTop\n );\n }\n\n // 在这里做RTL判断 top-left 定位转化为等效的 top-right定位\n _setPinElementPostion(pinElement, postion, offset = [0, 0]) {\n const { top, left } = postion;\n if (!this.isRtl) {\n dom.setStyle(pinElement, {\n left: `${left + offset[0]}px`,\n top: `${top + offset[1]}px`,\n });\n return;\n }\n\n // transfer {left,top} equaly to {right,top}\n const pinElementParentOffset = this._getParentOffset(pinElement);\n const { width: offsetParentWidth } = _getElementRect(pinElementParentOffset.offsetParent);\n const { width } = _getElementRect(pinElement);\n const right = offsetParentWidth - (left + width);\n dom.setStyle(pinElement, {\n left: 'auto',\n right: `${right + offset[0]}px`,\n top: `${top + offset[1]}px`,\n });\n }\n}\n","import { Component, Children } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { func, dom, events } from '../util';\nimport position from './utils/position';\nimport findNode from './utils/find-node';\n\nconst { noop } = func;\nconst { getStyle } = dom;\nconst { place } = position;\n\nexport default class Position extends Component {\n static VIEWPORT = position.VIEWPORT;\n\n static propTypes = {\n role: PropTypes.string,\n children: PropTypes.node,\n visible: PropTypes.bool,\n container: PropTypes.any,\n target: 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 needListenResize: PropTypes.bool,\n shouldUpdatePosition: PropTypes.bool,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n align: 'tl bl',\n offset: [0, 0],\n beforePosition: noop,\n onPosition: noop,\n needAdjust: true,\n needListenResize: true,\n shouldUpdatePosition: false,\n rtl: false,\n };\n\n componentDidMount() {\n this.setPosition();\n\n if (this.props.needListenResize) {\n events.on(window, 'resize', this.handleResize);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (\n ('align' in nextProps && nextProps.align !== this.props.align) ||\n nextProps.shouldUpdatePosition || (!this.props.visible && nextProps.visible)\n ) {\n this.shouldUpdatePosition = true;\n }\n }\n\n componentDidUpdate() {\n if (this.shouldUpdatePosition) {\n this.setPosition();\n this.shouldUpdatePosition = false;\n }\n }\n\n componentWillUnmount() {\n if (this.props.needListenResize) {\n events.off(window, 'resize', this.handleResize);\n }\n\n clearTimeout(this.resizeTimeout);\n }\n\n setPosition() {\n const { role, align, offset, visible, beforePosition, onPosition, needAdjust, rtl } = this.props;\n if (!visible) {\n return;\n }\n beforePosition();\n\n const contentNode = this.getContentNode();\n const targetNode = this.getTargetNode();\n const containerNode = this.getContainerNode(this.props);\n if (contentNode && targetNode) {\n const resultAlign = place({\n role,\n pinElement: contentNode,\n baseElement: targetNode,\n align,\n offset,\n needAdjust,\n isRtl: rtl,\n containerNode,\n });\n const top = getStyle(contentNode, 'top');\n const left = getStyle(contentNode, 'left');\n onPosition(\n {\n align: resultAlign.split(' '),\n top,\n left,\n },\n contentNode,\n );\n }\n }\n\n getContentNode() {\n return findDOMNode(this);\n }\n\n getContainerNode(props) {\n const targetNode = findNode(props.target);\n return findNode(props.container, targetNode);\n }\n\n getTargetNode() {\n const { target } = this.props;\n return target === position.VIEWPORT ? position.VIEWPORT : findNode(target, this.props);\n }\n\n handleResize = () => {\n clearTimeout(this.resizeTimeout);\n\n this.resizeTimeout = setTimeout(() => {\n this.setPosition();\n }, 200);\n }\n\n render() {\n return Children.only(this.props.children);\n }\n}\n","import React, { Component, Children } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { dom, events, func, support, focus, KEYCODE, guid } from '../util';\nimport overlayManager from './manager';\nimport Gateway from './gateway';\nimport Position from './position';\nimport findNode from './utils/find-node';\n\nconst { saveLastFocusNode, getFocusNodeList, backLastFocusNode } = focus;\nconst { makeChain, noop } = func;\n\nconst isScrollDisplay = function (element) {\n try {\n const scrollbarStyle = window.getComputedStyle(element, '::-webkit-scrollbar');\n return !scrollbarStyle || scrollbarStyle.getPropertyValue('display') !== 'none';\n } catch (e) {\n // ignore error for firefox\n }\n\n return true;\n};\nconst hasScroll = () => {\n const doc = document.documentElement;\n return (\n doc.scrollHeight > doc.clientHeight &&\n dom.scrollbar().width > 0 &&\n isScrollDisplay(document.documentElement) &&\n isScrollDisplay(document.body)\n );\n};\nconst prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\nconst getStyleProperty = (node, name) => {\n const style = window.getComputedStyle(node);\n let ret = '';\n for (let 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\nconst modals = [];\nlet bodyOverflowY;\nlet bodyPaddingRight;\n\n/**\n * Overlay\n * */\nexport default class Overlay extends Component {\n static propTypes = {\n role: PropTypes.string,\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.object,\n /**\n * 弹层内容\n */\n children: PropTypes.any,\n /**\n * 是否显示弹层\n */\n visible: PropTypes.bool,\n /**\n * 弹层请求关闭时触发事件的回调函数\n * @param {String} type 弹层关闭的来源\n * @param {Object} e DOM 事件\n */\n onRequestClose: PropTypes.func,\n /**\n * 是否监听resize事件\n */\n needListenResize: PropTypes.bool,\n /**\n * 弹层定位的参照元素\n */\n target: PropTypes.any,\n /**\n * 弹层相对于参照元素的定位, 详见开发指南的[定位部分](#定位)\n */\n align: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n /**\n * 弹层相对于trigger的定位的微调, 接收数组[hoz, ver], 表示弹层在 left / top 上的增量\n * e.g. [100, 100] 表示往右(RTL 模式下是往左) 、下分布偏移100px\n */\n offset: PropTypes.array,\n /**\n * 渲染组件的容器,如果是函数需要返回 ref,如果是字符串则是该 DOM 的 id,也可以直接传入 DOM 节点\n */\n container: PropTypes.any,\n /**\n * 是否显示遮罩\n */\n hasMask: PropTypes.bool,\n /**\n * 是否支持 esc 按键关闭弹层\n */\n canCloseByEsc: PropTypes.bool,\n /**\n * 点击弹层外的区域是否关闭弹层,不显示遮罩时生效\n */\n canCloseByOutSideClick: PropTypes.bool,\n /**\n * 点击遮罩区域是否关闭弹层,显示遮罩时生效\n */\n canCloseByMask: PropTypes.bool,\n /**\n * 弹层打开前触发事件的回调函数\n */\n beforeOpen: PropTypes.func,\n /**\n * 弹层打开时触发事件的回调函数\n */\n onOpen: PropTypes.func,\n /**\n * 弹层打开后触发事件的回调函数, 如果有动画,则在动画结束后触发\n */\n afterOpen: PropTypes.func,\n /**\n * 弹层关闭前触发事件的回调函数\n */\n beforeClose: PropTypes.func,\n /**\n * 弹层关闭时触发事件的回调函数\n */\n onClose: PropTypes.func,\n /**\n * 弹层关闭后触发事件的回调函数, 如果有动画,则在动画结束后触发\n */\n afterClose: PropTypes.func,\n /**\n * 弹层定位完成前触发的事件\n */\n beforePosition: PropTypes.func,\n /**\n * 弹层定位完成时触发的事件\n * @param {Object} config 定位的参数\n * @param {Array} config.align 对齐方式,如 ['cc', 'cc'](如果开启 needAdjust,可能和预先设置的 align 不同)\n * @param {Number} config.top 距离视口顶部距离\n * @param {Number} config.left 距离视口左侧距离\n * @param {Object} node 定位参照的容器节点\n */\n onPosition: PropTypes.func,\n /**\n * 是否在每次弹层重新渲染后强制更新定位信息,一般用于弹层内容区域大小发生变化时,仍需保持原来的定位方式\n */\n shouldUpdatePosition: PropTypes.bool,\n /**\n * 弹层打开时是否让其中的元素自动获取焦点\n */\n autoFocus: PropTypes.bool,\n /**\n * 当弹层由于页面滚动等情况不在可视区域时,是否自动调整定位以出现在可视区域\n */\n needAdjust: PropTypes.bool,\n /**\n * 是否禁用页面滚动\n */\n disableScroll: PropTypes.bool,\n /**\n * 隐藏时是否保留子节点\n */\n cache: PropTypes.bool,\n /**\n * 安全节点,当点击 document 的时候,如果包含该节点则不会关闭弹层,如果是函数需要返回 ref,如果是字符串则是该 DOM 的 id,也可以直接传入 DOM 节点,或者以上值组成的数组\n */\n safeNode: PropTypes.any,\n /**\n * 弹层的根节点的样式类\n */\n wrapperClassName: PropTypes.string,\n /**\n * 弹层的根节点的内联样式\n */\n wrapperStyle: PropTypes.object,\n /**\n * 配置动画的播放方式,支持 { in: 'enter-class', out: 'leave-class' } 的对象参数,如果设置为 false,则不播放动画。 请参考 Animate 组件的文档获取可用的动画名\n * @default { in: 'expandInDown', out: 'expandOutUp' }\n */\n animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n onMaskMouseEnter: PropTypes.func,\n onMaskMouseLeave: PropTypes.func,\n onClick: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n visible: false,\n needListenResize: true,\n onRequestClose: noop,\n target: Position.VIEWPORT,\n align: 'tl bl',\n offset: [0, 4],\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 onClick: e => e.stopPropagation(),\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n visible: props.visible,\n status: 'none',\n animation: this.getAnimation(props),\n };\n\n this.lastAlign = props.align;\n\n this.timeoutMap = {};\n }\n\n UNSAFE_componentWillMount() {\n if (this.props.visible) {\n this.beforeOpen();\n this.props.beforeOpen();\n\n if (this.state.animation && support.animation) {\n this.enter();\n }\n }\n }\n\n componentDidMount() {\n this.componentDidUpdate({ visible: false });\n this.addDocumentEvents();\n\n overlayManager.addOverlay(this);\n\n if (this.state.visible) {\n this._isMounted = true;\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!this._isMounted && nextProps.visible) {\n this._isMounted = true;\n }\n\n const willOpen = !this.props.visible && nextProps.visible;\n const willClose = this.props.visible && !nextProps.visible;\n if (willOpen) {\n this.beforeOpen();\n nextProps.beforeOpen();\n } else if (willClose) {\n this.beforeClose();\n nextProps.beforeClose();\n }\n\n if (nextProps.animation || nextProps.animation === false) {\n this.setState({\n animation: nextProps.animation,\n });\n }\n\n if (nextProps.animation !== false && support.animation) {\n if (willOpen) {\n this.enter();\n } else if (willClose) {\n this.leave();\n }\n } else {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n const open = !prevProps.visible && this.props.visible;\n const close = prevProps.visible && !this.props.visible;\n if (this.state.animation && support.animation) {\n if (open || close) {\n this.addAnimationEvents();\n }\n } else {\n const wrapperNode = this.getWrapperNode();\n if (open) {\n setTimeout(() => {\n this.props.onOpen();\n this.props.afterOpen();\n dom.addClass(wrapperNode, 'opened');\n overlayManager.addOverlay(this);\n });\n } else if (close) {\n this.props.onClose();\n this.props.afterClose();\n dom.removeClass(wrapperNode, 'opened');\n overlayManager.removeOverlay(this);\n }\n this.setFocusNode();\n }\n }\n\n componentWillUnmount() {\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\n getAnimation = (props) => {\n if (props.animation === false) {\n return false;\n }\n\n if (props.animation) {\n return props.animation;\n }\n\n return this.getAnimationByAlign(props.align);\n }\n\n getAnimationByAlign = (align) => {\n switch (align[0]) {\n case 't':\n return {\n in: 'fadeInDown',\n out: 'fadeOutUp',\n };\n case 'b':\n return {\n in: 'fadeInUp',\n out: 'fadeOutDown',\n };\n default:\n return {\n in: 'fadeInDown',\n out: 'fadeOutUp',\n };\n }\n }\n\n addAnimationEvents = () => {\n setTimeout(() => {\n const node = this.getContentNode();\n if (node) {\n const id = guid();\n\n this._animation = events.on(\n node,\n support.animation.end,\n this.handleAnimateEnd.bind(this, id),\n );\n\n const animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n const animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n const time = animationDelay + animationDuration;\n if (time) {\n this.timeoutMap[id] = setTimeout(() => {\n this.handleAnimateEnd(id);\n }, time * 1000 + 200);\n }\n }\n });\n }\n\n handlePosition = (config) => {\n const align = config.align.join(' ');\n\n if (!('animation' in this.props) && this.props.needAdjust && this.lastAlign !== align) {\n this.setState({\n animation: this.getAnimationByAlign(align),\n });\n }\n\n this.lastAlign = align;\n this.props.onPosition(config);\n }\n\n handleAnimateEnd = (id) => {\n if (this.timeoutMap[id]) {\n clearTimeout(this.timeoutMap[id]);\n }\n delete this.timeoutMap[id];\n\n if (this._animation) {\n this._animation.off();\n this._animation = null;\n }\n\n if (!this._isMounted) {\n return;\n }\n\n if (this.state.status === 'leaving') {\n this.setState({\n visible: false,\n status: 'none',\n });\n\n this.onLeaved();\n } else if (this.state.status === 'entering') {\n this.setState({\n status: 'none',\n });\n\n this.onEntered();\n }\n }\n\n enter = () => {\n this.setState(\n {\n visible: true,\n status: 'entering',\n },\n () => {\n // NOTE: setState callback (second argument) now fires immediately after componentDidMount / componentDidUpdate instead of after all components have rendered.\n setTimeout(() => {\n if (!this._isDestroyed) {\n this.onEntering();\n }\n });\n },\n );\n }\n\n leave = () => {\n this.setState({\n status: 'leaving',\n });\n\n this.onLeaving();\n }\n\n onEntering = () => {\n const wrapperNode = this.getWrapperNode();\n dom.addClass(wrapperNode, 'opened');\n this.props.onOpen();\n }\n\n onLeaving = () => {\n const wrapperNode = this.getWrapperNode();\n dom.removeClass(wrapperNode, 'opened');\n this.props.onClose();\n }\n\n onEntered = () => {\n overlayManager.addOverlay(this);\n this.setFocusNode();\n this.props.afterOpen();\n }\n\n onLeaved = () => {\n overlayManager.removeOverlay(this);\n this.setFocusNode();\n this.props.afterClose();\n }\n\n beforeOpen = () => {\n if (this.props.disableScroll) {\n if (modals.length === 0) {\n const style = {\n overflowY: 'hidden',\n };\n const { body } = document;\n bodyOverflowY = body.style.overflowY;\n if (hasScroll()) {\n bodyPaddingRight = body.style.paddingRight;\n style.paddingRight = `${dom.getStyle(body, 'paddingRight') + dom.scrollbar().width}px`;\n }\n\n dom.setStyle(body, style);\n }\n modals.push(this);\n }\n }\n\n beforeClose = () => {\n if (this.props.disableScroll) {\n const index = modals.indexOf(this);\n if (index > -1) {\n if (modals.length === 1) {\n const style = {\n overflowY: bodyOverflowY,\n };\n if (hasScroll()) {\n style.paddingRight = bodyPaddingRight;\n }\n\n dom.setStyle(document.body, style);\n\n bodyOverflowY = undefined;\n bodyPaddingRight = undefined;\n }\n\n modals.splice(index, 1);\n }\n }\n }\n\n setFocusNode = () => {\n if (!this.props.autoFocus) {\n return;\n }\n\n if (this.state.visible && !this._hasFocused) {\n saveLastFocusNode();\n // 这个时候很可能上一个弹层的关闭事件还未触发,导致焦点已经回到触发的元素\n // 这里延时处理一下,延时的时间为 document.click 捕获触发的延时时间\n this.focusTimeout = setTimeout(() => {\n const node = this.getContentNode();\n if (node) {\n const focusNodeList = getFocusNodeList(node);\n if (focusNodeList.length) {\n focusNodeList[0].focus();\n }\n this._hasFocused = true;\n }\n }, 100);\n } else if (!this.state.visible && this._hasFocused) {\n backLastFocusNode();\n this._hasFocused = false;\n }\n }\n\n getContent = () => {\n return this.contentRef;\n }\n\n getContentNode = () => {\n return findDOMNode(this.contentRef);\n }\n\n getWrapperNode = () => {\n return this.gatewayRef ? this.gatewayRef.getChildNode() : null;\n }\n\n addDocumentEvents = () => {\n if (this.props.canCloseByEsc) {\n this._keydownEvents = events.on(document, 'keydown', this.handleDocumentKeyDown);\n }\n if (this.props.canCloseByOutSideClick) {\n this._clickEvents = events.on(document, 'click', this.handleDocumentClick);\n\n this._touchEvents = events.on(document, 'touchend', this.handleDocumentClick);\n }\n }\n\n removeDocumentEvents = () => {\n if (this._keydownEvents) {\n this._keydownEvents.off();\n this._keydownEvents = null;\n }\n if (this._clickEvents) {\n this._clickEvents.off();\n this._clickEvents = null;\n }\n\n if (this._touchEvents) {\n this._touchEvents.off();\n this._touchEvents = null;\n }\n }\n\n handleDocumentKeyDown = (e) => {\n if (this.state.visible && e.keyCode === KEYCODE.ESC && overlayManager.isCurrentOverlay(this)) {\n this.props.onRequestClose('keyboard', e);\n }\n }\n\n handleDocumentClick = (e) => {\n if (this.state.visible) {\n const { safeNode } = this.props;\n const safeNodes = Array.isArray(safeNode) ? [...safeNode] : [safeNode];\n safeNodes.unshift(() => this.getWrapperNode());\n\n for (let i = 0; i < safeNodes.length; i++) {\n const node = findNode(safeNodes[i], this.props);\n // HACK: 如果触发点击的节点是弹层内部的节点,并且在被点击后立即销毁,那么此时无法使用 node.contains(e.target)\n // 来判断此时点击的节点是否是弹层内部的节点,额外判断\n if (\n node &&\n (node === e.target ||\n node.contains(e.target) ||\n (e.target !== document && !document.documentElement.contains(e.target)))\n ) {\n return;\n }\n }\n\n this.props.onRequestClose('docClick', e);\n }\n }\n\n handleMaskClick = (e) => {\n if (this.props.canCloseByMask) {\n this.props.onRequestClose('maskClick', e);\n }\n }\n\n saveContentRef = ref => {\n this.contentRef = ref;\n };\n\n saveGatewayRef = ref => {\n this.gatewayRef = ref;\n };\n\n // 兼容过去的用法: this.popupRef.getInstance().overlay.getInstance().getContentNode()\n getInstance = () => {\n return this;\n }\n\n render() {\n const {\n role,\n prefix,\n className,\n style,\n children: propChildren,\n needListenResize,\n target,\n align,\n offset,\n container,\n hasMask,\n needAdjust,\n beforePosition,\n wrapperStyle,\n rtl,\n shouldUpdatePosition: propShouldUpdatePosition,\n cache,\n wrapperClassName,\n onMaskMouseEnter,\n onMaskMouseLeave,\n } = this.props;\n const { visible: stateVisible, status, animation } = this.state;\n\n let children = stateVisible || cache ? propChildren : null;\n if (children) {\n let 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 = <div role=\"none\">{child}</div>;\n }\n const childClazz = classnames({\n [`${prefix}overlay-inner`]: true,\n [animation.in]: status === 'entering',\n [animation.out]: status === 'leaving',\n [child.props.className]: !!child.props.className,\n [className]: !!className,\n });\n if (typeof child.ref === 'string') {\n throw new Error('Can not set ref by string in Overlay, use function instead.');\n }\n\n children = React.cloneElement(child, {\n className: childClazz,\n style: { ...child.props.style, ...style },\n ref: makeChain(this.saveContentRef, child.ref),\n 'aria-hidden': !stateVisible && cache && this._isMounted,\n onClick: this.props.onClick,\n });\n\n if (align) {\n const shouldUpdatePosition = status === 'leaving' ? false : propShouldUpdatePosition;\n // role用于区分是否是tooltip,对于tooltip定位机制有特殊处理\n children = (\n <Position\n {...{\n role,\n container,\n visible: stateVisible,\n children,\n target,\n align,\n offset,\n needListenResize,\n needAdjust,\n beforePosition,\n onPosition: this.handlePosition,\n shouldUpdatePosition,\n rtl,\n }}\n />\n );\n }\n\n const wrapperClazz = classnames([`${prefix}overlay-wrapper`, wrapperClassName]);\n const newWrapperStyle = Object.assign(\n {},\n {\n display: stateVisible ? '' : 'none',\n },\n wrapperStyle,\n );\n\n children = (\n <div className={wrapperClazz} style={newWrapperStyle} dir={rtl ? 'rtl' : undefined}>\n {hasMask ? (\n <div\n className={`${prefix}overlay-backdrop`}\n onClick={this.handleMaskClick}\n onMouseEnter={onMaskMouseEnter}\n onMouseLeave={onMaskMouseLeave}\n dir={rtl ? 'rtl' : undefined}\n />\n ) : null}\n {children}\n </div>\n );\n }\n\n return <Gateway {...{ container, target, children }} ref={this.saveGatewayRef} />;\n }\n}\n","import React, { Component, Children } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { func, KEYCODE } from '../util';\nimport Overlay from './overlay';\n\nconst { noop, makeChain } = func;\n\n/**\n * Overlay.Popup\n * @description 继承 Overlay 的 API,除非特别说明\n * */\nexport default class Popup extends Component {\n static 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\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 * @param {Boolean} visible 弹层是否显示\n * @param {String} type 触发弹层显示或隐藏的来源 fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n * @param {Object} e DOM事件\n */\n onVisibleChange: PropTypes.func,\n /**\n * 设置此属性,弹层无法显示或隐藏\n */\n disabled: PropTypes.bool,\n /**\n * 弹层显示或隐藏的延时时间(以毫秒为单位),在 triggerType 被设置为 hover 时生效\n */\n delay: PropTypes.number,\n /**\n * trigger 是否可以关闭弹层\n */\n canCloseByTrigger: PropTypes.bool,\n /**\n * 弹层定位的参照元素\n * @default target 属性,即触发元素\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\n static defaultProps = {\n triggerType: 'hover',\n triggerClickKeycode: [KEYCODE.SPACE, KEYCODE.ENTER],\n defaultVisible: false,\n onVisibleChange: noop,\n disabled: false,\n delay: 200,\n canCloseByTrigger: true,\n followTrigger: false,\n container: () => document.body,\n rtl: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n visible: typeof props.visible === 'undefined' ? props.defaultVisible : props.visible,\n };\n this.overlay = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n componentWillUnmount() {\n ['_timer', '_hideTimer', '_showTimer'].forEach(time => {\n this[time] && clearTimeout(this[time]);\n });\n }\n\n // 获取overlay实例\n getOverlay = () => {\n return this.overlay;\n }\n\n handleVisibleChange = (visible, type, e) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n\n this.props.onVisibleChange(visible, type, e);\n }\n\n handleTriggerClick = (e) => {\n if (this.state.visible && !this.props.canCloseByTrigger) {\n return;\n }\n\n this.handleVisibleChange(!this.state.visible, 'fromTrigger', e);\n }\n\n handleTriggerKeyDown = (e) => {\n const { triggerClickKeycode } = this.props;\n const keycodes = Array.isArray(triggerClickKeycode)\n ? triggerClickKeycode\n : [triggerClickKeycode];\n if (keycodes.includes(e.keyCode)) {\n e.preventDefault();\n this.handleTriggerClick(e);\n }\n }\n\n handleTriggerMouseEnter = (e) => {\n this._mouseNotFirstOnMask = false;\n\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 = setTimeout(() => {\n this.handleVisibleChange(true, 'fromTrigger', e);\n }, this.props.delay);\n }\n }\n\n handleTriggerMouseLeave = (e, type) => {\n if (this._showTimer) {\n clearTimeout(this._showTimer);\n this._showTimer = null;\n }\n if (this.state.visible) {\n this._hideTimer = setTimeout(() => {\n this.handleVisibleChange(false, type || 'fromTrigger', e);\n }, this.props.delay);\n }\n }\n\n handleTriggerFocus = (e) => {\n this.handleVisibleChange(true, 'fromTrigger', e);\n }\n\n handleTriggerBlur = (e) => {\n if (!this._isForwardContent) {\n this.handleVisibleChange(false, 'fromTrigger', e);\n }\n this._isForwardContent = false;\n }\n\n handleContentMouseDown = () => {\n this._isForwardContent = true;\n }\n\n handleContentMouseEnter = () => {\n clearTimeout(this._hideTimer);\n }\n\n handleContentMouseLeave = (e) => {\n this.handleTriggerMouseLeave(e, 'fromContent');\n }\n\n handleMaskMouseEnter = () => {\n if (!this._mouseNotFirstOnMask) {\n clearTimeout(this._hideTimer);\n this._hideTimer = null;\n this._mouseNotFirstOnMask = false;\n }\n }\n\n handleMaskMouseLeave = () => {\n this._mouseNotFirstOnMask = true;\n }\n\n handleRequestClose = (type, e) => {\n this.handleVisibleChange(false, type, e);\n }\n\n renderTrigger = () => {\n const { trigger, disabled } = this.props;\n const props = {\n key: 'trigger',\n 'aria-haspopup': true,\n 'aria-expanded': this.state.visible,\n };\n\n if (!this.state.visible) {\n props['aria-describedby'] = undefined;\n }\n\n if (!disabled) {\n const { triggerType } = this.props;\n const triggerTypes = Array.isArray(triggerType) ? triggerType : [triggerType];\n const { onClick, onKeyDown, onMouseEnter, onMouseLeave, onFocus, onBlur } = trigger.props;\n triggerTypes.forEach(triggerType => {\n switch (triggerType) {\n case 'click':\n props.onClick = makeChain(this.handleTriggerClick, onClick);\n props.onKeyDown = makeChain(this.handleTriggerKeyDown, onKeyDown);\n break;\n case 'hover':\n props.onMouseEnter = makeChain(this.handleTriggerMouseEnter, onMouseEnter);\n props.onMouseLeave = makeChain(this.handleTriggerMouseLeave, onMouseLeave);\n break;\n case 'focus':\n props.onFocus = makeChain(this.handleTriggerFocus, onFocus);\n props.onBlur = makeChain(this.handleTriggerBlur, onBlur);\n break;\n default:\n break;\n }\n });\n }\n\n return React.cloneElement(trigger, props);\n }\n\n renderContent = () => {\n const { children, triggerType } = this.props;\n const triggerTypes = Array.isArray(triggerType) ? triggerType : [triggerType];\n const content = Children.only(children);\n const { onMouseDown, onMouseEnter, onMouseLeave } = content.props;\n const props = {\n key: 'portal',\n };\n\n triggerTypes.forEach(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\n return React.cloneElement(content, props);\n }\n\n renderPortal = () => {\n const {\n target,\n safeNode,\n followTrigger,\n triggerType,\n hasMask,\n wrapperStyle,\n ...others\n } = this.props;\n let { container } = this.props;\n const findTriggerNode = () => findDOMNode(this) || {};\n const safeNodes = Array.isArray(safeNode) ? [...safeNode] : [safeNode];\n safeNodes.unshift(findTriggerNode);\n\n const newWrapperStyle = wrapperStyle || {};\n\n if (followTrigger) {\n container = trigger => (trigger && trigger.parentNode) || trigger;\n newWrapperStyle.position = 'relative';\n }\n\n if (triggerType === 'hover' && hasMask) {\n others.onMaskMouseEnter = this.handleMaskMouseEnter;\n others.onMaskMouseLeave = this.handleMaskMouseLeave;\n }\n\n return (\n <Overlay\n {...others}\n key=\"overlay\"\n ref={overlay => { this.overlay = overlay; }}\n visible={this.state.visible}\n target={target || findTriggerNode}\n container={container}\n safeNode={safeNodes}\n wrapperStyle={newWrapperStyle}\n triggerType={triggerType}\n hasMask={hasMask}\n onRequestClose={this.handleRequestClose}\n >\n {this.renderContent()}\n </Overlay>\n );\n }\n\n render() {\n return [this.renderTrigger(), this.renderPortal()];\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Overlay from './overlay';\nimport Gateway from './gateway';\nimport Position from './position';\nimport Popup from './popup';\n\nOverlay.Gateway = Gateway;\nOverlay.Position = Position;\nOverlay.Popup = ConfigProvider.config(Popup, {\n exportNames: ['overlay'],\n});\n\nexport default ConfigProvider.config(Overlay, {\n exportNames: ['getContent', 'getContentNode'],\n});\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { func, obj } from '../util';\r\nimport Icon from '../icon';\r\nimport zhCN from '../locale/zh-cn';\r\nimport { normalMap, edgeMap } from './alignMap';\r\n\r\n/**\r\n * Created by xiachi on 17/2/10.\r\n */\r\n\r\nconst { noop } = func;\r\n\r\nclass BalloonInner extends React.Component {\r\n static contextTypes = {\r\n prefix: PropTypes.string,\r\n };\r\n\r\n static propTypes = {\r\n prefix: PropTypes.string,\r\n rtl: PropTypes.bool,\r\n closable: PropTypes.bool,\r\n children: PropTypes.any,\r\n className: PropTypes.string,\r\n alignEdge: PropTypes.bool,\r\n onClose: PropTypes.func,\r\n style: PropTypes.any,\r\n align: PropTypes.string,\r\n type: PropTypes.string,\r\n isTooltip: PropTypes.bool,\r\n locale: PropTypes.object,\r\n pure: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n prefix: 'next-',\r\n closable: true,\r\n onClose: noop,\r\n locale: zhCN.Balloon,\r\n align: 'b',\r\n type: 'normal',\r\n alignEdge: true,\r\n pure: false,\r\n };\r\n\r\n render() {\r\n const {\r\n prefix,\r\n closable,\r\n className,\r\n style,\r\n isTooltip,\r\n align,\r\n type,\r\n onClose,\r\n alignEdge,\r\n children,\r\n rtl,\r\n locale,\r\n ...others\r\n } = this.props;\r\n\r\n const alignMap = alignEdge ? edgeMap : normalMap;\r\n let _prefix = prefix;\r\n\r\n if (isTooltip) {\r\n _prefix = `${_prefix}balloon-tooltip`;\r\n } else {\r\n _prefix = `${_prefix}balloon`;\r\n }\r\n\r\n const classes = classNames({\r\n [`${_prefix}`]: true,\r\n [`${_prefix}-${type}`]: type,\r\n [`${_prefix}-medium`]: true,\r\n [`${_prefix}-${alignMap[align].arrow}`]: alignMap[align],\r\n [`${_prefix}-closable`]: closable,\r\n [className]: className,\r\n });\r\n\r\n return (\r\n <div\r\n role=\"tooltip\"\r\n aria-live=\"polite\"\r\n dir={rtl ? 'rtl' : undefined}\r\n className={classes}\r\n style={style}\r\n {...obj.pickOthers(Object.keys(BalloonInner.propTypes), others)}\r\n >\r\n {children}\r\n {closable ? (\r\n /* eslint no-script-url: 1 */\r\n <a\r\n role=\"button\"\r\n aria-label={locale.close}\r\n tabIndex=\"0\"\r\n href=\"javascript:;\"\r\n className={`${_prefix}-close`}\r\n onClick={onClose}\r\n >\r\n <Icon type=\"remove\" size=\"small\" />\r\n </a>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default BalloonInner;\r\n","import React from 'react';\n\nexport default function getDisabledCompatibleTrigger(element) {\n if (element.props.disabled) {\n const displayStyle =\n element.props.style && element.props.style.display\n ? element.props.style.display\n : 'inline-block';\n const child = React.cloneElement(element, {\n style: {\n ...element.props.style,\n pointerEvents: 'none',\n },\n });\n return (\n // eslint-disable-next-line\n <span style={{ display: displayStyle, cursor: 'not-allowed' }}>{child}</span>\n );\n }\n return element;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from '../overlay';\nimport { func, obj, log } from '../util';\nimport BalloonInner from './inner';\nimport { normalMap, edgeMap } from './alignMap';\nimport getDisabledCompatibleTrigger from './util';\n\nconst { noop } = func;\nconst { Popup } = Overlay;\n\nconst alignList = ['t', 'r', 'b', 'l', 'tl', 'tr', 'bl', 'br', 'lt', 'lb', 'rt', 'rb'];\n\nlet alignMap = normalMap;\n\n/** Balloon */\nexport default class Balloon extends React.Component {\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * 浮层的内容\n */\n children: PropTypes.any,\n size: PropTypes.string,\n /**\n * 样式类型\n */\n type: PropTypes.oneOf(['normal', 'primary']),\n /**\n * 弹层当前显示的状态\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认显示的状态\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层在显示和隐藏触发的事件\n * @param {Boolean} visible 弹层是否隐藏和显示\n * @param {String} type 触发弹层显示或隐藏的来源, closeClick 表示由自带的关闭按钮触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 弹出层对齐方式\n */\n alignEdge: PropTypes.bool,\n /**\n * 是否显示关闭按钮\n */\n closable: PropTypes.bool,\n /**\n * 弹出层位置\n * @enumdesc 上, 右, 下, 左, 上左, 上右, 下左, 下右, 左上, 左下, 右上, 右下 及其 两两组合\n */\n align: PropTypes.oneOf(alignList),\n /**\n * 弹层相对于trigger的定位的微调, 接收数组[hoz, ver], 表示弹层在 left / top 上的增量\n * e.g. [100, 100] 表示往右(RTL 模式下是往左) 、下分布偏移100px\n */\n offset: PropTypes.array,\n /**\n * 触发元素\n */\n trigger: PropTypes.any,\n /**\n * 触发行为\n * 鼠标悬浮, 鼠标点击('hover','click')或者它们组成的数组,如 ['hover', 'click'], 强烈不建议使用'focus',若弹窗内容有复杂交互请使用click\n */\n triggerType: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n\n onClick: PropTypes.func,\n /**\n * 任何visible为false时会触发的事件\n */\n onClose: PropTypes.func,\n onHover: PropTypes.func,\n /**\n * 是否进行自动位置调整\n */\n needAdjust: PropTypes.bool,\n /**\n * 弹层在触发以后的延时显示, 单位毫秒 ms\n */\n delay: PropTypes.number,\n /**\n * 浮层关闭后触发的事件, 如果有动画,则在动画结束后触发\n */\n afterClose: PropTypes.func,\n /**\n * 强制更新定位信息\n */\n shouldUpdatePosition: PropTypes.bool,\n /**\n * 弹层出现后是否自动focus到内部第一个元素\n */\n autoFocus: PropTypes.bool,\n /**\n * 安全节点:对于triggetType为click的浮层,会在点击除了浮层外的其它区域时关闭浮层.safeNode用于添加不触发关闭的节点, 值可以是dom节点的id或者是节点的dom对象\n */\n safeNode: PropTypes.string,\n /**\n * 用来指定safeNode节点的id,和safeNode配合使用\n */\n safeId: PropTypes.string,\n /**\n * 配置动画的播放方式\n * @param {String} in 进场动画\n * @param {String} out 出场动画\n */\n animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n\n /**\n * 弹层的dom节点关闭时是否删除\n */\n cache: PropTypes.bool,\n /**\n * 指定浮层渲染的父节点, 可以为节点id的字符串,也可以返回节点的函数。\n */\n popupContainer: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n container: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * 弹层组件style,透传给Popup\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层组件className,透传给Popup\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层组件属性,透传给Popup\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 弹层id, 传入值才会支持无障碍\n */\n id: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n type: 'normal',\n closable: true,\n defaultVisible: false,\n size: 'medium',\n alignEdge: true,\n align: 'b',\n offset: [0, 0],\n trigger: <span />,\n onClose: noop,\n afterClose: noop,\n onVisibleChange: noop,\n needAdjust: true,\n triggerType: 'hover',\n safeNode: undefined,\n safeId: null,\n autoFocus: true,\n animation: {\n in: 'zoomIn',\n out: 'zoomOut',\n },\n cache: false,\n popupStyle: {},\n popupClassName: '',\n popupProps: {},\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n align: alignList.includes(props.align) ? props.align : 'b',\n visible: 'visible' in props ? props.visible : props.defaultVisible,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n\n if ('align' in nextProps && alignList.includes(nextProps.align)) {\n this.setState({\n align: nextProps.align,\n });\n }\n }\n\n _onVisibleChange = (visible, trigger) => {\n // Not Controlled\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n\n this.props.onVisibleChange(visible, trigger);\n\n if (!visible) {\n this.props.onClose();\n }\n };\n\n _onClose = e => {\n this._onVisibleChange(false, 'closeClick');\n\n // 必须加上preventDefault,否则单测IE下报错,出现full page reload 异常\n e.preventDefault();\n };\n\n _onPosition = res => {\n const { rtl } = this.props;\n alignMap = this.props.alignEdge ? edgeMap : normalMap;\n const newAlign = res.align.join(' ');\n let resAlign;\n\n let alignKey = 'align';\n if (rtl) {\n alignKey = 'rtlAlign';\n }\n\n for (const key in alignMap) {\n if (alignMap[key][alignKey] === newAlign) {\n resAlign = key;\n\n break;\n }\n }\n\n resAlign = resAlign || this.state.align;\n if (resAlign !== this.state.align) {\n this.setState({\n align: resAlign,\n });\n }\n };\n\n render() {\n const {\n id,\n type,\n prefix,\n className,\n alignEdge,\n trigger,\n triggerType,\n children,\n closable,\n shouldUpdatePosition,\n delay,\n needAdjust,\n safeId,\n autoFocus,\n safeNode,\n onClick,\n onHover,\n animation,\n offset,\n style,\n container,\n popupContainer,\n cache,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n rtl,\n ...others\n } = this.props;\n\n if (container) {\n log.deprecated('container', 'popupContainer', 'Balloon');\n }\n\n const { align } = this.state;\n\n alignMap = alignEdge ? edgeMap : normalMap;\n const _prefix = this.context.prefix || prefix;\n\n let trOrigin = 'trOrigin';\n if (rtl) {\n trOrigin = 'rtlTrOrigin';\n }\n\n const _offset = [alignMap[align].offset[0] + offset[0], alignMap[align].offset[1] + offset[1]];\n const transformOrigin = alignMap[align][trOrigin];\n const _style = { ...{ transformOrigin }, ...style };\n\n const content = (\n <BalloonInner\n {...obj.pickOthers(Object.keys(Balloon.propTypes), others)}\n id={id}\n prefix={_prefix}\n closable={closable}\n onClose={this._onClose}\n className={className}\n style={_style}\n align={align}\n type={type}\n rtl={rtl}\n alignEdge={alignEdge}\n >\n {children}\n </BalloonInner>\n );\n\n const triggerProps = {};\n triggerProps['aria-describedby'] = id;\n triggerProps.tabIndex = '0';\n\n const ariaTrigger = id ? React.cloneElement(trigger, triggerProps) : trigger;\n\n const newTrigger = getDisabledCompatibleTrigger(\n React.isValidElement(ariaTrigger) ? ariaTrigger : <span>{ariaTrigger}</span>,\n );\n\n return (\n <Popup\n {...popupProps}\n followTrigger={followTrigger}\n trigger={newTrigger}\n cache={cache}\n safeId={safeId}\n triggerType={triggerType}\n align={alignMap[align].align}\n offset={_offset}\n visible={this.state.visible}\n onPosition={this._onPosition}\n onClick={onClick}\n onHover={onHover}\n afterClose={this.props.afterClose}\n onVisibleChange={this._onVisibleChange}\n shouldUpdatePosition={shouldUpdatePosition}\n needAdjust={needAdjust}\n animation={animation}\n delay={delay}\n autoFocus={triggerType === 'focus' ? false : autoFocus}\n safeNode={safeNode}\n container={popupContainer || container}\n className={popupClassName}\n style={popupStyle}\n rtl={rtl}\n >\n {content}\n </Popup>\n );\n }\n}\n","import React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../../icon';\n\nfunction mapIconSize(size) {\n return {\n large: 'large',\n medium: 'medium',\n small: 'medium',\n xs: 'medium',\n }[size];\n}\n\n/** Button */\nexport default class Button extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 按钮的类型\n */\n type: PropTypes.oneOf(['primary', 'secondary', 'normal']),\n /**\n * 按钮的尺寸\n */\n size: PropTypes.oneOf(['xs', 'small', 'medium', 'large']),\n /**\n * 按钮中 Icon 的尺寸,用于替代 Icon 的默认大小\n */\n iconSize: PropTypes.oneOf(['xs', 'small', 'medium', 'large', 'xl', 'xxl', 'xxxl']),\n /**\n * 当 component = 'button' 时,设置 button 标签的 type 值\n */\n htmlType: PropTypes.oneOf(['submit', 'reset', 'button']),\n /**\n * 设置标签类型\n */\n component: PropTypes.oneOf(['button', 'a', 'div', 'span']),\n /**\n * 设置按钮的载入状态\n */\n loading: PropTypes.bool,\n /**\n * 是否为幽灵按钮\n */\n ghost: PropTypes.oneOf([true, false, 'light', 'dark']),\n /**\n * 是否为文本按钮\n */\n text: PropTypes.bool,\n /**\n * 是否为警告按钮\n */\n warning: PropTypes.bool,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 点击按钮的回调\n * @param {Object} e Event Object\n */\n onClick: PropTypes.func,\n className: PropTypes.string,\n onMouseUp: PropTypes.func,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n prefix: 'next-',\n type: 'normal',\n size: 'medium',\n htmlType: 'button',\n component: 'button',\n loading: false,\n ghost: false,\n text: false,\n warning: false,\n disabled: false,\n onClick: () => {},\n };\n\n onMouseUp = e => {\n this.button.blur();\n\n if (this.props.onMouseUp) {\n this.props.onMouseUp(e);\n }\n };\n\n buttonRefHandler = button => {\n this.button = button;\n };\n\n render() {\n const {\n prefix,\n className,\n type,\n size,\n htmlType,\n loading,\n text,\n warning,\n ghost,\n component,\n iconSize,\n children,\n rtl,\n ...others\n } = this.props;\n const ghostType = ['light', 'dark'].indexOf(ghost) >= 0 ? ghost : 'dark';\n\n const btnCls = classNames({\n [`${prefix}btn`]: true,\n [`${prefix}${size}`]: size,\n [`${prefix}btn-${type}`]: type && !ghost,\n [`${prefix}btn-text`]: text,\n [`${prefix}btn-warning`]: warning,\n [`${prefix}btn-loading`]: loading,\n [`${prefix}btn-ghost`]: ghost,\n [`${prefix}btn-${ghostType}`]: ghost,\n [className]: className,\n });\n\n const count = Children.count(children);\n const clonedChildren = Children.map(children, (child, index) => {\n if (child && typeof child.type === 'function' && child.type._typeMark === 'icon') {\n const iconCls = classNames({\n [`${prefix}btn-icon`]: !iconSize, // 如果用户没有传 iconSize,则使用该样式标记 icon 为 button 预设尺寸\n [`${prefix}icon-first`]: count > 1 && index === 0,\n [`${prefix}icon-last`]: count > 1 && index === count - 1,\n [`${prefix}icon-alone`]: count === 1,\n [child.props.className]: !!child.props.className,\n });\n return React.cloneElement(child, {\n className: iconCls,\n size: iconSize || mapIconSize(size),\n });\n }\n\n // 两个字的中文中间添加间距\n // if (count === 1 && typeof child === 'string' && /^[\\u4e00-\\u9fa5]{2}$/.test(child)) {\n // return <>{child[0]}<span className={`${prefix}btn-space`} />{child[1]}</>;\n // }\n\n return child;\n });\n\n const TagName = component;\n const tagAttrs = {\n ...others,\n type: htmlType,\n className: btnCls,\n };\n\n if (TagName !== 'button') {\n delete tagAttrs.type;\n\n if (tagAttrs.disabled) {\n delete tagAttrs.onClick; // a 标签的 onClick 浏览器默认不会禁用\n tagAttrs.href && delete tagAttrs.href; // a 标签在禁用状态下无跳转\n }\n }\n\n return (\n <TagName\n {...tagAttrs}\n dir={rtl ? 'rtl' : undefined}\n onMouseUp={this.onMouseUp}\n ref={this.buttonRefHandler}\n >\n <span className={`${prefix}btn-children`}>{clonedChildren}</span>\n {loading ? <span className={`${prefix}btn-loading-container`}><Icon type=\"loading\" size={iconSize || mapIconSize(size)} /></span> : null}\n </TagName>\n );\n }\n}\n","import React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { obj } from '../../util';\nimport ConfigProvider from '../../config-provider';\n\n/**\n * Button.Group\n */\nclass ButtonGroup extends Component {\n static propTypes = {\n rtl: PropTypes.bool,\n prefix: PropTypes.string,\n /**\n * 统一设置 Button 组件的按钮大小\n */\n size: PropTypes.string,\n className: PropTypes.string,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n };\n\n render() {\n const { prefix, className, size, children, rtl, ...others } = this.props;\n\n const groupCls = classNames({\n [`${prefix}btn-group`]: true,\n [className]: className,\n });\n\n const cloneChildren = Children.map(children, child => {\n if (child) {\n return React.cloneElement(child, {\n size,\n });\n }\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n return (\n <div {...obj.pickAttrs(others)} className={groupCls}>\n {cloneChildren}\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(ButtonGroup);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../../config-provider';\nimport { obj } from '../../util';\n\nimport Icon from '../../icon';\n\n/**\n * Button.Icon\n */\nclass IconButton extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 图标按钮的图标名字\n */\n name: PropTypes.string,\n /**\n * 图标按钮的图标类型\n */\n type: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * 当 component = 'button' 时,设置 button 标签的 type 值\n */\n htmlType: PropTypes.oneOf(['submit', 'reset', 'button']),\n /**\n * 设置标签类型\n */\n component: PropTypes.oneOf(['button', 'a', 'div', 'span']),\n /**\n * 统一设置 Button 组件的按钮大小\n */\n size: PropTypes.oneOf(['medium', 'large']),\n /**\n * 图标按钮的图标颜色\n */\n color: PropTypes.oneOf(['default', 'gray']),\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 点击按钮的回调\n * @param {Object} e Event Object\n */\n onClick: PropTypes.func,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n htmlType: 'button',\n component: 'button',\n type: 'primary',\n color: 'default',\n disabled: false,\n onClick: () => {},\n };\n\n onClick = (e) => {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n this.props.onClick(e);\n };\n\n render() {\n const { prefix, className, size, htmlType, component, type, name, color, disabled, children } = this.props;\n\n const groupCls = classNames(`${prefix}iconbtn`, {\n [`${prefix}iconbtn-${type}`]: type,\n [`${prefix}iconbtn-${size}`]: size,\n [`${prefix}iconbtn-${color}`]: color,\n disabled,\n [className]: className,\n });\n\n const TagName = component;\n const tagAttrs = {\n ...this.props,\n type: htmlType,\n className: groupCls,\n };\n\n if (TagName !== 'button') {\n delete tagAttrs.type;\n }\n\n return (\n <TagName {...obj.pickAttrs(tagAttrs)} onClick={this.onClick}>\n {name ? <Icon type={name} size={size} /> : children}\n </TagName>\n );\n }\n}\n\nexport default ConfigProvider.config(IconButton);\n","import ConfigProvider from '../config-provider';\nimport Button from './view/button';\nimport ButtonGroup from './view/group';\nimport IconButton from './view/icon';\n\nButton.Group = ButtonGroup;\nButton.Icon = IconButton;\n\nexport default ConfigProvider.config(Button, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('shape' in props) {\n deprecated('shape', 'text | warning | ghost', 'Button');\n\n const { shape, type, ...others } = props;\n\n let newType = type;\n if (type === 'light' || type === 'dark' || (type === 'secondary' && shape === 'warning')) {\n newType = 'normal';\n }\n\n let ghost;\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\n const text = shape === 'text';\n const warning = shape === 'warning';\n\n props = { type: newType, ghost, text, warning, ...others };\n }\n\n return props;\n },\n});\n","/* eslint-disable react/prop-types */\r\n/* eslint-disable react/forbid-prop-types */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cls from 'classnames';\r\nimport ConfigProvider from '../config-provider';\r\nimport nextLocale from '../locale/zh-cn';\r\nimport Balloon from './balloon';\r\nimport Icon from '../icon';\r\nimport Button from '../button';\r\n\r\nconst iconMap = {\r\n info: 'info-o-fill',\r\n success: 'info-o-fill',\r\n warning: 'warning-o-fill',\r\n danger: 'remove-o-fill',\r\n};\r\n\r\nconst noop = () => {};\r\n\r\nclass PopConfirm extends React.Component {\r\n static displayName = 'PopConfirm';\r\n\r\n static propTypes = {\r\n prefix: PropTypes.string,\r\n locale: PropTypes.object,\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n type: PropTypes.oneOf(['info', 'warning', 'success', 'danger']),\r\n align: Balloon.propTypes.align,\r\n alignEdge: PropTypes.bool,\r\n icon: PropTypes.node,\r\n title: PropTypes.node,\r\n content: PropTypes.node,\r\n footer: PropTypes.bool,\r\n confirmProps: PropTypes.object,\r\n cancelProps: PropTypes.object,\r\n onConfirm: PropTypes.func,\r\n onCancel: PropTypes.func,\r\n defaultVisible: PropTypes.bool,\r\n visible: PropTypes.bool,\r\n onVisibleChange: PropTypes.func,\r\n offset: PropTypes.array,\r\n trigger: PropTypes.node.isRequired,\r\n triggerType: PropTypes.oneOf(['hover', 'click']),\r\n needAdjust: PropTypes.bool,\r\n shouldUpdatePosition: PropTypes.bool,\r\n safeNode: PropTypes.string,\r\n safeId: PropTypes.string,\r\n animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\r\n cache: PropTypes.bool,\r\n popupContainer: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\r\n popupStyle: PropTypes.object,\r\n popupClassName: PropTypes.string,\r\n popupProps: PropTypes.object,\r\n followTrigger: PropTypes.bool,\r\n id: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n prefix: 'next-',\r\n size: 'medium',\r\n locale: nextLocale.Balloon,\r\n type: 'info',\r\n align: 'b',\r\n alignEdge: true,\r\n footer: true,\r\n confirmProps: {},\r\n cancelProps: {},\r\n onConfirm: noop,\r\n onCancel: noop,\r\n defaultVisible: false,\r\n onVisibleChange: noop,\r\n offset: [0, 0],\r\n triggerType: 'hover',\r\n needAdjust: true,\r\n animation: { in: 'zoomIn', out: 'zoomOut' },\r\n cache: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n visible: props.visible || props.defaultVisible,\r\n };\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n if (nextProps.visible !== this.props.visible) {\r\n this.setState({\r\n visible: nextProps.visible,\r\n });\r\n }\r\n }\r\n\r\n onVisibleChange = visible => {\r\n if (!('visible' in this.props)) {\r\n this.setState({\r\n visible,\r\n });\r\n }\r\n this.props.onVisibleChange(visible);\r\n };\r\n\r\n renderIcon = () => {\r\n const { type, icon } = this.props;\r\n return (\r\n <div\r\n className={cls({ 'pop-confirm-icon-area': true, [`pop-confirm-icon-area-${type}`]: type })}\r\n >\r\n {icon || <Icon type={iconMap[type] || iconMap.info} />}\r\n </div>\r\n );\r\n };\r\n\r\n renderTitleAndContent = () => {\r\n const { title, content, footer } = this.props;\r\n return (\r\n <div\r\n className={cls({\r\n 'title-content-area': true,\r\n 'title-content-area-no-footer': !footer,\r\n })}\r\n >\r\n {title ? <div className=\"title-area\">{title}</div> : null}\r\n {\r\n <div\r\n className={cls({\r\n 'content-area': true,\r\n 'content-area-no-title': !title,\r\n })}\r\n >\r\n {content}\r\n </div>\r\n }\r\n </div>\r\n );\r\n };\r\n\r\n renderFooter = () => {\r\n const { type, locale, footer, confirmProps, cancelProps, onConfirm, onCancel } = this.props;\r\n return footer ? (\r\n <div className=\"footer-area\">\r\n <Button {...cancelProps} onClick={onCancel} type=\"normal\" size=\"small\">\r\n {locale.cancel}\r\n </Button>\r\n <Button {...confirmProps} onClick={onConfirm} type=\"primary\" warning={type === 'danger'} size=\"small\">\r\n {locale.confirm}\r\n </Button>\r\n </div>\r\n ) : null;\r\n };\r\n\r\n render() {\r\n const {\r\n prefix,\r\n size,\r\n trigger,\r\n align,\r\n alignEdge,\r\n offset,\r\n triggerType,\r\n needAdjust,\r\n shouldUpdatePosition,\r\n safeNode,\r\n safeId,\r\n animation,\r\n cache,\r\n popupContainer,\r\n popupStyle,\r\n popupClassName,\r\n popupProps,\r\n followTrigger,\r\n id,\r\n } = this.props;\r\n const { visible } = this.state;\r\n return (\r\n <Balloon\r\n autoFocus={false}\r\n closable={false}\r\n popupClassName={cls(\r\n {\r\n [`${prefix}pop-confirm`]: true,\r\n [`${prefix}pop-confirm-${size}`]: true,\r\n },\r\n popupClassName,\r\n )}\r\n prefix={prefix}\r\n visible={visible}\r\n onVisibleChange={this.onVisibleChange}\r\n align={align}\r\n alignEdge={alignEdge}\r\n offset={offset}\r\n trigger={trigger}\r\n triggerType={triggerType}\r\n needAdjust={needAdjust}\r\n shouldUpdatePosition={shouldUpdatePosition}\r\n safeNode={safeNode}\r\n safeId={safeId}\r\n animation={animation}\r\n cache={cache}\r\n popupContainer={popupContainer}\r\n popupStyle={popupStyle}\r\n popupProps={popupProps}\r\n followTrigger={followTrigger}\r\n id={id}\r\n >\r\n <div className={`${prefix}pop-confirm-container`}>\r\n {this.renderIcon()}\r\n {this.renderTitleAndContent()}\r\n {this.renderFooter()}\r\n </div>\r\n </Balloon>\r\n );\r\n }\r\n}\r\n\r\nexport default ConfigProvider.config(PopConfirm);\r\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from '../overlay';\nimport BalloonInner from './inner';\nimport { edgeMap as alignMap } from './alignMap';\nimport getDisabledCompatibleTrigger from './util';\n\nconst { Popup } = Overlay;\n\n/** Balloon.Tooltip */\nexport default class Tooltip extends React.Component {\n static propTypes = {\n /**\n * 样式类名的品牌前缀\n */\n prefix: PropTypes.string,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内联样式\n */\n style: PropTypes.object,\n /**\n * 类型\n */\n type: PropTypes.oneOf(['normal', 'primary']),\n /**\n * tooltip的内容\n */\n children: PropTypes.any,\n /**\n * 弹出层位置\n * @enumdesc 上, 右, 下, 左, 上左, 上右, 下左, 下右, 左上, 左下, 右上, 右下 及其 两两组合\n */\n align: PropTypes.oneOf(['t', 'r', 'b', 'l', 'tl', 'tr', 'bl', 'br', 'lt', 'lb', 'rt', 'rb']),\n /**\n * 触发元素\n */\n trigger: PropTypes.any,\n /**\n * 触发行为\n * 鼠标悬浮, 鼠标点击('hover', 'click')或者它们组成的数组,如 ['hover', 'click'], 强烈不建议使用'focus',若有复杂交互,推荐使用triggerType为click的Balloon组件\n */\n triggerType: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 弹层组件style,透传给Popup\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层组件className,透传给Popup\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层组件属性,透传给Popup\n */\n popupProps: PropTypes.object,\n /**\n * 是否pure render\n */\n pure: PropTypes.bool,\n /**\n * 指定浮层渲染的父节点, 可以为节点id的字符串,也可以返回节点的函数。\n */\n popupContainer: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 弹层id, 传入值才会支持无障碍\n */\n id: PropTypes.string,\n };\n\n static defaultProps = {\n type: 'primary',\n triggerType: 'hover',\n prefix: 'next-',\n align: 'b',\n trigger: <span />,\n };\n\n constructor(props) {\n super(props);\n const expectedAlign = alignMap[props.align][props.rlt ? 'rtlAlign' : 'align'];\n this.state = {\n expectedAlign,\n };\n }\n\n // 通过overylay的align可选值、alignMap、dir获取toolotip align的简写值\n getSimpleAlign = (expectedAlign, rtl) => {\n const simpleKeys = Object.keys(alignMap);\n if (rtl) {\n return simpleKeys.find(k => alignMap[k].rtlAlign === expectedAlign);\n }\n return simpleKeys.find(k => alignMap[k].align === expectedAlign);\n }\n\n onPosition = (...args) => {\n if (this.state.expectedAlign !== args[0].align.join(' ')) {\n const expectedAlign = args[0].align.join(' ');\n this.setState({\n expectedAlign,\n });\n this.props.onPosition && this.props.onPosition(...args);\n }\n }\n\n render() {\n const {\n id,\n type,\n className,\n align,\n style,\n prefix,\n trigger,\n children,\n popupContainer,\n popupProps,\n popupClassName,\n popupStyle,\n followTrigger,\n triggerType,\n autoFocus,\n rtl,\n ...others\n } = this.props;\n\n let trOrigin = 'trOrigin';\n if (rtl) {\n others.rtl = true;\n trOrigin = 'rtlTrOrigin';\n }\n // 开启对齐方式的自适应调整\n const simpleAlign = this.getSimpleAlign(this.state.expectedAlign, rtl);\n const transformOrigin = alignMap[simpleAlign][trOrigin];\n const _offset = alignMap[simpleAlign].offset;\n const _style = { transformOrigin, ...style };\n const content = (\n <BalloonInner\n {...others}\n id={id}\n prefix={prefix}\n closable={false}\n type={type}\n isTooltip\n className={className}\n style={_style}\n align={simpleAlign}\n rtl={rtl}\n >\n <span className={`${prefix}balloon-tooltip-content`}>{children}</span>\n </BalloonInner>\n );\n\n const triggerProps = {};\n triggerProps['aria-describedby'] = id;\n triggerProps.tabIndex = '0';\n\n let newTriggerType = triggerType;\n\n if (triggerType === 'hover' && id) {\n newTriggerType = ['focus', 'hover'];\n }\n\n const ariaTrigger = id ? React.cloneElement(trigger, triggerProps) : trigger;\n\n const newTrigger = getDisabledCompatibleTrigger(\n React.isValidElement(ariaTrigger) ? ariaTrigger : <span>{ariaTrigger}</span>,\n );\n\n // 不能采用有transform: scale相关的动画,因node.offsetWidth获取的值不精确,\n // 是四舍五入的,而node.getBoundingClientRect()获取的值虽然精确,但是值是视觉大小的\n // 受scale影响\n return (\n <Popup\n role=\"tooltip\"\n container={popupContainer}\n followTrigger={followTrigger}\n trigger={newTrigger}\n triggerType={newTriggerType}\n align={this.state.expectedAlign}\n offset={_offset}\n delay={300}\n className={popupClassName}\n style={popupStyle}\n rtl={rtl}\n autoFocus={triggerType === 'focus' ? false : autoFocus}\n shouldUpdatePosition\n needAdjust\n {...popupProps}\n onPosition={this.onPosition}\n animation={{\n in: 'fadeIn',\n out: 'fadeOut',\n }}\n >\n {content}\n </Popup>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Balloon from './balloon';\nimport PopConfirm from './pop-confirm';\nimport Tooltip from './tooltip';\nimport Inner from './inner';\nimport { log } from '../util';\n\nBalloon.Tooltip = ConfigProvider.config(Tooltip, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('text' in props) {\n deprecated('text', 'children', 'Tooltip');\n const { text, ...others } = props;\n props = { children: text, ...others };\n }\n\n return props;\n },\n});\nBalloon.Inner = Inner;\nBalloon.PopConfirm = PopConfirm;\n\nexport default ConfigProvider.config(Balloon, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if (props.alignment) {\n deprecated('alignment', 'alignEdge', 'Balloon');\n const { alignment, ...others } = props;\n props = { alignEdge: alignment === 'edge', ...others };\n }\n if (props.onCloseClick) {\n deprecated('onCloseClick', 'onVisibleChange(visible, [type = \"closeClick\"])', 'Balloon');\n const { onCloseClick, onVisibleChange, ...others } = props;\n const newOnVisibleChange = (visible, type) => {\n if (type === 'closeClick') {\n onCloseClick();\n }\n if (onVisibleChange) {\n onVisibleChange(visible, type);\n }\n };\n props = { onVisibleChange: newOnVisibleChange, ...others };\n }\n\n if ('triggerType' in props) {\n const triggerType = Array.isArray(props.triggerType)\n ? [...props.triggerType]\n : [props.triggerType];\n\n if (triggerType.indexOf('focus') > -1) {\n log.warning(\n 'triggerType[focus] is deprecated at [Balloon], use triggerType[hover, click] instead of it. If focus is desired maybe you should use [Balloon.Tooltip]',\n );\n }\n }\n\n return props;\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport ConfigProvider from '../../config-provider';\nimport Balloon from '../../balloon';\nimport Icon from '../../icon';\n\nconst { Tooltip } = Balloon;\n\nclass ClusterItem extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n data: PropTypes.shape({\n img: PropTypes.string,\n text: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n }).isRequired,\n colorSets: PropTypes.arrayOf(PropTypes.string),\n onClose: PropTypes.func,\n onClick: PropTypes.func,\n }\n\n static defaultProps = {\n prefix: 'next-',\n onClose: () => {},\n onClick: () => {},\n }\n\n constructor(props) {\n super(props);\n this.state = {\n hoverClose: false,\n };\n }\n\n getBgColor = () => {\n const { data, colorSets } = this.props;\n const { text } = data;\n if (typeof text !== 'string' || colorSets.length === 0 || colorSets.length === 1) {\n return '#289ED3';\n }\n const charCode = text.charCodeAt(0);\n const len = colorSets.length;\n const index = charCode % len;\n return colorSets[index];\n }\n\n onHoverClose = () => {\n this.setState({\n hoverClose: true,\n });\n }\n\n onLeaveClose = () => {\n this.setState({\n hoverClose: false,\n });\n }\n\n onClose = (e) => {\n const { onClose, data } = this.props;\n e.stopPropagation();\n onClose(data);\n }\n\n onClick = () => {\n const { onClick, data } = this.props;\n onClick(data);\n }\n\n render() {\n const { prefix, data } = this.props;\n const { img, text } = data;\n const { hoverClose } = this.state;\n return (\n <Tooltip\n trigger={\n <div\n className={cls({\n [`${prefix}avatar-cluster-item`]: true,\n [`${prefix}avatar-cluster-item-hover-close`]: hoverClose,\n })}\n onClick={this.onClick}\n >\n {\n img ? <img className={`${prefix}avatar-cluster-item-img`} src={img} />\n : <span className={`${prefix}avatar-cluster-item-text`} style={{ background: this.getBgColor() }}><span className=\"scale\">{text.slice(0, 2)}</span></span>\n }\n <Icon\n type=\"remove-o-fill\"\n size=\"small\"\n className={`${prefix}avatar-cluster-item-close`}\n onClick={this.onClose}\n onMouseEnter={this.onHoverClose}\n onMouseLeave={this.onLeaveClose}\n />\n </div>\n }\n >\n {text}\n </Tooltip>\n );\n }\n}\n\nexport default ConfigProvider.config(ClusterItem);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport Item from './cluster-item';\nimport ConfigProvider from '../../config-provider';\nimport Icon from '../../icon';\nimport { obj } from '../../util';\n\n// 头像群\nclass ClusterAvatar extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n dataSource: PropTypes.arrayOf(PropTypes.shape({\n img: PropTypes.string,\n text: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n })),\n colorSets: PropTypes.arrayOf(PropTypes.string),\n onSelect: PropTypes.func,\n onClose: PropTypes.func,\n onAdd: PropTypes.func,\n }\n\n static defaultProps = {\n prefix: 'next-',\n dataSource: [],\n colorSets: ['#BC61CF', '#F26666', '#F29A52', '#F4C329', '#CBD057', '#289ED3', '#29B3F0'],\n onSelect: () => {},\n onClose: () => {},\n onAdd: () => {},\n }\n\n render() {\n const {\n prefix,\n dataSource,\n colorSets,\n style,\n className,\n onSelect,\n onClose,\n onAdd,\n ...others\n } = this.props;\n return (\n <div\n style={style}\n className={cls({\n [`${prefix}avatar-cluster`]: true,\n [className]: !!className,\n })}\n {...obj.pickAttrs(others)}\n >\n {\n dataSource.map(d => <Item key={d.id} data={d} colorSets={colorSets} onClick={onSelect} onClose={onClose} />)\n }\n <Icon\n type=\"plus-o-fill\"\n size=\"xl\"\n className={`${prefix}avatar-cluster-add`}\n onClick={onAdd}\n />\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(ClusterAvatar);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport ConfigProvider from '../../config-provider';\nimport Balloon from '../../balloon';\nimport Icon from '../../icon';\nimport { obj } from '../../util';\n\nconst { Tooltip } = Balloon;\n\nclass GroupAvatar extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n colorSets: PropTypes.arrayOf(PropTypes.string),\n dataSource: PropTypes.arrayOf(PropTypes.shape({\n img: PropTypes.string,\n text: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n })),\n onClickMore: PropTypes.func,\n }\n\n static defaultProps = {\n prefix: 'next-',\n dataSource: [],\n colorSets: ['#BC61CF', '#F26666', '#F29A52', '#F4C329', '#CBD057', '#289ED3', '#29B3F0'],\n onClickMore: () => {},\n }\n\n getBgColor = (text, colorSets) => {\n if (typeof text !== 'string' || colorSets.length === 0 || colorSets.length === 1) {\n return '#289ED3';\n }\n const charCode = text.charCodeAt(0);\n const len = colorSets.length;\n const index = charCode % len;\n return colorSets[index];\n }\n\n render() {\n const {\n prefix,\n dataSource,\n colorSets,\n style,\n className,\n onClickMore,\n ...others\n } = this.props;\n const needMore = dataSource.length > 4;\n return (\n <div\n style={style}\n className={cls({\n [`${prefix}avatar-group`]: true,\n [className]: !!className,\n })}\n {...obj.pickAttrs(others)}\n >\n {\n dataSource.slice(0, 4).map((d, index) => (\n <Tooltip\n key={d.id}\n trigger={\n d.img ?\n <img\n src={d.img}\n className={cls({\n [`${prefix}avatar-group-img`]: true,\n [`${prefix}avatar-group-last`]: index === 3,\n })}\n />\n :\n <span\n className={cls({\n [`${prefix}avatar-group-text`]: true,\n [`${prefix}avatar-group-last`]: index === 3,\n })}\n style={{ background: this.getBgColor(d.text, colorSets) }}\n >\n <span className=\"scale\">{d.text.slice(0, 2)}</span>\n </span>\n }\n >\n {d.text}\n </Tooltip>\n ))\n }\n {\n needMore ? <Icon type=\"more\" size=\"large\" onClick={onClickMore} className={`${prefix}avatar-group-more`} /> : null\n }\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(GroupAvatar);\n","import Avatar from './view/avatar';\nimport TextAvatar from './view/text';\nimport ImageAvatar from './view/image';\nimport ClusterAvatar from './view/cluster';\nimport GroupAvatar from './view/group';\n\nAvatar.TextAvatar = TextAvatar;\nAvatar.ImageAvatar = ImageAvatar;\nAvatar.ClusterAvatar = ClusterAvatar;\nAvatar.GroupAvatar = GroupAvatar;\n\nexport default Avatar;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Animate from '../animate';\nimport { support, dom } from '../util';\n\n/**\n * badge sup component\n */\n\n// util::getDigitArray\nconst getDigitArray = num => num\n .toString()\n .split('')\n .reverse()\n .map(i => parseInt(i, 10));\n\nexport default class Sup extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n count: PropTypes.number,\n showZero: PropTypes.bool,\n overflowCount: PropTypes.number,\n content: PropTypes.node,\n dot: PropTypes.bool,\n noTransition: PropTypes.bool, // 是否显示滚动动画,tabs 中的 badge 默认不显示\n style: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n count: 0,\n showZero: false,\n overflowCount: 99,\n dot: false,\n noTransition: false,\n };\n\n // 单排可滚动的数字列表\n static renderDigit(prefix, digit, key) {\n const children = [];\n for (let i = 0; i < 30; i++) {\n children.push(<span key={i}>{i % 10}</span>);\n }\n\n return (\n <span className={`${prefix}badge-scroll-number-only`} key={key}>\n {children}\n </span>\n );\n }\n\n // 可滚动数字组\n static renderNumber(prefix, count) {\n return getDigitArray(count)\n .map((digit, i) => Sup.renderDigit(prefix, digit, i))\n .reverse();\n }\n\n constructor(props) {\n super(props);\n\n // 记录最后一次显示的数字\n this.lastCount = 0;\n }\n\n componentDidMount() {\n this.computeStyle(true);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('count' in nextProps) {\n if (nextProps.count !== this.props.count) {\n this.lastCount = this.props.count;\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.count !== this.props.count) {\n this.computeStyle(false);\n\n // NOTE why called `computeStyle` again after 300ms ?\n setTimeout(() => {\n this.computeStyle(true, true);\n }, 300);\n }\n }\n\n computeStyle(removeTransition, revert) {\n const { prefix, count, overflowCount } = this.props;\n if (count < 0) {\n return;\n }\n const supNode = this.refs.sup;\n\n if (supNode && dom.hasClass(supNode, `${prefix}badge-count`)) {\n let scrollNums = supNode.querySelectorAll(`.${prefix}badge-scroll-number-only`);\n\n if (scrollNums.length) {\n const { height } = window.getComputedStyle(supNode);\n\n scrollNums = [].slice.call(scrollNums, 0).reverse();\n\n getDigitArray(count).forEach((digit, i) => {\n const position = this.getPositionByDigit(digit, i, revert);\n // transform用百分比,防止缩放时的取整\n // 不支持的保留精度,防止出现小数情况\n const transformTo = -position * parseFloat(height);\n\n removeTransition =\n removeTransition ||\n typeof getDigitArray(this.lastCount)[i] === 'undefined' ||\n this.lastCount > overflowCount ||\n this.lastCount <= 0;\n\n const scrollStyle = support.animation\n ? {\n transition: this.props.noTransition || removeTransition\n ? 'none'\n : 'transform .3s cubic-bezier(.645, .045, .355, 1), -webkit-transform .3s cubic-bezier(.645, .045, .355, 1)',\n WebkitTransform: `translateY(${-position * 100}%)`,\n transform: `translateY(${-position * 100}%)`,\n height,\n lineHeight: height,\n }\n : {\n top: `${transformTo}px`,\n height,\n lineHeight: height,\n };\n\n Object.keys(scrollStyle).forEach(key => {\n scrollNums[i].style[key] = scrollStyle[key];\n });\n });\n }\n }\n }\n\n getPositionByDigit(digit, i, revert) {\n if (revert) {\n return 10 + digit;\n }\n const lastDigit = getDigitArray(this.lastCount)[i] || 0;\n\n if (this.props.count > this.lastCount) {\n return (digit >= lastDigit ? 10 : 20) + digit;\n }\n\n if (digit <= lastDigit) {\n return 10 + digit;\n }\n\n return digit;\n }\n\n render() {\n const { prefix, count, showZero, overflowCount, dot, noTransition, style, content } = this.props;\n\n const supClasses = classNames(`${prefix}badge-scroll-number`, {\n [`${prefix}badge-count`]: !!count || (count === 0 && showZero),\n [`${prefix}badge-dot`]: dot,\n [`${prefix}badge-custom`]: !!content,\n });\n\n let children = null;\n const show = dot || count > 0 || (count === 0 && showZero) || content;\n\n if (count > 0 || (count === 0 && showZero)) {\n const realCount = overflowCount > 0 && count > overflowCount ? `${overflowCount}+` : count;\n\n children = isNaN(realCount) ? realCount : Sup.renderNumber(prefix, count);\n } else if (content) {\n children = content;\n }\n\n // const animation = {\n // appear: 'zoomIn',\n // enter: 'zoomIn',\n // leave: 'zoomOut',\n // };\n\n // const wrapper = support.animation ? <Animate animation={animation} /> : <span />;\n const wrapper = <span />;\n const element = show ? (\n <sup ref=\"sup\" className={supClasses} style={style}>\n {children}\n </sup>\n ) : null;\n\n return React.cloneElement(wrapper, {}, element);\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\nimport Sup from './sup';\n\n/**\n * Badge\n */\nclass Badge extends Component {\n static propTypes = {\n // 样式类名的品牌前缀\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n // 自定义类名\n className: PropTypes.string,\n // 自定义内联样式\n style: PropTypes.object,\n /**\n * 徽章依托的内容\n */\n children: PropTypes.node,\n /**\n * 展示的数字,大于 overflowCount 时显示为 ${overflowCount}+,为 0 时默认隐藏\n */\n count: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * 当count为0时,是否显示count\n */\n showZero: PropTypes.bool,\n /**\n * 自定义节点内容\n */\n content: PropTypes.node,\n /**\n * 展示的封顶的数字\n */\n overflowCount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * 不展示数字,只展示一个小红点\n */\n dot: PropTypes.bool,\n /**\n * 不展示数字切换时的动画\n */\n noTransition: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n count: 0,\n showZero: false,\n overflowCount: 99,\n dot: false,\n noTransition: false,\n };\n\n render() {\n const {\n prefix,\n dot,\n noTransition,\n className,\n children,\n content,\n style,\n rtl,\n count: originCount,\n showZero,\n overflowCount: originOverflowCount,\n } = this.props;\n const count = parseInt(originCount, 10);\n const overflowCount = parseInt(originOverflowCount, 10);\n const others = obj.pickOthers(Badge.propTypes, this.props);\n\n // 如果是数字,则添加默认的 title\n if (count || (count === 0 && showZero)) {\n others.title = others.title || `${count}`;\n }\n\n const classes = classNames(\n `${prefix}badge`,\n {\n [`${prefix}badge-not-a-wrapper`]: !children,\n },\n className,\n );\n\n return (\n <span dir={rtl ? 'rtl' : undefined} className={classes} {...others}>\n {children}\n <Sup\n {...{\n prefix,\n content,\n count,\n showZero,\n overflowCount,\n dot,\n noTransition,\n style,\n }}\n />\n </span>\n );\n }\n}\n\nexport default ConfigProvider.config(Badge);\n","/* eslint-disable valid-jsdoc */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport nextLocale from '../locale/zh-cn';\nimport { obj } from '../util';\n\nconst { pickOthers } = obj;\n\n/** Card */\nexport default class Card extends React.Component {\n static displayName = 'Card';\n\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 卡片的标题\n */\n title: PropTypes.node,\n /**\n * 卡片的副标题\n */\n subTitle: PropTypes.node,\n /**\n * 是否展示头部的分隔线\n */\n showHeadDivider: PropTypes.bool,\n /**\n * 内容区域的固定高度\n */\n contentHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * 标题区域的用户自定义内容\n */\n /**\n * 是否结合 tab 的使用类型\n */\n isTab: PropTypes.bool,\n /**\n * 是否是Box\n */\n isBox: PropTypes.bool,\n extra: PropTypes.node,\n className: PropTypes.string,\n children: PropTypes.node,\n locale: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n contentHeight: 120,\n showHeadDivider: true,\n locale: nextLocale.Card,\n };\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n needMore: false,\n expand: false,\n };\n }\n\n componentDidMount() {\n this._setNeedMore();\n this._setContentHeight();\n }\n\n componentDidUpdate() {\n this._setContentHeight();\n }\n\n handleToggle = () => {\n this.setState(prevState => {\n return {\n expand: !prevState.expand,\n };\n });\n };\n\n // 是否展示 More 按钮\n _setNeedMore() {\n const { contentHeight } = this.props;\n const childrenHeight = this._getNodeChildrenHeight(this.content);\n this.setState({\n needMore: contentHeight !== 'auto' && childrenHeight > contentHeight,\n });\n }\n\n // 设置 Body 的高度\n _setContentHeight() {\n if (this.state.expand) {\n const childrenHeight = this._getNodeChildrenHeight(this.content);\n this.content.style.height = `${childrenHeight}px`; // get the real height\n } else {\n const el = ReactDOM.findDOMNode(this.footer);\n let height = this.props.contentHeight;\n\n if (el) {\n height -= el.getBoundingClientRect().height;\n }\n\n this.content.style.height = `${height}px`;\n }\n }\n\n _getNodeChildrenHeight(node) {\n if (!node) {\n return 0;\n }\n\n const contentChildNodes = node.childNodes;\n const { length } = contentChildNodes;\n\n if (!length) {\n return 0;\n }\n\n const lastNode = contentChildNodes[length - 1];\n\n return lastNode.offsetTop + lastNode.offsetHeight;\n }\n\n _contentRefHandler = ref => {\n this.content = ref;\n };\n\n saveFooter = ref => {\n this.footer = ref;\n };\n\n render() {\n const {\n prefix,\n className,\n title,\n subTitle,\n isTab,\n isBox,\n extra,\n showHeadDivider,\n children,\n locale,\n rtl,\n } = this.props;\n const { needMore, expand } = this.state;\n\n const cardCls = classNames(\n {\n [`${prefix}card`]: true,\n [`${prefix}card-show-divider`]: showHeadDivider && !isTab,\n [`${prefix}card-hide-divider`]: !showHeadDivider,\n },\n className,\n );\n\n const headCls = classNames({\n [`${prefix}card-head`]: true,\n });\n\n const cardBody = classNames({\n [`${prefix}card-body-padding`]: true,\n [`${prefix}card-body`]: !needMore,\n [`${prefix}card-body-top`]: !title && !isTab,\n [`${prefix}card-body-tab`]: isTab,\n });\n\n const subTitleBox = classNames({\n [`${prefix}card-subtitle`]: true,\n [`${prefix}card-subtitle-box`]: isBox,\n });\n\n const others = pickOthers(Object.keys(Card.propTypes), this.props);\n\n others.dir = rtl ? 'rtl' : undefined;\n\n const headExtra = extra ? <div className={`${prefix}card-extra`}>{extra}</div> : null;\n\n const headmain = classNames({\n [`${prefix}card-head-main`]: true,\n [`${prefix}card-head-main-box-tab`]: isBox && isTab,\n });\n\n return (\n <div {...obj.pickAttrs(others)} className={cardCls}>\n {title ? (\n <div className={headCls}>\n <div className={headmain}>\n <div className={`${prefix}card-title`}>\n {title}\n {!isBox && subTitle ? <span className={`${prefix}card-subtitle`}>{subTitle}</span> : null}\n {isBox && subTitle ? <div className={subTitleBox}>{subTitle}</div> : null}\n </div>\n {headExtra}\n </div>\n </div>\n ) : null}\n <div className={cardBody}>\n <div className={`${prefix}card-content`} ref={this._contentRefHandler}>\n {children}\n </div>\n {needMore ? (\n <div\n className={`${prefix}card-footer`}\n ref={this.saveFooter}\n onClick={this.handleToggle}\n >\n {expand ? locale.fold : locale.expand}\n <Icon type=\"chevron-down\" size=\"xs\" className={expand ? 'expand' : ''} />\n </div>\n ) : null}\n </div>\n </div>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Card from './card';\n\nexport default ConfigProvider.config(Card, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('titlePrefixLine' in props) {\n deprecated('titlePrefixLine', 'showTitleBullet', 'Card');\n const { titlePrefixLine, ...others } = props;\n props = { showTitleBullet: titlePrefixLine, ...others };\n }\n if ('titleBottomLine' in props) {\n deprecated('titleBottomLine', 'showHeadDivider', 'Card');\n const { titleBottomLine, ...others } = props;\n props = { showHeadDivider: titleBottomLine, ...others };\n }\n if ('bodyHeight' in props) {\n deprecated('bodyHeight', 'contentHeight', 'Card');\n const { bodyHeight, ...others } = props;\n props = { contentHeight: bodyHeight, ...others };\n }\n\n return props;\n },\n});\n","import React from 'react';\nimport Card from '../card';\nimport ConfigProvider from '../config-provider';\n\nclass Box extends React.Component {\n render() {\n return (\n <Card isBox contentHeight=\"auto\" showHeadDivider {...this.props} />\n );\n }\n}\n\nexport default ConfigProvider.config(Box);\n","import React, { Component, Children, isValidElement } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { func, obj, KEYCODE } from '../../util';\n\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\n\nexport default class Item extends Component {\n static propTypes = {\n _key: PropTypes.string,\n level: 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 dangerous: PropTypes.bool,\n };\n\n static defaultProps = {\n component: 'li',\n groupIndent: 0,\n replaceClassName: false,\n needIndent: true,\n dangerous: false,\n };\n\n constructor(props) {\n super(props);\n\n bindCtx(this, ['handleClick', 'handleKeyDown']);\n }\n\n componentDidMount() {\n this.itemNode = findDOMNode(this);\n\n const { parentMode, root, menu } = this.props;\n if (menu) {\n this.menuNode = findDOMNode(menu);\n } else if (parentMode === 'popup') {\n this.menuNode = this.itemNode.parentNode;\n } else {\n this.menuNode = findDOMNode(root);\n const { prefix, header, footer } = root.props;\n if (header || footer) {\n this.menuNode = this.menuNode.querySelector(`.${prefix}menu-content`);\n }\n }\n\n this.setFocus();\n }\n\n componentDidUpdate() {\n this.setFocus();\n }\n\n focusable() {\n const { root, type, disabled } = this.props;\n const { focusable } = root.props;\n return focusable && (type === 'submenu' || !disabled);\n }\n\n getFocused() {\n const { _key, root } = this.props;\n const { focusedKey } = root.state;\n return focusedKey === _key;\n }\n\n setFocus() {\n const focused = this.getFocused();\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 const scrollBottom = this.menuNode.clientHeight + this.menuNode.scrollTop;\n const itemBottom = this.itemNode.offsetTop + this.itemNode.offsetHeight;\n if (itemBottom > scrollBottom) {\n this.menuNode.scrollTop = itemBottom - this.menuNode.clientHeight;\n } else if (this.itemNode.offsetTop < this.menuNode.scrollTop) {\n this.menuNode.scrollTop = this.itemNode.offsetTop;\n }\n }\n }\n }\n\n handleClick(e) {\n e.stopPropagation();\n\n const { _key, root, disabled } = this.props;\n\n if (!disabled) {\n root.handleItemClick(_key, this, e);\n\n this.props.onClick && this.props.onClick(e);\n } else {\n e.preventDefault();\n }\n }\n\n handleKeyDown(e) {\n const { _key, root, type } = this.props;\n\n if (this.focusable()) {\n root.handleItemKeyDown(_key, type, this, e);\n\n switch (e.keyCode) {\n case KEYCODE.ENTER: {\n if (!(type === 'submenu')) {\n this.handleClick(e);\n }\n break;\n }\n }\n }\n\n this.props.onKeyDown && this.props.onKeyDown(e);\n }\n\n getTitle(children) {\n let labelString = '';\n\n const loop = children => {\n Children.forEach(children, child => {\n if (isValidElement(child) && child.props.children) {\n loop(child.props.children);\n } else if (typeof child === 'string') {\n labelString += child;\n }\n });\n };\n\n loop(children);\n\n return labelString;\n }\n\n render() {\n const {\n level,\n root,\n replaceClassName,\n groupIndent,\n component,\n disabled,\n className,\n children,\n needIndent,\n parentMode,\n _key,\n dangerous,\n } = this.props;\n const others = pickOthers(Object.keys(Item.propTypes), this.props);\n\n const { prefix, focusable, inlineIndent, itemClassName, rtl } = root.props;\n const focused = this.getFocused();\n\n const newClassName = replaceClassName\n ? className\n : cx({\n [`${prefix}menu-item`]: true,\n [`${prefix}disabled`]: disabled,\n [`${prefix}focused`]: !focusable && focused,\n [`${prefix}menu-dangerous-item`]: !!dangerous,\n [itemClassName]: !!itemClassName,\n [className]: !!className,\n });\n if (disabled) {\n others['aria-disabled'] = true;\n others['aria-hidden'] = true;\n }\n\n others.tabIndex = root.tabbableKey === _key ? '0' : '-1';\n\n if (parentMode === 'inline' && level > 1 && inlineIndent > 0 && needIndent) {\n const paddingProp = rtl ? 'paddingRight' : 'paddingLeft';\n others.style = {\n ...(others.style || {}),\n [paddingProp]: `${level * inlineIndent - (groupIndent || 0) * 0.4 * inlineIndent}px`,\n };\n }\n const TagName = component;\n\n let role = 'menuitem';\n if ('selectMode' in root.props) {\n role = 'listitem';\n }\n\n return (\n <TagName\n role={role}\n {...others}\n className={newClassName}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <div className={`${prefix}menu-item-inner`}>{children}</div>\n </TagName>\n );\n }\n}\n","import React, { Component } 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';\n\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\n\n/**\n * Menu.Item\n * @order 0\n */\nexport default class SelectableItem extends Component {\n static menuChildType = 'item';\n\n static propTypes = {\n _key: PropTypes.string,\n root: PropTypes.object,\n selected: PropTypes.bool,\n onSelect: PropTypes.func,\n inlineIndent: PropTypes.number,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 帮助文本\n */\n helper: PropTypes.node,\n /**\n * 菜单项标签内容\n */\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 };\n\n static defaultProps = {\n disabled: false,\n needIndent: true,\n };\n\n constructor(props) {\n super(props);\n\n bindCtx(this, ['handleKeyDown', 'handleClick']);\n }\n\n getSelected() {\n const { _key, root, selected } = this.props;\n const { selectMode } = root.props;\n const { selectedKeys } = root.state;\n return selected || (!!selectMode && selectedKeys.indexOf(_key) > -1);\n }\n\n handleSelect(e) {\n const { _key, root, onSelect } = this.props;\n if (onSelect) {\n onSelect(!this.getSelected(), this, e);\n } else {\n root.handleSelect(_key, !this.getSelected(), this);\n }\n }\n\n handleKeyDown(e) {\n if (e.keyCode === KEYCODE.SPACE && !this.props.disabled) {\n this.handleSelect(e);\n }\n\n this.props.onKeyDown && this.props.onKeyDown(e);\n }\n\n handleClick(e) {\n this.handleSelect(e);\n\n this.props.onClick && this.props.onClick(e);\n }\n\n renderSelectedIcon(selected) {\n const { root, inlineIndent, needIndent, hasSelectedIcon, isSelectIconRight, type } = this.props;\n const {\n prefix,\n hasSelectedIcon: rootSelectedIcon,\n isSelectIconRight: rootSelectIconRight,\n } = root.props;\n\n const cls = cx({\n [`${prefix}menu-icon-selected`]: true,\n [`${prefix}menu-icon-right`]:\n ('isSelectIconRight' in this.props ? isSelectIconRight : rootSelectIconRight) &&\n type !== 'submenu',\n });\n\n return ('hasSelectedIcon' in this.props ? hasSelectedIcon : rootSelectedIcon) && selected ? (\n <Icon\n style={needIndent && inlineIndent > 0 ? { left: `${inlineIndent}px` } : null}\n className={cls}\n type=\"tick\"\n />\n ) : null;\n }\n\n render() {\n const { _key, root, className, disabled, helper, children, needIndent } = this.props;\n const { prefix } = root.props;\n const others = pickOthers(Object.keys(SelectableItem.propTypes), this.props);\n const selected = this.getSelected();\n\n const newProps = {\n _key,\n root,\n disabled,\n type: 'item',\n className: cx({\n [`${prefix}selected`]: selected,\n [className]: !!className,\n [`${prefix}select-menu-item`]: 'selectMode' in root.props,\n }),\n onKeyDown: this.handleKeyDown,\n onClick: !disabled ? this.handleClick : this.props.onClick,\n needIndent,\n ...others,\n };\n\n const textProps = {};\n\n if ('selectMode' in root.props) {\n textProps['aria-selected'] = selected;\n }\n\n return (\n <Item {...newProps}>\n {this.renderSelectedIcon(selected)}\n <span className={`${prefix}menu-item-text`} {...textProps}>\n {children}\n </span>\n {helper ? <div className={`${prefix}menu-item-helper`}>{helper}</div> : null}\n </Item>\n );\n }\n}\n","import 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';\n\nconst { bindCtx } = func;\nconst { setStyle } = dom;\nconst { Popup } = Overlay;\n\n/**\n * Menu.PopupItem\n * @order 2\n */\nexport default class PopupItem extends Component {\n static menuChildType = 'submenu';\n\n static 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 triggerType: PropTypes.oneOf(['click', 'hover']),\n align: PropTypes.oneOf(['outside', 'follow']),\n autoWidth: PropTypes.bool,\n };\n\n static defaultProps = {\n selectable: false,\n noIcon: false,\n };\n\n constructor(props) {\n super(props);\n\n bindCtx(this, ['handleOpen', 'handlePopupOpen', 'handlePopupClose', 'getPopup']);\n }\n\n getPopup(ref) {\n this.popup = ref;\n }\n\n getOpen() {\n const { _key, root } = this.props;\n const { openKeys } = root.state;\n\n return openKeys.indexOf(_key) > -1;\n }\n\n getPopupProps() {\n let { popupProps } = this.props.root.props;\n if (typeof popupProps === 'function') {\n popupProps = popupProps(this.props);\n }\n return popupProps;\n }\n\n handleOpen(open, triggerType, e) {\n const { _key, root } = this.props;\n root.handleOpen(_key, open, triggerType, e);\n\n const { popupProps } = this;\n popupProps.onVisibleChange && popupProps.onVisibleChange(open, triggerType, e);\n }\n\n handlePopupOpen() {\n const { root, level, align, autoWidth } = this.props;\n const {\n popupAutoWidth: rootPopupAutoWidth,\n popupAlign: rootPopupAlign,\n direction,\n } = root.props;\n const popupAlign = align || rootPopupAlign;\n const popupAutoWidth = 'autoWidth' in this.props ? autoWidth : rootPopupAutoWidth;\n const itemNode = findDOMNode(this);\n const menuNode = itemNode.parentNode;\n this.popupNode = this.popup\n .getInstance()\n .overlay.getInstance()\n .getContentNode();\n root.popupNodes.push(this.popupNode);\n\n if (popupAutoWidth) {\n const targetNode = direction === 'hoz' && level === 1 ? itemNode : menuNode;\n\n if (targetNode.offsetWidth > this.popupNode.offsetWidth) {\n setStyle(this.popupNode, 'width', `${targetNode.offsetWidth}px`);\n }\n }\n if (popupAlign === 'outside' && !(direction === 'hoz' && level === 1)) {\n setStyle(this.popupNode, 'height', `${menuNode.offsetHeight}px`);\n setStyle(this.popupNode, 'overflow-y', 'scroll');\n }\n // removeClass(this.popupNode, `${prefix}hide`);\n\n const { popupProps } = this;\n popupProps.onOpen && popupProps.onOpen();\n }\n\n handlePopupClose() {\n const { root } = this.props;\n const { popupNodes } = root;\n const index = popupNodes.indexOf(this.popupNode);\n index > -1 && popupNodes.splice(index, 1);\n\n const { popupProps } = this;\n popupProps.onClose && popupProps.onClose();\n }\n\n renderItem(selectable, children, others) {\n const { _key, root, level, label, className } = this.props;\n const { prefix } = root.props;\n const NewItem = selectable ? SelectableItem : Item;\n const open = this.getOpen();\n\n const itemProps = {\n 'aria-haspopup': true,\n 'aria-expanded': open,\n _key,\n root,\n level,\n type: 'submenu',\n };\n if (open) {\n itemProps.className = cx({\n [`${prefix}opened`]: true,\n [className]: !!className,\n });\n } else {\n itemProps.className = className;\n }\n\n return (\n <NewItem {...itemProps} {...others}>\n <span className={`${prefix}menu-item-text`}>{label}</span>\n {children}\n </NewItem>\n );\n }\n\n renderPopup(trigger, triggerType, positionProps, children) {\n const { root, level, selectable } = this.props;\n const { direction } = root.props;\n this.popupProps = this.getPopupProps();\n const open = this.getOpen();\n\n if (direction === 'hoz' && level === 1 && selectable) {\n positionProps.target = () => findDOMNode(this);\n }\n\n return (\n <Popup\n ref={this.getPopup}\n {...positionProps}\n {...this.popupProps}\n canCloseByEsc={false}\n trigger={trigger}\n triggerType={triggerType}\n visible={open}\n onVisibleChange={this.handleOpen}\n onOpen={this.handlePopupOpen}\n onClose={this.handlePopupClose}\n >\n {children}\n </Popup>\n );\n }\n\n render() {\n const {\n root,\n level,\n hasSubMenu,\n selectable: selectableFromProps,\n children,\n triggerType,\n align,\n noIcon,\n rtl,\n } = this.props;\n const others = obj.pickOthers(Object.keys(PopupItem.propTypes), this.props);\n const {\n prefix,\n selectMode,\n direction,\n popupAlign: rootPopupAlign,\n triggerType: rootTriggerType,\n } = root.props;\n const popupAlign = align || rootPopupAlign;\n const newTriggerType = triggerType || (hasSubMenu ? rootTriggerType : 'hover');\n const 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 const selectable = selectMode && selectableFromProps;\n const triggerIsIcon = selectable && newTriggerType === 'click';\n const open = this.getOpen();\n\n const positionProps = {};\n let arrowProps;\n\n if (direction === 'hoz' && level === 1) {\n positionProps.align = 'tl bl';\n positionProps.offset = [0, 0];\n\n arrowProps = {\n type: 'chevron-down-s',\n className: cx({\n [`${prefix}menu-hoz-icon-arrow`]: true,\n [`${prefix}open`]: open,\n }),\n };\n } else {\n if (popupAlign === 'outside') {\n positionProps.target = () => {\n return findDOMNode(root);\n };\n positionProps.align = 'tl tr';\n\n rtl ? (positionProps.offset = [-2, 0]) : (positionProps.offset = [2, 0]);\n } else {\n if (triggerIsIcon) {\n positionProps.target = () => {\n return findDOMNode(this);\n };\n }\n positionProps.align = 'tl tr';\n\n rtl ? (positionProps.offset = [0, -4]) : (positionProps.offset = [0, -4]);\n }\n\n arrowProps = {\n type: 'chevron-right-s',\n className: `${prefix}menu-icon-arrow`,\n };\n }\n\n const arrow = <Icon {...arrowProps} />;\n const trigger = triggerIsIcon\n ? arrow\n : this.renderItem(selectable, noIcon ? null : arrow, others);\n const popup = this.renderPopup(trigger, newTriggerType, positionProps, newChildren);\n return triggerIsIcon ? this.renderItem(selectable, popup, others) : popup;\n }\n}\n","import 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 SelectableItem from './selectable-item';\nimport PopupItem from './popup-item';\n\nconst { Expand } = Animate;\nconst { bindCtx } = func;\n\n/**\n * Menu.SubMenu\n * @order 1\n */\nexport default class SubMenu extends Component {\n static menuChildType = 'submenu';\n\n static propTypes = {\n _key: PropTypes.string,\n root: PropTypes.object,\n level: PropTypes.number,\n groupIndent: PropTypes.number,\n noIcon: PropTypes.bool,\n /**\n * 标签内容\n */\n label: PropTypes.node,\n /**\n * 是否可选,该属性仅在设置 Menu 组件 selectMode 属性后生效\n */\n selectable: PropTypes.bool,\n /**\n * 子菜单打开方式,如果设置会覆盖 Menu 上的同名属性\n * @default Menu 的 mode 属性值\n */\n mode: PropTypes.oneOf(['inline', 'popup']),\n /**\n * 菜单项或下一级子菜单\n */\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 };\n\n static defaultProps = {\n groupIndent: 0,\n noIcon: false,\n selectable: false,\n };\n\n constructor(props) {\n super(props);\n\n bindCtx(this, [\n 'handleMouseEnter',\n 'handleMouseLeave',\n 'handleClick',\n 'handleOpen',\n 'afterLeave',\n ]);\n }\n\n componentDidMount() {\n this.itemNode = findDOMNode(this);\n }\n\n afterLeave() {\n const { focused, root } = this.props;\n const { focusable } = root.props;\n if (focusable && focused) {\n this.itemNode.focus();\n }\n }\n\n getOpen() {\n const { _key, root } = this.props;\n const { openKeys } = root.state;\n\n return openKeys.indexOf(_key) > -1;\n }\n\n handleMouseEnter(e) {\n this.handleOpen(true);\n\n this.props.onMouseEnter && this.props.onMouseEnter(e);\n }\n\n handleMouseLeave(e) {\n this.handleOpen(false);\n\n this.props.onMouseLeave && this.props.onMouseLeave(e);\n }\n\n handleClick(e) {\n const { root, selectable } = this.props;\n const { selectMode } = root.props;\n if (selectMode && selectable) {\n e.stopPropagation();\n }\n\n const open = this.getOpen();\n this.handleOpen(!open);\n }\n\n handleOpen(open, triggerType, e) {\n const { _key, root } = this.props;\n root.handleOpen(_key, open, triggerType, e);\n }\n\n passParentToChildren(children) {\n const { mode, root } = this.props;\n\n return Children.map(children, child => {\n return cloneElement(child, {\n parent: this,\n parentMode: mode || root.props.mode,\n });\n });\n }\n\n renderInline() {\n const {\n _key,\n level,\n root,\n className,\n selectable: selectableFromProps,\n label,\n children,\n noIcon,\n subMenuContentClassName,\n triggerType: propsTriggerType,\n parentMode,\n } = this.props;\n const {\n prefix,\n selectMode,\n triggerType: rootTriggerType,\n inlineArrowDirection,\n iconArrowType,\n expandAnimation,\n rtl,\n } = root.props;\n const triggerType = propsTriggerType || rootTriggerType;\n const open = this.getOpen();\n const others = obj.pickOthers(Object.keys(SubMenu.propTypes), this.props);\n\n const liProps = {\n className: cx({\n [`${prefix}menu-sub-menu-wrapper`]: true,\n [className]: !!className,\n }),\n };\n const itemProps = {\n 'aria-expanded': open,\n _key,\n level,\n root,\n type: 'submenu',\n component: 'div',\n parentMode,\n };\n const arrorProps = {\n type: inlineArrowDirection === 'right' ? `${iconArrowType}-right-s` : `${iconArrowType}-down-s`,\n className: cx({\n [`${prefix}menu-icon-arrow`]: true,\n [`${prefix}menu-icon-arrow-down`]: inlineArrowDirection === 'down',\n [`${prefix}menu-icon-arrow-right`]: inlineArrowDirection === 'right',\n [`${prefix}open`]: open,\n }),\n };\n\n const selectable = !!selectMode && selectableFromProps;\n const NewItem = selectable ? SelectableItem : Item;\n\n if (triggerType === 'hover') {\n liProps.onMouseEnter = this.handleMouseEnter;\n liProps.onMouseLeave = this.handleMouseLeave;\n } else if (selectable) {\n arrorProps.onClick = this.handleClick;\n } else {\n itemProps.onClick = this.handleClick;\n }\n if (open) {\n itemProps.className = `${prefix}opened`;\n }\n\n const newSubMenuContentClassName = cx({\n [`${prefix}menu-sub-menu`]: true,\n [subMenuContentClassName]: !!subMenuContentClassName,\n });\n\n let roleMenu = 'menu',\n roleItem = 'menuitem';\n if ('selectMode' in root.props) {\n roleMenu = 'listbox';\n roleItem = 'listitem';\n }\n\n const subMenu = open ? (\n <ul\n role={roleMenu}\n dir={rtl ? 'rtl' : undefined}\n ref=\"subMenu\"\n className={newSubMenuContentClassName}\n >\n {this.passParentToChildren(children)}\n </ul>\n ) : null;\n\n return (\n <li role={roleItem} {...others} {...liProps}>\n <NewItem {...itemProps}>\n <span className={`${prefix}menu-item-text`}>{label}</span>\n {noIcon ? null : <Icon {...arrorProps} />}\n </NewItem>\n {expandAnimation ? (\n <Expand animationAppear={false} afterLeave={this.afterLeave}>\n {subMenu}\n </Expand>\n ) : (\n subMenu\n )}\n </li>\n );\n }\n\n renderPopup() {\n const { children, subMenuContentClassName, noIcon, ...others } = this.props;\n const root = this.props.root;\n const { prefix, popupClassName, popupStyle, rtl } = root.props;\n\n const newClassName = cx({\n [`${prefix}menu`]: true,\n [`${prefix}ver`]: true,\n [popupClassName]: !!popupClassName,\n [subMenuContentClassName]: !!subMenuContentClassName,\n });\n\n others.rtl = rtl;\n\n return (\n <PopupItem {...others} noIcon={noIcon} hasSubMenu>\n <ul role=\"menu\" dir={rtl ? 'rtl' : undefined} className={newClassName} style={popupStyle}>\n {this.passParentToChildren(children)}\n </ul>\n </PopupItem>\n );\n }\n\n render() {\n const { mode, root } = this.props;\n const newMode = mode || root.props.mode;\n\n return newMode === 'popup' ? this.renderPopup() : this.renderInline();\n }\n}\n","export const getWidth = elem => {\n let width =\n elem && typeof elem.getBoundingClientRect === 'function' && elem.getBoundingClientRect().width;\n if (width) {\n width = +width.toFixed(6);\n }\n return width || 0;\n};\n","import React, { Component, Children, cloneElement } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport SubMenu from './sub-menu';\nimport { func, obj, dom, events, KEYCODE } from '../../util';\nimport { getWidth } from './util';\n\nconst { bindCtx } = func;\nconst { pickOthers, isNil } = obj;\nconst noop = () => {};\nconst MENUITEM_OVERFLOWED_CLASSNAME = 'menuitem-overflowed';\n\n/**\n * Menu\n */\nexport default class Menu extends Component {\n static isNextMenu = true;\n\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 菜单项和子菜单\n */\n children: PropTypes.node,\n /**\n * 点击菜单项触发的回调函数\n * @param {String} key 点击的菜单项的 key 值\n * @param {Object} item 点击的菜单项对象\n * @param {Object} event 点击的事件对象\n */\n onItemClick: PropTypes.func,\n /**\n * 当前打开的子菜单的 key 值\n */\n openKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 初始打开的子菜单的 key 值\n */\n defaultOpenKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 初始展开所有的子菜单,只在 mode 设置为 'inline' 以及 openMode 设置为 'multiple' 下生效,优先级高于 defaultOpenKeys\n */\n defaultOpenAll: PropTypes.bool,\n /**\n * 打开或关闭子菜单触发的回调函数\n * @param {String} key 打开的所有子菜单的 key 值\n * @param {Object} extra 额外参数\n * @param {String} extra.key 当前操作子菜单的 key 值\n * @param {Boolean} extra.open 是否是打开\n */\n onOpen: PropTypes.func,\n /**\n * 子菜单打开的模式\n */\n mode: PropTypes.oneOf(['inline', 'popup']),\n /**\n * 子菜单打开的触发行为\n */\n triggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 展开内连子菜单的模式,同时可以展开一个子菜单还是多个子菜单,该属性仅在 mode 为 inline 时生效\n */\n openMode: PropTypes.oneOf(['single', 'multiple']),\n /**\n * 内连子菜单缩进距离\n */\n inlineIndent: PropTypes.number,\n inlineArrowDirection: PropTypes.oneOf(['down', 'right']),\n /**\n * 是否自动让弹层的宽度和菜单项保持一致,如果弹层的宽度比菜单项小则和菜单项保持一致,如果宽度大于菜单项则不做处理\n */\n popupAutoWidth: PropTypes.bool,\n /**\n * 弹层的对齐方式\n */\n popupAlign: PropTypes.oneOf(['follow', 'outside']),\n /**\n * 弹层自定义 props\n */\n popupProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * 弹出子菜单自定义 className\n */\n popupClassName: PropTypes.string,\n /**\n * 弹出子菜单自定义 style\n */\n popupStyle: PropTypes.object,\n /**\n * 当前选中菜单项的 key 值\n */\n selectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 初始选中菜单项的 key 值\n */\n defaultSelectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 选中或取消选中菜单项触发的回调函数\n * @param {Array} selectedKeys 选中的所有菜单项的值\n * @param {Object} item 选中或取消选中的菜单项\n * @param {Object} extra 额外参数\n * @param {Boolean} extra.select 是否是选中\n * @param {Array} extra.key 菜单项的 key\n * @param {Object} extra.label 菜单项的文本\n * @param {Array} extra.keyPath 菜单项 key 的路径\n */\n onSelect: PropTypes.func,\n /**\n * 选中模式,单选还是多选,默认无值,不可选\n */\n selectMode: PropTypes.oneOf(['single', 'multiple']),\n /**\n * 是否只能选择第一层菜单项(不能选择子菜单中的菜单项)\n */\n shallowSelect: PropTypes.bool,\n /**\n * 是否显示选中图标,如果设置为 false 需配合配置平台设置选中时的背景色以示区分\n */\n hasSelectedIcon: PropTypes.bool,\n labelToggleChecked: PropTypes.bool,\n /**\n * 是否将选中图标居右,仅当 hasSelectedIcon 为true 时生效。\n * 注意:SubMenu 上的选中图标一直居左,不受此API控制\n */\n isSelectIconRight: PropTypes.bool,\n /**\n * 菜单第一层展示方向\n */\n direction: PropTypes.oneOf(['ver', 'hoz']),\n /**\n * 横向菜单条 item 和 footer 的对齐方向,在 direction 设置为 'hoz' 并且 header 存在时生效\n */\n hozAlign: PropTypes.oneOf(['left', 'right']),\n /**\n * 横向菜单模式下,是否维持在一行,即超出一行折叠成 SubMenu 显示, 仅在 direction='hoz' mode='popup' 时生效\n */\n hozInLine: PropTypes.bool,\n /**\n * 自定义菜单头部\n */\n header: PropTypes.node,\n /**\n * 自定义菜单尾部\n */\n footer: PropTypes.node,\n /**\n * 是否自动获得焦点\n */\n autoFocus: PropTypes.bool,\n /**\n * 当前获得焦点的子菜单或菜单项 key 值\n */\n focusedKey: PropTypes.string,\n focusable: PropTypes.bool,\n onItemFocus: PropTypes.func,\n onBlur: PropTypes.func,\n /**\n * 是否开启嵌入式模式,一般用于Layout的布局中,开启后没有默认背景、外层border、box-shadow,可以配合`<Menu style={{lineHeight: '100px'}}>` 自定义高度\n */\n embeddable: PropTypes.bool,\n onItemKeyDown: PropTypes.func,\n expandAnimation: PropTypes.bool,\n itemClassName: PropTypes.string,\n /**\n * 选择下拉图标,默认 chevron,可以选择 triangle 形式的\n */\n iconArrowType: PropTypes.string,\n /**\n * 监听滚动事件\n */\n onScroll: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n defaultOpenKeys: [],\n defaultOpenAll: false,\n onOpen: noop,\n mode: 'popup',\n triggerType: 'click',\n openMode: 'multiple',\n inlineIndent: 20,\n inlineArrowDirection: 'down',\n iconArrowType: 'chevron',\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 onScroll: () => {},\n };\n\n constructor(props) {\n super(props);\n\n const {\n children,\n selectedKeys,\n defaultSelectedKeys,\n focusedKey,\n focusable,\n autoFocus,\n hozInLine,\n } = this.props;\n\n this.state = {\n lastVisibleIndex: undefined,\n };\n\n this.newChildren = this.getNewChildren({ children, hozInLine });\n\n if (focusable) {\n this.tabbableKey = this.getFirstAvaliablelChildKey('0');\n }\n\n this.state = {\n lastVisibleIndex: undefined,\n openKeys: this.getInitOpenKeys(props),\n selectedKeys: this.normalizeToArray(selectedKeys || defaultSelectedKeys),\n focusedKey: !isNil(this.props.focusedKey)\n ? focusedKey\n : focusable && autoFocus\n ? this.tabbableKey\n : null,\n };\n\n bindCtx(this, [\n 'handleOpen',\n 'handleSelect',\n 'handleItemClick',\n 'handleItemKeyDown',\n 'onBlur',\n 'adjustChildrenWidth',\n ]);\n\n this.popupNodes = [];\n }\n\n componentDidMount() {\n this.menuNode = findDOMNode(this);\n\n this.adjustChildrenWidth();\n\n if (this.props.hozInLine) {\n events.on(window, 'resize', this.adjustChildrenWidth);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const state = {};\n\n if ('openKeys' in nextProps) {\n state.openKeys = this.normalizeToArray(nextProps.openKeys);\n }\n if ('selectedKeys' in nextProps) {\n state.selectedKeys = this.normalizeToArray(nextProps.selectedKeys);\n }\n if ('focusedKey' in nextProps) {\n state.focusedKey = nextProps.focusedKey;\n }\n\n if (Object.keys(state).length) {\n this.setState(state);\n }\n }\n\n UNSAFE_componentWillUpdate(nextProps, nextState) {\n if (this.state.lastVisibleIndex !== nextState.lastVisibleIndex) {\n this.adjustChildrenWidth();\n }\n\n this.newChildren = this.getNewChildren(nextProps);\n\n if (this.props.focusable) {\n if (this.tabbableKey in this.k2n) {\n if (this.state.focusedKey) {\n this.tabbableKey = this.state.focusedKey;\n }\n } else {\n this.tabbableKey = this.getFirstAvaliablelChildKey('0');\n }\n }\n }\n\n componentWillUnmount() {\n events.off(window, 'resize', this.adjustChildrenWidth);\n }\n\n adjustChildrenWidth() {\n const { direction, prefix, hozInLine } = this.props;\n if (direction !== 'hoz' || !hozInLine) {\n return;\n }\n\n if (!this.menuNode) {\n return;\n }\n\n const { children } = this.menuNode;\n\n if (children.length < 2) {\n return;\n }\n\n const spaceWidth = getWidth(this.menuNode);\n\n let currentSumWidth = 0;\n let lastVisibleIndex = -1;\n\n const menuItemNodes = [].slice\n .call(children)\n .filter(node => node.className.split(' ').indexOf(`${prefix}menu-more`) < 0);\n\n const overflowedItems = menuItemNodes.filter(\n c => c.className.split(' ').indexOf(MENUITEM_OVERFLOWED_CLASSNAME) >= 0,\n );\n\n overflowedItems.forEach(c => {\n dom.setStyle(c, 'display', 'inline-block');\n });\n\n const lastIndicator = children[children.length - 1];\n dom.setStyle(lastIndicator, 'display', 'inline-block');\n const moreWidth = getWidth(lastIndicator);\n dom.setStyle(lastIndicator, 'display', 'none');\n\n this.menuItemSizes = menuItemNodes.map(c => getWidth(c));\n\n overflowedItems.forEach(c => {\n dom.setStyle(c, 'display', 'none');\n });\n\n this.menuItemSizes.forEach(liWidth => {\n currentSumWidth += liWidth;\n if (currentSumWidth + moreWidth <= spaceWidth) {\n lastVisibleIndex++;\n }\n });\n\n this.setState({\n lastVisibleIndex,\n });\n }\n\n onBlur(e) {\n this.setState({\n focusedKey: undefined,\n });\n\n this.props.onBlur && this.props.onBlur(e);\n }\n\n getInitOpenKeys(props) {\n let initOpenKeys;\n\n const { openKeys, defaultOpenKeys, defaultOpenAll, mode, openMode } = props;\n if (openKeys) {\n initOpenKeys = openKeys;\n } else if (defaultOpenAll && mode === 'inline' && openMode === 'multiple') {\n initOpenKeys = Object.keys(this.k2n).filter(key => {\n return this.k2n[key].type === 'submenu';\n });\n } else {\n initOpenKeys = defaultOpenKeys;\n }\n\n return this.normalizeToArray(initOpenKeys);\n }\n\n getIndicatorsItem(items, isPlaceholder) {\n const { prefix } = this.props;\n const moreCls = cx({\n [`${prefix}menu-more`]: true,\n });\n\n const style = {};\n // keep placehold to get width\n if (isPlaceholder) {\n style.visibility = 'hidden';\n // indicators which not in use, just display: none\n } else if (items && items.length === 0) {\n style.display = 'none';\n }\n\n return (\n <SubMenu label=\"···\" noIcon className={moreCls} style={style}>\n {items}\n </SubMenu>\n );\n }\n\n addIndicators = children => {\n const arr = [];\n const { lastVisibleIndex } = this.state;\n\n children.forEach((child, index) => {\n let overflowedItems = [];\n\n if (index > lastVisibleIndex) {\n child = React.cloneElement(child, {\n key: `more-${index}`,\n style: { display: 'none' },\n className: `${child.className || ''} ${MENUITEM_OVERFLOWED_CLASSNAME}`,\n });\n }\n\n if (index === lastVisibleIndex + 1) {\n overflowedItems = children.slice(lastVisibleIndex + 1).map((c, i) => {\n return React.cloneElement(c, {\n key: `more-${index}-${i}`,\n });\n });\n arr.push(this.getIndicatorsItem(overflowedItems));\n }\n\n arr.push(child);\n });\n\n arr.push(this.getIndicatorsItem([], true));\n\n return arr;\n };\n\n getNewChildren({ children, hozInLine }) {\n this.k2n = {};\n this.p2n = {};\n\n let arr = [];\n\n if (hozInLine) {\n arr = this.addIndicators(children);\n } else {\n arr = children;\n }\n\n const loop = (children, posPrefix, indexWrapper = { index: 0 }) => {\n const keyArray = [];\n return Children.map(children, child => {\n if (\n 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 ) {\n let newChild;\n\n let pos;\n const props = { root: this };\n\n if (['item', 'submenu', 'group'].indexOf(child.type.menuChildType) > -1) {\n pos = `${posPrefix}-${indexWrapper.index++}`;\n const key = typeof child.key === 'string' ? child.key : pos;\n\n // filter out duplicate keys\n if (keyArray.indexOf(key) > -1) {\n return;\n }\n\n keyArray.push(key);\n\n const level = pos.split('-').length - 1;\n this.k2n[key] = this.p2n[pos] = {\n key,\n pos,\n type: child.type.menuChildType,\n disabled: child.props.disabled,\n label: child.props.label || child.props.children,\n };\n\n props._key = key;\n props.level = level;\n props.groupIndent = child.type.menuChildType === 'group' ? 1 : 0;\n }\n\n switch (child.type.menuChildType) {\n case 'submenu':\n newChild = cloneElement(child, props, loop(child.props.children, pos));\n break;\n case 'group':\n newChild = cloneElement(\n child,\n props,\n loop(child.props.children, posPrefix, indexWrapper),\n );\n break;\n case 'item':\n case 'divider':\n newChild = cloneElement(child, props);\n break;\n default:\n newChild = child;\n break;\n }\n\n return newChild;\n }\n\n return child;\n });\n };\n\n return loop(arr, '0');\n }\n\n normalizeToArray(items) {\n if (items) {\n if (Array.isArray(items)) {\n return items;\n }\n return [items];\n }\n\n return [];\n }\n\n isSibling(currentPos, targetPos) {\n const currentNums = currentPos.split('-').slice(0, -1);\n const targetNums = targetPos.split('-').slice(0, -1);\n\n return (\n currentNums.length === targetNums.length &&\n currentNums.every((num, index) => {\n return num === targetNums[index];\n })\n );\n }\n\n isAncestor(currentPos, targetPos) {\n const currentNums = currentPos.split('-');\n const targetNums = targetPos.split('-');\n\n return (\n currentNums.length > targetNums.length &&\n targetNums.every((num, index) => {\n return num === currentNums[index];\n })\n );\n }\n\n handleOpen(key, open, triggerType, e) {\n let newOpenKeys;\n\n const { mode, openMode } = this.props;\n const { openKeys } = this.state;\n const index = openKeys.indexOf(key);\n if (open && index === -1) {\n if (mode === 'inline') {\n if (openMode === 'single') {\n newOpenKeys = openKeys.filter(k => !this.isSibling(this.k2n[key].pos, this.k2n[k].pos));\n newOpenKeys.push(key);\n } else {\n newOpenKeys = openKeys.concat(key);\n }\n } else {\n newOpenKeys = openKeys.filter(k => {\n return this.isAncestor(this.k2n[key].pos, this.k2n[k].pos);\n });\n newOpenKeys.push(key);\n }\n } else if (!open && index > -1) {\n if (mode === 'inline') {\n newOpenKeys = [...openKeys.slice(0, index), ...openKeys.slice(index + 1)];\n } else if (triggerType === 'docClick') {\n if (!this.popupNodes.concat(this.menuNode).some(node => node.contains(e.target))) {\n newOpenKeys = [];\n }\n } else {\n newOpenKeys = openKeys.filter(k => {\n return k !== key && !this.isAncestor(this.k2n[k].pos, this.k2n[key].pos);\n });\n }\n }\n\n if (newOpenKeys) {\n if (isNil(this.props.openKeys)) {\n this.setState({\n openKeys: newOpenKeys,\n });\n }\n\n this.props.onOpen(newOpenKeys, {\n key,\n open,\n });\n }\n }\n\n getPath(key) {\n const keyPath = [];\n const labelPath = [];\n\n const { pos } = this.k2n[key];\n const nums = pos.split('-');\n for (let i = 1; i < nums.length - 1; i++) {\n const parentNums = nums.slice(0, i + 1);\n const parentPos = parentNums.join('-');\n const parent = this.p2n[parentPos];\n keyPath.push(parent.key);\n labelPath.push(parent.label);\n }\n\n return {\n keyPath,\n labelPath,\n };\n }\n\n handleSelect(key, select, menuItem) {\n const { pos } = this.k2n[key];\n const level = pos.split('-').length - 1;\n if (this.props.shallowSelect && level > 1) {\n return;\n }\n\n let newSelectedKeys;\n\n const { selectMode } = this.props;\n const { selectedKeys } = this.state;\n const index = selectedKeys.indexOf(key);\n if (select && index === -1) {\n if (selectMode === 'single') {\n newSelectedKeys = [key];\n } else if (selectMode === 'multiple') {\n newSelectedKeys = selectedKeys.concat(key);\n }\n } else if (!select && index > -1 && selectMode === 'multiple') {\n newSelectedKeys = [...selectedKeys.slice(0, index), ...selectedKeys.slice(index + 1)];\n }\n\n if (newSelectedKeys) {\n if (isNil(this.props.selectedKeys)) {\n this.setState({\n selectedKeys: newSelectedKeys,\n });\n }\n\n this.props.onSelect(newSelectedKeys, menuItem, {\n key,\n select,\n label: this.k2n[key].label,\n ...this.getPath(key),\n });\n }\n }\n\n handleItemClick(key, item, e) {\n if (this.props.focusable) {\n if (isNil(this.props.focusedKey)) {\n this.setState({\n focusedKey: key,\n });\n }\n\n this.props.onItemFocus(key, item, e);\n }\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\n this.props.onOpen([], {\n key: this.state.openKeys.sort(\n (prevKey, nextKey) => this.k2n[nextKey].pos.split('-').length - this.k2n[prevKey].pos.split('-').length,\n )[0],\n open: false,\n });\n }\n\n this.props.onItemClick(key, item, e);\n }\n }\n\n isAvailablePos(refPos, targetPos) {\n const { type, disabled } = this.p2n[targetPos];\n\n return (\n this.isSibling(refPos, targetPos) && ((type === 'item' && !disabled) || type === 'submenu')\n );\n }\n\n getAvailableKey(pos, prev) {\n const ps = Object.keys(this.p2n).filter(p => this.isAvailablePos(pos, p));\n if (ps.length > 1) {\n const index = ps.indexOf(pos);\n let targetIndex;\n if (prev) {\n targetIndex = index === 0 ? ps.length - 1 : index - 1;\n } else {\n targetIndex = index === ps.length - 1 ? 0 : index + 1;\n }\n\n return this.p2n[ps[targetIndex]].key;\n }\n\n return null;\n }\n\n getFirstAvaliablelChildKey(parentPos) {\n const pos = Object.keys(this.p2n).find(p => this.isAvailablePos(`${parentPos}-0`, p));\n return pos ? this.p2n[pos].key : null;\n }\n\n getParentKey(pos) {\n return this.p2n[pos.slice(0, pos.length - 2)].key;\n }\n\n handleItemKeyDown(key, type, item, e) {\n if (\n [\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 ) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n let { focusedKey } = this.state;\n\n const { direction } = this.props;\n const { pos } = this.k2n[key];\n const level = pos.split('-').length - 1;\n switch (e.keyCode) {\n case KEYCODE.UP: {\n const avaliableKey = this.getAvailableKey(pos, true);\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n break;\n }\n case KEYCODE.DOWN: {\n let avaliableKey;\n if (direction === 'hoz' && level === 1 && type === 'submenu') {\n this.handleOpen(key, true);\n avaliableKey = this.getFirstAvaliablelChildKey(pos);\n } else {\n avaliableKey = this.getAvailableKey(pos, false);\n }\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n break;\n }\n case KEYCODE.RIGHT: {\n let avaliableKey;\n if (direction === 'hoz' && level === 1) {\n avaliableKey = this.getAvailableKey(pos, false);\n } else if (type === 'submenu') {\n this.handleOpen(key, true);\n avaliableKey = this.getFirstAvaliablelChildKey(pos);\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 const avaliableKey = this.getFirstAvaliablelChildKey(pos);\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n }\n break;\n }\n case KEYCODE.LEFT: {\n if (direction === 'hoz' && level === 1) {\n const avaliableKey = this.getAvailableKey(pos, true);\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n } else if (level > 1) {\n const 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 const parentKey = this.getParentKey(pos);\n this.handleOpen(parentKey, false);\n focusedKey = parentKey;\n }\n break;\n\n case KEYCODE.TAB:\n focusedKey = null;\n break;\n default:\n break;\n }\n\n if (focusedKey !== this.state.focusedKey) {\n if (isNil(this.props.focusedKey)) {\n this.setState({\n focusedKey,\n });\n }\n\n this.props.onItemKeyDown(focusedKey, item, e);\n this.props.onItemFocus(focusedKey, e);\n }\n }\n\n render() {\n const {\n prefix,\n className,\n direction,\n hozAlign,\n header,\n footer,\n embeddable,\n selectMode,\n hozInLine,\n rtl,\n onScroll,\n } = this.props;\n const others = pickOthers(Object.keys(Menu.propTypes), this.props);\n\n const newClassName = cx({\n [`${prefix}menu`]: true,\n [`${prefix}ver`]: direction === 'ver',\n [`${prefix}hoz`]: direction === 'hoz',\n [`${prefix}menu-embeddable`]: embeddable,\n [`${prefix}menu-nowrap`]: hozInLine,\n [className]: !!className,\n });\n\n let role = direction === 'hoz' ? 'menubar' : 'menu';\n let ariaMultiselectable;\n if ('selectMode' in this.props) {\n role = 'listbox';\n ariaMultiselectable = !!(selectMode === 'multiple');\n }\n\n const headerElement = header ? <li className={`${prefix}menu-header`}>{header}</li> : null;\n const itemsElement =\n header || footer ? (\n <ul className={`${prefix}menu-content`}>{this.newChildren}</ul>\n ) : (\n this.newChildren\n );\n const footerElement = footer ? <li className={`${prefix}menu-footer`}>{footer}</li> : null;\n const shouldWrapItemsAndFooter = hozAlign === 'right' && !!header;\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n return (\n <ul\n role={role}\n onBlur={this.onBlur}\n className={newClassName}\n onKeyDown={this.handleEnter}\n onScroll={onScroll}\n aria-multiselectable={ariaMultiselectable}\n {...others}\n >\n {headerElement}\n {shouldWrapItemsAndFooter ? (\n <div className={`${prefix}menu-hoz-right`}>\n {itemsElement}\n {footerElement}\n </div>\n ) : null}\n {!shouldWrapItemsAndFooter ? itemsElement : null}\n {!shouldWrapItemsAndFooter ? footerElement : null}\n </ul>\n );\n }\n}\n","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { func } from '../util';\n\nconst { makeChain } = func;\n// UIState 为一些特殊元素的状态响应提供了标准的方式,\n// 尤其适合CSS无法完全定制的控件,比如checkbox,radio等。\n// 若组件 disable 则自行判断是否需要绑定状态管理。\n// 注意:disable 不会触发事件,请使用resetUIState还原状态\n/* eslint-disable react/prop-types */\nclass UIState extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n ['_onUIFocus', '_onUIBlur'].forEach(item => {\n this[item] = this[item].bind(this);\n });\n }\n // base 事件绑定的元素\n getStateElement(base) {\n const { onFocus, onBlur } = this.props;\n return React.cloneElement(base, {\n onFocus: makeChain(this._onUIFocus, onFocus),\n onBlur: makeChain(this._onUIBlur, onBlur),\n });\n }\n // 获取状态classname\n getStateClassName() {\n const { focused } = this.state;\n return classnames({\n focused,\n });\n }\n // 复原状态\n resetUIState() {\n this.setState({\n focused: false,\n });\n }\n _onUIFocus() {\n this.setState({\n focused: true,\n });\n }\n _onUIBlur() {\n this.setState({\n focused: false,\n });\n }\n}\n\nexport default UIState;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport UIState from '../mixin-ui-state';\nimport ConfigProvider from '../config-provider';\nimport Icon from '../icon';\nimport { obj, func } from '../util';\n\nconst { noop } = func;\nfunction isChecked(selectedValue, value) {\n return selectedValue.indexOf(value) > -1;\n}\n\nconst checkedicon = ( // 选中图标的svg\n <svg viewBox=\"0 0 1024 1024\">\n <path d=\"M275.93,503.71A55.33,55.33,0,1,0,195,579.23L361,757.08a55.33,55.33,0,0,0,78.2,2.7q1.4-1.3,2.7-2.7l387.32-415a55.33,55.33,0,0,0-80.9-75.51L401.51,638.22Z\" />\n </svg>\n);\n\nconst indeteicon = ( // 中间状态的svg\n <svg viewBox=\"0 0 1024 1024\">\n <path d=\"M235.24,567.35H788.76a55.35,55.35,0,0,0,0-110.7H235.24a55.35,55.35,0,0,0,0,110.7Z\" />\n </svg>\n);\n/**\n * Checkbox\n * @order 1\n */\nclass Checkbox extends UIState {\n static displayName = 'Checkbox';\n\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * checkbox id, 挂载在input上\n */\n id: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * 选中状态\n */\n checked: PropTypes.bool,\n /**\n * 默认选中状态\n */\n defaultChecked: PropTypes.bool,\n /**\n * 禁用\n */\n disabled: PropTypes.bool,\n /**\n * checkbox的尺寸\n * @enumdesc 放大版大小, 正常大小\n */\n size: PropTypes.oneOf(['large', 'medium']),\n /**\n * 通过属性配置label,\n */\n label: PropTypes.node,\n /**\n * Checkbox 的中间状态,只会影响到 Checkbox 的样式,并不影响其 checked 属性\n */\n indeterminate: PropTypes.bool,\n /**\n * Checkbox 的默认中间态,只会影响到 Checkbox 的样式,并不影响其 checked 属性\n */\n defaultIndeterminate: PropTypes.bool,\n /**\n * 状态变化时触发的事件\n * @param {Boolean} checked 是否选中\n * @param {Event} e Dom 事件对象\n */\n onChange: PropTypes.func,\n /**\n * 鼠标进入enter事件\n * @param {Event} e Dom 事件对象\n */\n onMouseEnter: PropTypes.func,\n /**\n * 鼠标离开Leave事件\n * @param {Event} e Dom 事件对象\n */\n onMouseLeave: PropTypes.func,\n };\n\n static defaultProps = {\n defaultChecked: false,\n defaultIndeterminate: false,\n onChange: noop,\n onMouseEnter: noop,\n onMouseLeave: noop,\n prefix: 'next-',\n size: 'medium',\n };\n\n static contextTypes = {\n onChange: PropTypes.func,\n __group__: PropTypes.bool,\n selectedValue: PropTypes.array,\n disabled: PropTypes.bool,\n prefix: PropTypes.string,\n };\n\n constructor(props, context) {\n super(props);\n\n let checked;\n let indeterminate;\n\n if ('checked' in props) {\n checked = props.checked;\n } else {\n checked = props.defaultChecked;\n }\n\n if ('indeterminate' in props) {\n indeterminate = props.indeterminate;\n } else {\n indeterminate = props.defaultIndeterminate;\n }\n if (context.__group__) {\n checked = isChecked(context.selectedValue, props.value);\n }\n this.state = {\n checked,\n indeterminate,\n };\n\n this.disabled =\n props.disabled || (context.__group__ && 'disabled' in context && context.disabled);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps, nextContext) {\n if (nextContext.__group__) {\n if ('selectedValue' in nextContext) {\n this.setState({\n checked: isChecked(nextContext.selectedValue, nextProps.value),\n });\n }\n this.disabled = nextProps.disabled || ('disabled' in nextContext && nextContext.disabled);\n } else {\n if ('checked' in nextProps) {\n this.setState({\n checked: nextProps.checked,\n });\n }\n if ('indeterminate' in nextProps) {\n this.setState({\n indeterminate: nextProps.indeterminate,\n });\n }\n this.disabled = nextProps.disabled;\n }\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const { shallowEqual } = obj;\n return (\n !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState) ||\n !shallowEqual(this.context, nextContext)\n );\n }\n\n onChange = e => {\n const { checked } = e.target;\n const { value } = this.props;\n if (this.disabled) {\n return;\n }\n if (this.context.__group__) {\n this.context.onChange(value, e);\n } else {\n if (!('checked' in this.props)) {\n this.setState({\n checked,\n });\n }\n\n if (!('indeterminate' in this.props)) {\n this.setState({\n indeterminate: false,\n });\n }\n this.props.onChange(checked, e);\n }\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n id,\n className,\n children,\n style,\n label,\n size,\n onMouseEnter,\n onMouseLeave,\n rtl,\n ...otherProps\n } = this.props;\n const checked = !!this.state.checked;\n const { disabled } = this;\n const indeterminate = !!this.state.indeterminate;\n const prefix = this.context.prefix || this.props.prefix;\n\n const others = obj.pickOthers(Checkbox.propTypes, otherProps);\n const othersData = obj.pickAttrsWith(others, 'data-');\n\n let childInput = (\n <input\n {...obj.pickOthers(Checkbox.propTypes, otherProps)}\n id={id}\n disabled={disabled}\n checked={checked}\n type=\"checkbox\"\n onChange={this.onChange}\n aria-checked={indeterminate ? 'mixed' : checked}\n className={`${prefix}checkbox-input`}\n />\n );\n\n // disable 无状态操作\n if (!disabled) {\n childInput = this.getStateElement(childInput);\n }\n\n let _size = size;\n if (_size !== 'large' && _size !== 'medium') {\n _size = 'medium';\n }\n\n const cls = classnames({\n [`${prefix}checkbox-wrapper`]: true,\n [`${prefix}checkbox-wrapper-${_size}`]: true,\n [className]: !!className,\n checked,\n disabled,\n indeterminate,\n // [this.getStateClassName()]: true,\n });\n\n const labelCls = classnames({\n [`${prefix}checkbox-label`]: true,\n [`${prefix}checkbox-label-${_size}`]: true,\n });\n\n const iconCls = classnames({\n [`${prefix}icon`]: true,\n [`${prefix}xs`]: _size === 'medium',\n [`${prefix}small`]: _size === 'large',\n });\n\n const type = indeterminate ? 'horizontal' : 'tick-bold';\n\n return (\n <label\n {...othersData}\n className={cls}\n style={style}\n dir={rtl ? 'rtl' : undefined}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <span className={`${prefix}checkbox`}>\n <span className={`${prefix}checkbox-inner`}>\n <i className={iconCls}>{indeterminate ? indeteicon : checkedicon}</i>\n {/* <Icon\n type={type}\n size={_size === 'medium' ? 'xs' : 'small'}\n className={indeterminate ? 'zoomIn' : ''}\n /> */}\n </span>\n {childInput}\n </span>\n {[label, children].map((item, i) => ([undefined, null].indexOf(item) === -1 ? (\n <span key={i} className={labelCls}>\n {item}\n </span>\n ) : null),)}\n </label>\n );\n }\n}\n\nexport default ConfigProvider.config(Checkbox);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\nimport Checkbox from './checkbox';\n\nconst { pickOthers } = obj;\n\n/** Checkbox.Group */\nclass CheckboxGroup extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * 整体禁用\n */\n disabled: PropTypes.bool,\n /**\n * 可选项列表, 数据项可为 String 或者 Object, 如 `['apple', 'pear', 'orange']` 或者 `[{value: 'apple', label: '苹果',}, {value: 'pear', label: '梨'}, {value: 'orange', label: '橙子'}]`\n */\n dataSource: PropTypes.arrayOf(PropTypes.any),\n /**\n * 被选中的值列表\n */\n value: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.number]),\n /**\n * 默认被选中的值列表\n */\n defaultValue: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.number]),\n /**\n * checkbox的尺寸\n * @enumdesc 放大版大小, 正常大小\n */\n size: PropTypes.oneOf(['large', 'medium']),\n /**\n * 通过子元素方式设置内部 checkbox\n */\n children: PropTypes.arrayOf(PropTypes.element),\n /**\n * 选中值改变时的事件\n * @param {Array} value 选中项列表\n * @param {Event} e Dom 事件对象\n */\n onChange: PropTypes.func,\n\n /**\n * 子项目的排列方式\n * - hoz: 水平排列 (default)\n * - ver: 垂直排列\n */\n itemDirection: PropTypes.oneOf(['hoz', 'ver']),\n };\n\n static defaultProps = {\n dataSource: [],\n onChange: () => {},\n prefix: 'next-',\n itemDirection: 'hoz',\n size: 'medium',\n };\n\n static childContextTypes = {\n onChange: PropTypes.func,\n __group__: PropTypes.bool,\n selectedValue: PropTypes.array,\n disabled: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n\n let value = [];\n if ('value' in props) {\n value = props.value;\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 } else {\n value = [value];\n }\n }\n this.state = {\n value: [...value],\n };\n }\n\n getChildContext() {\n return {\n __group__: true,\n onChange: this.onChange,\n selectedValue: this.state.value,\n disabled: this.props.disabled,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n let { value } = nextProps;\n if (!Array.isArray(value)) {\n if (value === null || value === undefined) {\n value = [];\n } else {\n value = [value];\n }\n }\n this.setState({\n value,\n });\n }\n }\n\n onChange = (currentValue, e) => {\n const { value } = this.state;\n const index = value.indexOf(currentValue);\n const valTemp = [...value];\n\n if (index === -1) {\n valTemp.push(currentValue);\n } else {\n valTemp.splice(index, 1);\n }\n\n if (!('value' in this.props)) {\n this.setState({ value: valTemp });\n }\n this.props.onChange(valTemp, e);\n };\n\n render() {\n const { className, style, prefix, size, disabled, itemDirection, rtl } = this.props;\n const others = pickOthers(CheckboxGroup.propTypes, this.props);\n\n let _size = size;\n if (_size !== 'large' && _size !== 'medium') {\n _size = 'medium';\n }\n\n // 如果内嵌标签跟dataSource同时存在,以内嵌标签为主\n let children;\n if (this.props.children) {\n children = React.Children.map(this.props.children, child => {\n if (!React.isValidElement(child)) {\n return child;\n }\n return React.cloneElement(child, child.props.rtl === undefined ? { rtl } : null);\n });\n } else {\n children = this.props.dataSource.map((item, index) => {\n let option = item;\n if (typeof item !== 'object') {\n option = {\n label: item,\n value: item,\n disabled,\n };\n }\n const checked = this.state.value && this.state.value.indexOf(option.value) > -1;\n\n return (\n <Checkbox\n size={_size}\n key={index}\n value={option.value}\n checked={checked}\n rtl={rtl}\n disabled={disabled || option.disabled}\n label={option.label}\n />\n );\n });\n }\n\n const cls = classnames({\n [`${prefix}checkbox-group`]: true,\n [`${prefix}checkbox-group-${_size}`]: true,\n [`${prefix}checkbox-group-${itemDirection}`]: true,\n [className]: !!className,\n disabled,\n });\n\n return (\n <span dir={rtl ? 'rtl' : undefined} {...others} className={cls} style={style}>\n {children}\n </span>\n );\n }\n}\n\nexport default ConfigProvider.config(CheckboxGroup);\n","import Checkbox from './checkbox';\nimport Group from './checkbox-group';\n\nCheckbox.Group = Group;\n\nexport default Checkbox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport UIState from '../mixin-ui-state';\nimport ConfigProvider from '../config-provider';\nimport { obj, func } from '../util';\n\nconst { makeChain, noop } = func;\n/**\n * Radio\n * @order 1\n */\nclass Radio extends UIState {\n static displayName = 'Radio';\n\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 组件input的id\n */\n id: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * 设置radio是否选中\n */\n checked: PropTypes.bool,\n /**\n * 设置radio是否默认选中\n */\n defaultChecked: PropTypes.bool,\n /**\n * 通过属性配置label\n */\n label: PropTypes.node,\n /**\n * 状态变化时触发的事件\n * @param {Boolean} checked 是否选中\n * @param {Event} e Dom 事件对象\n */\n onChange: PropTypes.func,\n /**\n * 鼠标进入enter事件\n * @param {Event} e Dom 事件对象\n */\n onMouseEnter: PropTypes.func,\n /**\n * 鼠标离开事件\n * @param {Event} e Dom 事件对象\n */\n onMouseLeave: PropTypes.func,\n /**\n * radio是否被禁用\n */\n disabled: PropTypes.bool,\n /**\n * radio 的value\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\n /**\n * name\n */\n name: PropTypes.string,\n };\n\n static defaultProps = {\n onChange: noop,\n onMouseLeave: noop,\n onMouseEnter: noop,\n tabIndex: 0,\n prefix: 'next-',\n };\n\n static 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\n constructor(props, context) {\n super(props);\n\n let checked;\n if (context.__group__) {\n checked = context.selectedValue === props.value;\n } else if ('checked' in props) {\n checked = props.checked;\n } else {\n checked = props.defaultChecked;\n }\n\n this.state = { checked };\n\n this.disabled =\n props.disabled || (context.__group__ && 'disabled' in context && context.disabled);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps, nextContext) {\n if (nextContext.__group__) {\n const { selectedValue } = nextContext;\n if ('selectedValue' in nextContext) {\n this.setState({\n checked: selectedValue === nextProps.value,\n });\n }\n } else if ('checked' in nextProps) {\n this.setState({\n checked: nextProps.checked,\n });\n }\n\n this.disabled =\n nextProps.disabled ||\n (nextContext.__group__ && 'disabled' in nextContext && nextContext.disabled);\n\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\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const { shallowEqual } = obj;\n return (\n !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState) ||\n !shallowEqual(this.nextContext, nextContext)\n );\n }\n\n onChange = e => {\n const { checked } = e.target;\n const { value } = this.props;\n\n if (this.context.__group__) {\n this.context.onChange(value, e);\n } else if (this.state.checked !== checked) {\n if (!('checked' in this.props)) {\n this.setState({\n checked,\n });\n }\n this.props.onChange(checked, e);\n }\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n id,\n className,\n children,\n style,\n label,\n onMouseEnter,\n onMouseLeave,\n tabIndex,\n rtl,\n name,\n ...otherProps\n } = this.props;\n const checked = !!this.state.checked;\n const { disabled } = this;\n const { isButton } = this.context;\n const prefix = this.context.prefix || this.props.prefix;\n\n const others = obj.pickOthers(Radio.propTypes, otherProps);\n const othersData = obj.pickAttrsWith(others, 'data-');\n\n let input = (\n <input\n {...obj.pickOthers(othersData, others)}\n name={name}\n id={id}\n role=\"radio\"\n tabIndex={tabIndex}\n disabled={disabled}\n checked={checked}\n type=\"radio\"\n onChange={this.onChange}\n aria-checked={checked}\n className={`${prefix}radio-input`}\n />\n );\n\n // disabled do not hove focus state\n if (!disabled) {\n input = this.getStateElement(input);\n }\n\n const cls = classnames({\n [`${prefix}radio`]: true,\n checked,\n disabled,\n // [this.getStateClassName()]: true,\n });\n const clsInner = classnames({\n [`${prefix}radio-inner`]: true,\n press: checked,\n unpress: !checked,\n });\n const clsWrapper = classnames({\n [`${prefix}radio-wrapper`]: true,\n [className]: !!className,\n checked,\n disabled,\n // [this.getStateClassName()]: true,\n });\n const childrenCls = `${prefix}radio-label`;\n\n const radioComp = !isButton ? (\n <span className={cls}>\n <span className={clsInner} />\n {input}\n </span>\n ) : (\n <span className={`${prefix}radio-single-input`}>{input}</span>\n );\n\n return (\n <label\n {...othersData}\n dir={rtl ? 'rtl' : 'ltr'}\n style={style}\n aria-checked={checked}\n aria-disabled={disabled}\n className={clsWrapper}\n onMouseEnter={disabled ? onMouseEnter : makeChain(this._onUIMouseEnter, onMouseEnter)}\n onMouseLeave={disabled ? onMouseLeave : makeChain(this._onUIMouseLeave, onMouseLeave)}\n >\n {radioComp}\n {[children, label].map((d, i) => (d !== undefined ? (\n <span key={i} className={childrenCls}>\n {d}\n </span>\n ) : null),)}\n </label>\n );\n }\n}\n\nexport default ConfigProvider.config(Radio);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\nimport Radio from './radio';\n\nconst { pickOthers } = obj;\n\n/**\n * Radio.Group\n * @order 2\n */\nclass RadioGroup extends Component {\n static propTypes = {\n /**\n * 样式类名的品牌前缀\n */\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * name\n */\n name: PropTypes.string,\n /**\n * radio group的选中项的值\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\n /**\n * radio group的默认值\n */\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\n /**\n * 设置标签类型\n */\n component: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * 选中值改变时的事件\n * @param {String/Number} value 选中项的值\n * @param {Event} e Dom 事件对象\n */\n onChange: PropTypes.func,\n /**\n * 表示radio被禁用\n */\n disabled: PropTypes.bool,\n /**\n * 可以设置成 button 展示形状\n * @enumdesc 按钮状\n */\n shape: PropTypes.oneOf(['button']),\n /**\n * 与 `shape` 属性配套使用,shape设为button时有效\n * @enumdesc 大, 中, 小\n */\n size: PropTypes.oneOf(['large', 'medium', 'small']),\n /**\n * 可选项列表, 数据项可为 String 或者 Object, 如 `['apple', 'pear', 'orange']`\n */\n dataSource: PropTypes.arrayOf(PropTypes.any),\n /**\n * 通过子元素方式设置内部radio\n */\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n\n /**\n * 子项目的排列方式\n * - hoz: 水平排列 (default)\n * - ver: 垂直排列\n */\n itemDirection: PropTypes.oneOf(['hoz', 'ver']),\n };\n\n static defaultProps = {\n dataSource: [],\n size: 'medium',\n onChange: () => {},\n prefix: 'next-',\n component: 'div',\n itemDirection: 'hoz',\n };\n\n static 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\n constructor(props) {\n super(props);\n let value = '';\n if ('value' in props) {\n value = props.value;\n } else if ('defaultValue' in props) {\n value = props.defaultValue;\n }\n this.state = { value };\n }\n\n getChildContext() {\n return {\n __group__: true,\n isButton: this.props.shape === 'button',\n onChange: this.onChange,\n selectedValue: this.state.value,\n disabled: this.props.disabled,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let { value } = nextProps;\n if ('value' in nextProps) {\n if (value === undefined) {\n value = '';\n }\n this.setState({\n value,\n });\n }\n }\n\n onChange = (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\n render() {\n const {\n rtl,\n className,\n disabled,\n shape,\n size,\n style,\n prefix,\n itemDirection,\n component,\n } = this.props;\n const others = pickOthers(Object.keys(RadioGroup.propTypes), this.props);\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n let children;\n if (this.props.children) {\n children = React.Children.map(this.props.children, (child, index) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n const checked = this.state.value === child.props.value;\n const tabIndex = (index === 0 && !this.state.value) || checked ? 0 : -1;\n const 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,\n tabIndex,\n rtl: childrtl,\n });\n }\n return React.cloneElement(child, {\n checked,\n rtl: childrtl,\n });\n });\n } else {\n children = this.props.dataSource.map((item, index) => {\n let option = item;\n if (typeof item !== 'object') {\n option = {\n label: item,\n value: item,\n disabled,\n };\n }\n const checked = this.state.value === option.value;\n return (\n <Radio\n key={index}\n tabIndex={(index === 0 && !this.state.value) || checked ? 0 : -1}\n value={option.value}\n checked={checked}\n label={option.label}\n disabled={disabled || option.disabled}\n />\n );\n });\n }\n\n const isButtonShape = shape === 'button';\n\n const cls = classnames({\n [`${prefix}radio-group`]: true,\n [`${prefix}radio-group-${itemDirection}`]: !isButtonShape,\n [`${prefix}radio-button`]: isButtonShape,\n [`${prefix}radio-button-${size}`]: isButtonShape,\n [className]: !!className,\n disabled,\n });\n\n const TagName = component;\n return (\n <TagName {...others} aria-disabled={disabled} role=\"radiogroup\" className={cls} style={style}>\n {children}\n </TagName>\n );\n }\n}\n\nexport default ConfigProvider.config(RadioGroup);\n","import Radio from './radio';\nimport RadioGroup from './radio-group';\n\nRadio.Group = RadioGroup;\n\nexport default Radio;\n","import 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';\n\nconst noop = {};\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\n\nexport default class CheckableItem extends Component {\n static 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\n static defaultProps = {\n disabled: false,\n checked: false,\n indeterminate: false,\n checkType: 'checkbox',\n checkDisabled: false,\n onChange: noop,\n };\n\n constructor(props) {\n super(props);\n\n bindCtx(this, ['stopPropagation', 'handleKeyDown', 'handleClick']);\n this.id = htmlId.escapeForId(`checkable-item-${props.id || props._key}`);\n }\n\n stopPropagation(e) {\n e.stopPropagation();\n }\n\n handleCheck(e) {\n const { checkType, checked, onChange } = this.props;\n if (!(checkType === 'radio' && checked)) {\n onChange(!checked, e);\n }\n }\n\n handleKeyDown(e) {\n if (e.keyCode === KEYCODE.SPACE && !this.props.checkDisabled) {\n this.handleCheck(e);\n }\n\n this.props.onKeyDown && this.props.onKeyDown(e);\n }\n\n handleClick(e) {\n this.handleCheck(e);\n\n this.props.onClick && this.props.onClick(e);\n }\n\n renderCheck() {\n const {\n root,\n checked,\n indeterminate,\n disabled,\n checkType,\n checkDisabled,\n onChange,\n } = this.props;\n const { labelToggleChecked } = root.props;\n const Check = checkType === 'radio' ? Radio : Checkbox;\n\n const checkProps = {\n tabIndex: '-1',\n 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\n return <Check aria-labelledby={this.id} {...checkProps} />;\n }\n\n render() {\n const { _key, root, checked, disabled, onClick, helper, children } = this.props;\n const { prefix, labelToggleChecked } = root.props;\n const others = pickOthers(Object.keys(CheckableItem.propTypes), this.props);\n\n const newProps = {\n _key,\n root,\n disabled,\n type: 'item',\n onClick,\n onKeyDown: this.handleKeyDown,\n ...others,\n };\n if (labelToggleChecked && !disabled) {\n newProps.onClick = this.handleClick;\n }\n\n return (\n <Item aria-checked={checked} {...newProps}>\n {this.renderCheck()}\n <span className={`${prefix}menu-item-text`} id={this.id}>\n {children}\n </span>\n {helper ? <div className={`${prefix}menu-item-helper`}>{helper}</div> : null}\n </Item>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport CheckableItem from './checkable-item';\n\n/**\n * Menu.CheckboxItem\n * @order 3\n * @description 该子组件选中情况不受 defaultSelectedKeys/selectedKeys 控制,请自行控制选中逻辑\n */\nexport default class CheckboxItem extends Component {\n static menuChildType = 'item';\n\n static propTypes = {\n /**\n * 是否选中\n */\n checked: PropTypes.bool,\n /**\n * 是否半选中\n */\n indeterminate: PropTypes.bool,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 选中或取消选中触发的回调函数\n * @param {Boolean} checked 是否选中\n * @param {Object} event 选中事件对象\n */\n onChange: PropTypes.func,\n /**\n * 帮助文本\n */\n helper: PropTypes.node,\n /**\n * 标签内容\n */\n children: PropTypes.node,\n checkboxDisabled: PropTypes.bool,\n };\n\n static defaultProps = {\n checked: false,\n indeterminate: false,\n disabled: false,\n onChange: () => {},\n checkboxDisabled: false,\n };\n\n render() {\n const { checkboxDisabled, ...others } = this.props;\n return (\n <CheckableItem\n role=\"menuitemcheckbox\"\n checkType=\"checkbox\"\n checkDisabled={checkboxDisabled}\n {...others}\n />\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport CheckableItem from './checkable-item';\n\n/**\n * Menu.RadioItem\n * @order 4\n * @description 该子组件选中情况不受 defaultSelectedKeys/selectedKeys 控制,请自行控制选中逻辑\n */\nexport default class RadioItem extends Component {\n static menuChildType = 'item';\n\n static propTypes = {\n /**\n * 是否选中\n */\n checked: PropTypes.bool,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 选中或取消选中触发的回调函数\n * @param {Boolean} checked 是否选中\n * @param {Object} event 选中事件对象\n */\n onChange: PropTypes.func,\n /**\n * 帮助文本\n */\n helper: PropTypes.node,\n /**\n * 标签内容\n */\n children: PropTypes.node,\n };\n\n static defaultProps = {\n checked: false,\n disabled: false,\n onChange: () => {},\n };\n\n render() {\n return <CheckableItem role=\"menuitemradio\" checkType=\"radio\" {...this.props} />;\n }\n}\n","import React, { Component, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Item from './item';\n\n/**\n * Menu.Group\n * @order 5\n */\nexport default class Group extends Component {\n static menuChildType = 'group';\n\n static propTypes = {\n root: PropTypes.object,\n className: PropTypes.string,\n /**\n * 标签内容\n */\n label: PropTypes.node,\n /**\n * 菜单项\n */\n children: PropTypes.node,\n parentMode: PropTypes.oneOf(['inline', 'popup']),\n };\n\n render() {\n const { root, className, label, children, parentMode, ...others } = this.props;\n const { prefix } = root.props;\n\n const newClassName = cx({\n [`${prefix}menu-group-label`]: true,\n [className]: !!className,\n });\n\n const newChildren = children.map(child => {\n const { className } = child.props;\n const newChildClassName = cx({\n [`${prefix}menu-group-item`]: true,\n [className]: !!className,\n });\n\n return cloneElement(child, {\n parentMode,\n className: newChildClassName,\n });\n });\n\n return [\n label && <Item\n key=\"menu-group-label\"\n className={newClassName}\n replaceClassName\n root={root}\n parentMode={parentMode}\n {...others}\n >\n {label}\n </Item>,\n ...newChildren,\n ];\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\n/**\n * Menu.Divider\n * @order 6\n */\nexport default class Divider extends Component {\n static menuChildType = 'divider';\n\n static propTypes = {\n root: PropTypes.object,\n className: PropTypes.string,\n };\n\n render() {\n const { root, className, ...others } = this.props;\n const { prefix } = root.props;\n\n const newClassName = cx({\n [`${prefix}menu-divider`]: true,\n [className]: !!className,\n });\n\n return <li role=\"separator\" className={newClassName} {...others} />;\n }\n}\n","import React, { Component } from 'react';\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';\n\nconst { bindCtx } = func;\nconst { getContextProps } = ConfigProvider;\nconst Menu = ConfigProvider.config(menu);\n\nlet menuInstance;\n\nclass ContextMenu extends Component {\n static 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\n static defaultProps = {\n prefix: 'next-',\n align: 'tl tl',\n mode: 'popup',\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n visible: true,\n };\n\n bindCtx(this, ['handleOverlayClose', 'handleOverlayOpen', 'handleItemClick', 'getOverlay']);\n }\n\n getOverlay(ref) {\n this.overlay = ref;\n }\n\n close() {\n this.setState({\n visible: false,\n });\n menuInstance = null;\n }\n\n handleOverlayClose(triggerType, e, ...others) {\n const clickedPopupMenu =\n triggerType === 'docClick' && this.popupNodes.some(node => node.contains(e.target));\n if (!clickedPopupMenu) {\n this.close();\n const { overlayProps } = this.props;\n if (overlayProps && overlayProps.onRequestClose) {\n overlayProps.onRequestClose(triggerType, e, ...others);\n }\n }\n }\n\n handleOverlayOpen() {\n this.popupNodes = this.overlay\n .getInstance()\n .getContent()\n .getInstance().popupNodes;\n const { overlayProps } = this.props;\n if (overlayProps && overlayProps.onOpen) {\n overlayProps.onOpen();\n }\n }\n\n handleItemClick(...args) {\n this.close();\n\n this.props.onItemClick && this.props.onItemClick(...args);\n }\n\n render() {\n const {\n className,\n popupClassName,\n target,\n align,\n offset,\n afterClose,\n overlayProps = {},\n ...others\n } = this.props;\n const contextProps = getContextProps(this.props);\n const { prefix } = contextProps;\n const { visible } = this.state;\n\n const newOverlayProps = {\n ...contextProps,\n ...overlayProps,\n target,\n align,\n offset,\n afterClose,\n visible,\n onRequestClose: this.handleOverlayClose,\n onOpen: this.handleOverlayOpen,\n ref: this.getOverlay,\n };\n const menuProps = {\n ...contextProps,\n triggerType: 'hover',\n ...others,\n className: cx({\n [`${prefix}context`]: true,\n [className]: !!className,\n }),\n popupClassName: cx({\n [`${prefix}context`]: true,\n [popupClassName]: !!popupClassName,\n }),\n onItemClick: this.handleItemClick,\n };\n\n newOverlayProps.rtl = false;\n\n return (\n <Overlay {...newOverlayProps}>\n <Menu {...menuProps} />\n </Overlay>\n );\n }\n}\n\n/**\n * 创建上下文菜单\n * @exportName create\n * @param {Object} props 属性对象\n */\nexport default function create(props) {\n if (menuInstance) {\n menuInstance.destroy();\n }\n\n /* eslint-disable no-unused-vars */\n const { afterClose, ...others } = props;\n /* eslint-enable no-unused-vars */\n\n const div = document.createElement('div');\n document.body.appendChild(div);\n\n const closeChain = () => {\n unmountComponentAtNode(div);\n document.body.removeChild(div);\n\n afterClose && afterClose();\n };\n\n const newContext = ConfigProvider.getContext();\n\n let menu;\n render(\n <ConfigProvider {...newContext}>\n <ContextMenu\n ref={ref => {\n menu = ref;\n }}\n afterClose={closeChain}\n {...others}\n />\n </ConfigProvider>,\n div,\n );\n\n menuInstance = {\n destroy: () => {\n if (menu) {\n menu.close();\n }\n },\n };\n\n return menuInstance;\n}\n","import 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';\n\nMenu.SubMenu = SubMenu;\nMenu.Item = SelectableItem;\nMenu.CheckboxItem = CheckboxItem;\nMenu.RadioItem = RadioItem;\nMenu.PopupItem = PopupItem;\nMenu.Group = Group;\nMenu.Divider = Divider;\nMenu.create = create;\n\n/* istanbul ignore next */\nconst transform = (props, deprecated) => {\n if ('indentSize' in props) {\n deprecated('indentSize', 'inlineIndent', 'Menu');\n\n const { indentSize, ...others } = props;\n props = { inlineIndent: indentSize, ...others };\n }\n\n if ('onDeselect' in props) {\n deprecated('onDeselect', 'onSelect', 'Menu');\n if (props.onDeselect) {\n const { onDeselect, onSelect, ...others } = props;\n const newOnSelect = (selectedKeys, item, extra) => {\n if (!extra.select) {\n onDeselect(extra.key);\n }\n if (onSelect) {\n onSelect(selectedKeys, item, extra);\n }\n };\n\n props = { onSelect: newOnSelect, ...others };\n }\n }\n\n return props;\n};\n\nexport default ConfigProvider.config(Menu, {\n transform,\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\n\n/**\n * Breadcrumb.Item\n */\nclass Item extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 面包屑节点链接,如果设置这个属性,则该节点为`<a />` ,否则是`<span />`\n */\n link: PropTypes.string,\n activated: PropTypes.bool,\n separator: PropTypes.node,\n className: PropTypes.any,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n prefix: 'next-',\n };\n\n static _typeMark = 'breadcrumb_item';\n\n // stateless separator component\n static Separator({ prefix, children }) {\n return <span className={`${prefix}breadcrumb-separator`}>{children}</span>;\n }\n\n render() {\n const { prefix, rtl, className, children, link, activated, separator, ...others } = this.props;\n const clazz = classNames(`${prefix}breadcrumb-text`, className, {\n activated,\n });\n\n return (\n <li dir={rtl ? 'rtl' : null} className={`${prefix}breadcrumb-item`}>\n {link ? (\n <a href={link} className={clazz} {...others}>\n {children}\n </a>\n ) : (\n <span className={clazz} {...others}>\n {children}\n </span>\n )}\n {activated ? null : Item.Separator({ prefix, children: separator })}\n </li>\n );\n }\n}\n\nexport default ConfigProvider.config(Item);\n","import React, { Component, Children } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Icon from '../icon';\r\nimport Menu from '../menu';\r\nimport ConfigProvider from '../config-provider';\r\nimport Item from './item';\r\nimport Overlay from '../overlay';\r\n\r\nconst { Popup } = Overlay;\r\n\r\n/**\r\n * Breadcrumb\r\n */\r\nclass Breadcrumb extends Component {\r\n static Item = Item;\r\n\r\n static propTypes = {\r\n /**\r\n * 样式类名的品牌前缀\r\n */\r\n prefix: PropTypes.string,\r\n rtl: PropTypes.bool,\r\n /*eslint-disable*/\r\n /**\r\n * 面包屑子节点,需传入 Breadcrumb.Item\r\n */\r\n children: (props, propName) => {\r\n Children.forEach(props[propName], child => {\r\n if (\r\n !(child && typeof child.type === 'function' && child.type._typeMark === 'breadcrumb_item')\r\n ) {\r\n throw new Error(\"Breadcrumb's children must be Breadcrumb.Item!\");\r\n }\r\n });\r\n },\r\n /* eslint-enable */\r\n /**\r\n * 面包屑最多显示个数,超出部分会被隐藏\r\n */\r\n maxNode: PropTypes.number,\r\n /**\r\n * 分隔符,可以是文本或 Icon\r\n */\r\n separator: PropTypes.node,\r\n /**\r\n * 设置标签类型\r\n */\r\n component: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\r\n className: PropTypes.any,\r\n };\r\n\r\n static defaultProps = {\r\n prefix: 'next-',\r\n maxNode: 4,\r\n separator: <Icon type=\"chevron-right-s\" />,\r\n component: 'nav',\r\n };\r\n\r\n render() {\r\n const {\r\n prefix,\r\n rtl,\r\n className,\r\n maxNode,\r\n children,\r\n separator,\r\n component,\r\n ...others\r\n } = this.props;\r\n // const clazz = classNames(``, className);\r\n let items;\r\n const menuItems = [];\r\n const length = Children.count(children);\r\n\r\n if (maxNode > 1 && length > maxNode) {\r\n const breakpointer = length - 3;\r\n items = [];\r\n\r\n // 用 for 循环替代 forEach,可以用 continue\r\n for (let i = 0; i < length; i++) {\r\n const ariaProps = {};\r\n const item = children[i];\r\n if (i === length - 1) {\r\n // push 最后一项,不带 separator\r\n ariaProps['aria-current'] = 'page';\r\n items.push(\r\n React.cloneElement(item, {\r\n prefix,\r\n key: i,\r\n ...ariaProps,\r\n className: `${prefix}breadcrumb-menu-item`,\r\n activated: i === length - 1,\r\n }),\r\n );\r\n }\r\n\r\n if (i === 0) {\r\n items.push(\r\n // push 第一项\r\n React.cloneElement(item, {\r\n prefix,\r\n separator,\r\n key: i,\r\n ...ariaProps,\r\n }),\r\n );\r\n continue;\r\n }\r\n\r\n if (i === breakpointer) {\r\n // 把当前项存进去\r\n menuItems.push(\r\n React.cloneElement(item, {\r\n key: i,\r\n ...ariaProps,\r\n }),\r\n );\r\n // push ...\r\n /* eslint no-script-url: 1 */\r\n items.push(\r\n React.cloneElement(\r\n item,\r\n {\r\n separator,\r\n prefix,\r\n key: i,\r\n href: 'javascript:;', // 不跳转\r\n activated: i === length - 1,\r\n ...ariaProps,\r\n className: `${prefix}breadcrumb-show-more`,\r\n },\r\n <Popup\r\n trigger={<Icon type=\"more\" />}\r\n triggerType=\"click\"\r\n align=\"tc bl\"\r\n offset={[0, 4]}\r\n >\r\n <Menu>\r\n {menuItems.map((menuItem, key) => {\r\n if (menuItem.props.link) {\r\n return (\r\n <Menu.Item key={key} {...menuItem.props}>\r\n <a href={menuItem.props.link}>{menuItem.props.children}</a>\r\n </Menu.Item>\r\n );\r\n } else {\r\n return (\r\n <Menu.Item key={key} {...menuItem.props}>\r\n {menuItem.props.children}\r\n </Menu.Item>\r\n );\r\n }\r\n })}\r\n </Menu>\r\n </Popup>,\r\n ),\r\n );\r\n } else if (i === length - 2) {\r\n // push 倒数第二项\r\n items.push(\r\n React.cloneElement(item, {\r\n separator,\r\n prefix,\r\n key: i,\r\n ...ariaProps,\r\n }),\r\n );\r\n } else {\r\n // push 到 menuItems 里面\r\n menuItems.push(\r\n React.cloneElement(item, {\r\n key: i,\r\n ...ariaProps,\r\n }),\r\n );\r\n }\r\n }\r\n } else {\r\n items = Children.map(children, (item, i) => {\r\n const ariaProps = {};\r\n\r\n if (i === length - 1) {\r\n ariaProps['aria-current'] = 'page';\r\n }\r\n\r\n return React.cloneElement(item, {\r\n separator,\r\n prefix,\r\n activated: i === length - 1,\r\n ...ariaProps,\r\n key: i,\r\n });\r\n });\r\n }\r\n\r\n if (rtl) {\r\n others.dir = 'rtl';\r\n }\r\n const BreadcrumbComponent = component;\r\n\r\n return (\r\n <BreadcrumbComponent aria-label=\"Breadcrumb\" className={className} {...others}>\r\n <ul className={`${prefix}breadcrumb`}>{items}</ul>\r\n </BreadcrumbComponent>\r\n );\r\n }\r\n}\r\n\r\nexport default ConfigProvider.config(Breadcrumb);\r\n","import moment from 'moment';\n\nexport const DAYS_OF_WEEK = 7;\n\nexport const CALENDAR_TABLE_COL_COUNT = 7;\n\nexport const CALENDAR_TABLE_ROW_COUNT = 6;\n\nexport const MONTH_TABLE_ROW_COUNT = 4;\n\nexport const MONTH_TABLE_COL_COUNT = 3;\n\nexport const YEAR_TABLE_ROW_COUNT = 4;\n\nexport const YEAR_TABLE_COL_COUNT = 3;\n\nexport const CALENDAR_MODE_YEAR = 'year';\n\nexport const CALENDAR_MODE_MONTH = 'month';\n\nexport const CALENDAR_MODE_DATE = 'date';\n\nexport const CALENDAR_MODES = [CALENDAR_MODE_DATE, CALENDAR_MODE_MONTH, CALENDAR_MODE_YEAR];\n\nexport function isDisabledDate(date, fn, view) {\n if (typeof fn === 'function' && fn(date, view)) {\n return true;\n }\n return false;\n}\n\nexport function checkMomentObj(props, propName, componentName) {\n if (props[propName] && !moment.isMoment(props[propName])) {\n return new Error(\n `Invalid prop ${propName} supplied to ${componentName}. Required a moment object`,\n );\n }\n}\n\nexport function formatDateValue(value, reservedValue = null) {\n if (value && moment.isMoment(value)) {\n return value;\n }\n return reservedValue;\n}\n\nexport function getVisibleMonth(defaultVisibleMonth, value) {\n let getVM = defaultVisibleMonth;\n if (typeof getVM !== 'function' || !moment.isMoment(getVM())) {\n getVM = () => {\n if (value) {\n return value;\n }\n return moment();\n };\n }\n return getVM();\n}\n\nexport function isSameYearMonth(dateA, dateB) {\n return dateA.month() === dateB.month() && dateA.year() === dateB.year();\n}\n\nexport function preFormatDateValue(value, format) {\n const val = typeof value === 'string' ? moment(value, format, false) : value;\n if (val && moment.isMoment(val) && val.isValid()) {\n return val;\n }\n\n return null;\n}\n\nexport function getLocaleData(\n { months, shortMonths, firstDayOfWeek, weekdays, shortWeekdays, veryShortWeekdays },\n localeData,\n) {\n return {\n ...localeData,\n monthsShort: () => shortMonths || localeData.monthsShort(),\n months: () => months || localeData.months(),\n firstDayOfWeek: () => firstDayOfWeek || localeData.firstDayOfWeek(),\n weekdays: () => weekdays || localeData.weekdays,\n weekdaysShort: () => shortWeekdays || localeData.weekdaysShort(),\n weekdaysMin: () => veryShortWeekdays || localeData.weekdaysMin(),\n };\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Animate from '../animate';\nimport Icon from '../icon';\nimport { obj, func, support, KEYCODE } from '../util';\nimport zhCN from '../locale/zh-cn';\nimport ConfigProvider from '../config-provider';\n\nconst { noop, bindCtx } = func;\n\n/**\n * Tag\n */\nclass Tag extends Component {\n static propTypes = {\n /**\n * 标签类名前缀,提供给二次开发者用\n * @default next-\n */\n prefix: PropTypes.string,\n /**\n * 标签的类型\n */\n type: PropTypes.oneOf(['normal', 'primary']),\n /**\n * 标签的尺寸(large 尺寸为兼容表单场景 large = medium)\n */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n closable: PropTypes.bool,\n /**\n * 是否开启动效\n */\n animation: PropTypes.bool,\n closeArea: PropTypes.oneOf(['tag', 'tail']),\n onClose: PropTypes.func,\n afterClose: PropTypes.func,\n /**\n * 标签出现动画结束后执行的回调\n */\n afterAppear: PropTypes.func,\n className: PropTypes.any,\n children: PropTypes.node,\n /**\n * 点击回调\n */\n onClick: PropTypes.func,\n _shape: PropTypes.oneOf(['default', 'closable', 'checkable']),\n disabled: PropTypes.bool,\n rtl: PropTypes.bool,\n locale: PropTypes.object,\n /**\n * color 标签的颜色,可选值 'red'、'green'、'yellow'、'blue'、'gray'\n */\n color: PropTypes.string,\n /**\n * icon 左侧图标\n */\n icon: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n type: 'normal',\n size: 'medium',\n closeArea: 'tail',\n color: 'blue',\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\n constructor(props) {\n super(props);\n\n this.state = {\n visible: true,\n };\n\n bindCtx(this, [\n 'handleBodyClick',\n 'handleTailClick',\n 'handleAnimationInit',\n 'handleAnimationEnd',\n 'renderTailNode',\n ]);\n }\n\n componentWillUnmount() {\n this.__destroyed = true;\n }\n\n handleClose(from) {\n const { animation, onClose } = this.props;\n const hasAnimation = support.animation && animation;\n\n // 先执行回调\n const result = onClose(from, this.tagNode);\n\n // 如果回调函数返回 false,则阻止关闭行为\n if (result !== false && !this.__destroyed) {\n this.setState(\n {\n visible: false,\n },\n () => {\n // 如果没有动画,则直接执行 afterClose\n !hasAnimation && this.props.afterClose(this.tagNode);\n },\n );\n }\n }\n\n // 标签体点击\n handleBodyClick(e) {\n const { closable, closeArea, onClick } = this.props;\n\n if (closable && closeArea === 'tag') {\n this.handleClose('tag');\n }\n\n if (typeof onClick === 'function') {\n return onClick(e);\n }\n }\n\n onKeyDown = e => {\n // 针对无障碍化要求 添加键盘SPACE事件\n const { closable, closeArea, onClick, disabled } = this.props;\n if (e.keyCode !== KEYCODE.SPACE || disabled) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n if (closable) {\n this.handleClose(closeArea);\n } else {\n typeof onClick === 'function' && onClick(e);\n }\n };\n\n handleTailClick(e) {\n e && e.preventDefault();\n e && e.stopPropagation();\n\n this.handleClose('tail');\n }\n\n handleAnimationInit(node) {\n this.props.afterAppear(node);\n }\n\n handleAnimationEnd(node) {\n this.props.afterClose(node);\n }\n\n renderAnimatedTag(children, animationName) {\n return (\n <Animate\n animation={animationName}\n afterAppear={this.handleAnimationInit}\n afterLeave={this.handleAnimationEnd}\n >\n {children}\n </Animate>\n );\n }\n\n renderIcon(leftCls) {\n const { icon } = this.props;\n if (icon) {\n if (typeof icon === 'string') {\n return <Icon type={icon} className={leftCls} />;\n } else {\n return React.cloneElement(icon, { className: leftCls });\n }\n }\n }\n\n renderTailNode() {\n const { prefix, closable, locale } = this.props;\n\n if (!closable) {\n return null;\n }\n\n return (\n <span\n className={`${prefix}tag-close-btn`}\n onClick={this.handleTailClick}\n role=\"button\"\n aria-label={locale.delete}\n >\n <Icon type=\"remove\" />\n </span>\n );\n }\n\n render() {\n const {\n prefix,\n type,\n size,\n _shape,\n closable,\n closeArea,\n className,\n children,\n animation,\n disabled,\n color,\n rtl,\n } = this.props;\n const { visible } = this.state;\n const others = obj.pickOthers(Tag.propTypes, this.props);\n const shape = closable ? 'closable' : _shape;\n const isChecked = _shape === 'checkable' && this.props['aria-checked'];\n const bodyClazz = classNames(\n [\n `${prefix}tag`,\n `${prefix}tag-${color}`,\n `${prefix}tag-${shape}`,\n `${prefix}tag-level-${type}`,\n `${prefix}tag-${size}`,\n ],\n {\n [`${prefix}tag-closable`]: closable,\n [`${prefix}tag-body-pointer`]: closable && closeArea === 'tag',\n },\n className,\n );\n // icon class\n const leftCls = `${prefix}tag-left-icon`;\n // close btn\n const tailNode = this.renderTailNode();\n // tag node\n const tagNode = !visible ? null : (\n <div\n className={bodyClazz}\n onClick={this.handleBodyClick}\n onKeyDown={this.onKeyDown}\n tabIndex={disabled ? '' : '0'}\n role=\"button\"\n aria-disabled={disabled}\n disabled={disabled}\n dir={rtl ? 'rtl' : undefined}\n ref={n => {\n this.tagNode = n;\n }}\n {...others}\n >\n <span className={`${prefix}tag-body`}>\n {this.renderIcon(leftCls)}\n {children}\n </span>\n {isChecked && type === 'normal' ? <Icon className={`${prefix}tag-checkable-tick`} size=\"xs\" type=\"tick-bold\" /> : null}\n {tailNode}\n </div>\n );\n\n if (animation && support.animation) {\n return this.renderAnimatedTag(tagNode, `${prefix}tag-zoom`);\n }\n\n // 未开启或不支持动画\n return tagNode;\n }\n}\n\nexport default ConfigProvider.config(Tag);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nclass Group extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.any,\n children: PropTypes.node,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n };\n\n render() {\n const { className, prefix, children, rtl, ...others } = this.props;\n const clazz = classNames(`${prefix || 'next-'}tag-group`, className);\n\n return (\n <div className={clazz} dir={rtl ? 'rtl' : undefined} {...others}>\n {children}\n </div>\n );\n }\n}\n\nexport default Group;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { obj, func } from '../util';\nimport Tag from './tag';\n\nconst { noop, bindCtx } = func;\n\n/**\n * Tag.Selectable\n */\nclass Selectable extends Component {\n static propTypes = {\n /**\n * 标签是否被选中,受控用法\n * tag checked or not, a controlled way\n */\n checked: PropTypes.bool,\n /**\n * 标签是否默认被选中,非受控用法\n * tag checked or not by default, a uncontrolled way\n */\n defaultChecked: PropTypes.bool,\n /**\n * 选中状态变化时触发的事件\n * @param {Boolean} checked 是否选中\n * @param {Event} e Dom 事件对象\n */\n onChange: PropTypes.func,\n /**\n * 标签是否被禁用\n */\n disabled: PropTypes.bool,\n className: PropTypes.any,\n };\n\n static defaultProps = {\n onChange: noop,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n checked: 'checked' in props ? props.checked : props.defaultChecked || false,\n };\n\n bindCtx(this, ['handleClick']);\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.checked !== undefined && props.checked !== state.checked) {\n return {\n checked: props.checked,\n };\n }\n\n return null;\n }\n\n handleClick(e) {\n e && e.preventDefault();\n // IE9 不支持 pointer-events,还是可能会触发 click 事件\n if (this.props.disabled) {\n return false;\n }\n\n const { checked } = this.state;\n\n this.setState({\n checked: !checked,\n });\n\n this.props.onChange(!checked, e);\n }\n\n render() {\n const attrFilterTarget = [\n 'checked',\n 'defaultChecked',\n 'onChange',\n 'className',\n // 防止这些额外的参数影响 tag 的类型\n '_shape',\n 'closable',\n ];\n\n const others = obj.pickOthers(attrFilterTarget, this.props);\n const isChecked = 'checked' in this.props ? this.props.checked : this.state.checked;\n const clazz = classNames(this.props.className, {\n checked: isChecked,\n });\n return (\n <Tag\n {...others}\n role=\"checkbox\"\n _shape=\"checkable\"\n aria-checked={isChecked}\n className={clazz}\n onClick={this.handleClick}\n />\n );\n }\n}\n\nexport default polyfill(Selectable);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Tag from './tag';\n\n/**\n * Tag.Closeable\n */\nclass Closeable extends Component {\n static propTypes = {\n disabled: PropTypes.bool,\n className: PropTypes.any,\n /**\n * closeable 标签的 onClose 响应区域, tag: 标签体, tail(默认): 关闭按钮\n */\n closeArea: PropTypes.oneOf(['tag', 'tail']),\n /**\n * 点击关闭按钮时的回调\n * @param {String} from 事件来源, tag: 标签体点击, tail: 关闭按钮点击\n * @returns {Boolean} true则关闭, false阻止关闭\n */\n onClose: PropTypes.func,\n /**\n * 标签关闭后执行的回调\n */\n afterClose: PropTypes.func,\n /**\n * 点击回调\n */\n onClick: PropTypes.func,\n type: PropTypes.oneOf(['normal', 'primary']),\n /**\n * 标签的尺寸(large 尺寸为兼容表单场景 large = medium)\n */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n children: PropTypes.any,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n disabled: false,\n type: 'normal',\n };\n\n render() {\n const {\n disabled,\n className,\n closeArea,\n onClose,\n afterClose,\n onClick,\n type,\n size,\n children,\n rtl,\n } = this.props;\n\n return (\n <Tag\n rtl={rtl}\n disabled={disabled}\n className={className}\n closeArea={closeArea}\n onClose={onClose}\n afterClose={afterClose}\n onClick={onClick}\n type={type}\n size={size}\n closable\n >\n {children}\n </Tag>\n );\n }\n}\n\nexport default Closeable;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { obj } from '../util';\nimport Icon from '../icon';\n\n/**\n * Tag.Colorable\n */\n\nclass Colorable extends Component {\n static propTypes = {\n /**\n * 标签类名前缀,提供给二次开发者用\n * @default next-\n */\n prefix: PropTypes.string,\n /**\n * color 标签的颜色,可选值 'red'、'green'、'yellow'、'blue'、'gray'\n */\n color: PropTypes.string,\n /**\n * size 标签尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * type 标签的类型,可选值 'normal'、'closeable'、'link'\n */\n type: PropTypes.oneOf(['normal', 'closeable', 'link']),\n /**\n * icon 左侧图标\n */\n icon: PropTypes.any,\n /**\n * value 表示 tag 的值\n */\n value: PropTypes.any,\n /**\n * onClose 点击回调,只有当 type=closeable 时有\n */\n onClose: PropTypes.func,\n className: PropTypes.string,\n href: PropTypes.string,\n target: PropTypes.string,\n children: PropTypes.any,\n rtl: PropTypes.bool,\n style: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n size: 'small',\n color: 'blue',\n type: 'normal',\n target: '_self',\n };\n\n renderIcon(leftCls) {\n const { icon } = this.props;\n if (icon) {\n if (typeof icon === 'string') {\n return <Icon type={icon} className={leftCls} />;\n } else {\n return React.cloneElement(icon, { className: leftCls });\n }\n }\n }\n\n render() {\n const {\n prefix,\n className,\n size,\n onClose,\n type,\n color,\n children,\n icon,\n rtl,\n value,\n href,\n target,\n style,\n ...others\n } = this.props;\n const classNames = classnames(\n `${prefix}color-tag`,\n `${prefix}color-tag-${color}`,\n className,\n {\n pointer: type === 'closeable',\n },\n {\n interactive: type === 'closeable' || type === 'link',\n },\n {\n [`${prefix}color-s-tag`]: size === 'small',\n },\n );\n\n const leftCls =\n size === 'small' ? `${prefix}color-s-tag-left-icon` : `${prefix}color-tag-left-icon`;\n const rightCls =\n size === 'small' ? `${prefix}color-s-tag-right-icon` : `${prefix}color-tag-right-icon`;\n const linkCls =\n size === 'small'\n ? `${prefix}color-s-tag-right-link-icon`\n : `${prefix}color-tag-right-link-icon`;\n\n if (type !== 'link') {\n return (\n <span\n className={classNames}\n dir={rtl ? 'rtl' : undefined}\n style={style}\n {...obj.pickAttrs(others)}\n >\n {/* {icon && <Icon type={icon} className={leftCls} />} */}\n {this.renderIcon(leftCls)}\n <span className={`${prefix}color-tag-children`}>{children}</span>\n {type === 'closeable' ? (\n <Icon\n type=\"remove\"\n onClick={onClose ? () => onClose(value) : () => {}}\n className={rightCls}\n />\n ) : null}\n </span>\n );\n } else {\n return (\n <a\n className={classNames}\n dir={rtl ? 'rtl' : undefined}\n href={href}\n target={target}\n style={style}\n {...obj.pickAttrs(others)}\n >\n {icon && <Icon type={icon} className={`${prefix}color-tag-left-icon`} />}\n <span className={`${prefix}color-tag-children`}>{children}</span>\n <Icon type=\"chevron-right-s\" className={linkCls} />\n </a>\n );\n }\n }\n}\n\nexport default Colorable;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { obj } from '../util';\n\nclass TableTag extends Component {\n static propTypes = {\n /**\n * 标签类名前缀,提供给二次开发者用\n * @default next-\n */\n prefix: PropTypes.string,\n /**\n * color 标签的颜色,可选值 'red'、'green'、'yellow'、'blue'、'gray'\n */\n color: PropTypes.string,\n className: PropTypes.string,\n children: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n color: 'blue',\n };\n\n render() {\n const { prefix, color, children, className, rtl, ...others } = this.props;\n const cls = classnames(`${prefix}table-tag`, `${prefix}table-tag-${color}`, className);\n\n return (\n <span className={cls} {...obj.pickAttrs(others)} dir={rtl ? 'rtl' : undefined}>\n <span className={`${prefix}table-tag-dot`} />\n {children}\n </span>\n );\n }\n}\n\nexport default TableTag;\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 Colorable from './colorable';\nimport TableTag from './tabletag';\n\nconst ConfigTag = ConfigProvider.config(Tag, {\n transfrom: /* istanbul ignore next */ (props, deprecated) => {\n const { shape, type } = props;\n if (shape === 'selectable') {\n deprecated('shape=selectable', 'Tag.Selectable', 'Tag');\n }\n\n if (shape === 'deletable') {\n deprecated('shape=deletable', 'Tag.Closeable', 'Tag');\n }\n\n if (shape === 'link') {\n deprecated('shape=link', '<Tag><a href=\"x\">x</a></Tag>', 'Tag');\n }\n\n if (shape === 'readonly' || shape === 'interactive') {\n log.warning(`Warning: [ shape=${shape} ] is deprecated at [ Tag ]`);\n }\n\n if (type === 'secondary') {\n log.warning('Warning: [ type=secondary ] is deprecated at [ Tag ]');\n }\n\n ['count', 'marked', 'value', 'onChange'].forEach(key => {\n if (key in props) {\n log.warning(`Warning: [ ${key} ] is deprecated at [ Tag ]`);\n }\n });\n\n if ('selected' in props || 'defaultSelected' in props) {\n log.warning(\n 'Warning: [ selected|defaultSelected ] is deprecated at [ Tag ], use [ checked|defaultChecked ] at [ Tag.Selectable ] instead of it',\n );\n }\n\n if ('closed' in props) {\n log.warning(\n 'Warning: [ closed ] is deprecated at [ Tag ], use [ onClose ] at [ Tag.Closeable ] instead of it',\n );\n }\n\n if ('onSelect' in props) {\n deprecated('onSelect', '<Tag.Selectable onChange/>', 'Tag');\n }\n\n if ('afterClose' in props) {\n log.warning(\n 'Warning: [ afterClose ] is deprecated at [ Tag ], use [ afterClose ] at [ Tag.Closeable ] instead of it',\n );\n }\n\n return props;\n },\n});\n\nConfigTag.Group = ConfigProvider.config(Group);\n\nConfigTag.Selectable = ConfigProvider.config(Selectable);\n\nConfigTag.Colorable = ConfigProvider.config(Colorable);\n\nConfigTag.TableTag = ConfigProvider.config(TableTag);\n\n// 有的地方叫做 Closeable 有的地方用Closeable, 为了保持兼容 文档类出现 Closeable, Closeable可以继续用\nConfigTag.Closable = ConfigProvider.config(Closable);\nConfigTag.Closeable = ConfigTag.Closable;\n\nexport default ConfigTag;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { func } from '../util';\nimport zhCN from '../locale/zh-cn';\n\nclass Base extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 当前值\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * 初始化值\n */\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * 发生改变的时候触发的回调\n * @param {String} value 数据\n * @param {Event} e DOM事件对象\n */\n onChange: PropTypes.func,\n /**\n * 键盘按下的时候触发的回调\n * @param {Event} e DOM事件对象\n * @param {Object} opts 可扩展的附加信息:<br> - opts.overMaxLength: {Boolean} 已超出最大长度<br> - opts.beTrimed: {Boolean} 输入的空格被清理\n */\n onKeyDown: PropTypes.func,\n /**\n * 禁用状态\n */\n disabled: PropTypes.bool,\n /**\n * 最大长度\n */\n maxLength: PropTypes.number,\n /**\n * 是否展现最大长度样式\n */\n hasLimitHint: PropTypes.bool,\n /**\n * 当设置了maxLength时,是否截断超出字符串\n */\n cutString: PropTypes.bool,\n /**\n * 只读\n */\n readOnly: PropTypes.bool,\n /**\n * onChange返回会自动去除头尾空字符\n */\n trim: PropTypes.bool,\n /**\n * 输入提示\n */\n placeholder: PropTypes.string,\n /**\n * 获取焦点时候触发的回调\n * @param {Event} e DOM事件对象\n */\n onFocus: PropTypes.func,\n /**\n * 失去焦点时候触发的回调\n * @param {Event} e DOM事件对象\n */\n onBlur: PropTypes.func,\n /**\n * 自定义字符串计算长度方式\n * @param {String} value 数据\n * @returns {Number} 自定义长度\n */\n getValueLength: PropTypes.func,\n inputStyle: PropTypes.object,\n /**\n * 自定义class\n */\n className: PropTypes.string,\n /**\n * 自定义内联样式\n */\n style: PropTypes.object,\n /**\n * 原生type\n */\n htmlType: PropTypes.string,\n /**\n * name\n */\n name: PropTypes.string,\n rtl: PropTypes.bool,\n state: PropTypes.oneOf(['error', 'loading', 'success']),\n locale: PropTypes.object,\n };\n\n static defaultProps = {\n disabled: false,\n prefix: 'next-',\n maxLength: null,\n hasLimitHint: false,\n cutString: true,\n readOnly: false,\n trim: false,\n onFocus: func.noop,\n onBlur: func.noop,\n onChange: func.noop,\n onKeyDown: func.noop,\n getValueLength: func.noop,\n locale: zhCN.Input,\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n this.setState({\n value: typeof nextProps.value === 'undefined' ? '' : nextProps.value,\n });\n }\n }\n\n ieHack(value) {\n return value;\n }\n\n onChange(e) {\n let { value } = e.target;\n\n if (this.props.trim) {\n value = value.trim();\n }\n\n value = this.ieHack(value);\n\n // not controlled\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n\n // Number('') = 0\n if (value && this.props.htmlType === 'number') {\n value = Number(value);\n }\n\n this.props.onChange(value, e);\n }\n\n onKeyDown(e) {\n const { value } = e.target;\n const { maxLength } = this.props;\n const len = maxLength > 0 && value ? this.getValueLength(value) : 0;\n const opts = {};\n\n // has enable trim and has input whitespace\n if (this.props.trim && e.keyCode === 32) {\n opts.beTrimed = true;\n }\n\n // has defined maxLength and has over max length and has not input backspace and delete\n if (\n maxLength > 0 &&\n (len > maxLength + 1 ||\n ((len === maxLength || len === maxLength + 1) && e.keyCode !== 8 && e.keyCode !== 46))\n ) {\n opts.overMaxLength = true;\n }\n\n this.props.onKeyDown(e, opts);\n }\n\n onFocus(e) {\n this.setState({\n focus: true,\n });\n this.props.onFocus(e);\n }\n\n onBlur(e) {\n this.setState({\n focus: false,\n });\n this.props.onBlur(e);\n }\n\n renderLength() {\n const { maxLength, hasLimitHint, prefix, rtl } = this.props;\n const len = maxLength > 0 && this.state.value ? this.getValueLength(this.state.value) : 0;\n\n const classesLenWrap = classNames({\n [`${prefix}input-len`]: true,\n [`${prefix}error`]: len > maxLength,\n });\n\n const content = rtl ? `${maxLength}/${len}` : `${len}/${maxLength}`;\n\n return maxLength && hasLimitHint ? <span className={classesLenWrap}>{content}</span> : null;\n }\n\n renderControl() {\n const lenWrap = this.renderLength();\n\n return lenWrap ? <span className={`${this.props.prefix}input-control`}>{lenWrap}</span> : null;\n }\n\n getClass() {\n const { disabled, state, prefix } = this.props;\n\n return classNames({\n [`${prefix}input`]: true,\n [`${prefix}disabled`]: !!disabled,\n [`${prefix}error`]: state === 'error',\n [`${prefix}success`]: state === 'success',\n [`${prefix}focus`]: this.state.focus,\n });\n }\n\n getProps() {\n const { placeholder, inputStyle, disabled, readOnly, cutString, maxLength, name } = this.props;\n const props = {\n style: inputStyle,\n placeholder,\n disabled,\n readOnly,\n 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 };\n\n // fix accessibility:auto process status of aria disabled\n if (disabled) {\n props['aria-disabled'] = disabled;\n }\n\n return props;\n }\n\n saveRef = input => {\n this.inputRef = input;\n };\n\n getInputNode() {\n return this.inputRef;\n }\n\n focus(start, end) {\n this.inputRef.focus();\n if (typeof start !== 'undefined') {\n this.inputRef.selectionStart = start;\n }\n if (typeof end !== 'undefined') {\n this.inputRef.selectionEnd = end;\n }\n }\n}\n\nexport default Base;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\n\n/**\n * Input.Group\n */\nclass Group extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n children: PropTypes.node,\n /**\n * 输入框前附加内容\n */\n addonBefore: PropTypes.node,\n /**\n * 输入框前附加内容css\n */\n addonBeforeClassName: PropTypes.string,\n /**\n * 输入框后附加内容\n */\n addonAfter: PropTypes.node,\n /**\n * 输入框后额外css\n */\n addonAfterClassName: PropTypes.string,\n /**\n * rtl\n */\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n };\n\n render() {\n const {\n className,\n style,\n children,\n prefix,\n addonBefore,\n addonAfter,\n addonBeforeClassName,\n addonAfterClassName,\n rtl,\n ...others\n } = this.props;\n\n const cls = classNames({\n [`${prefix}input-group`]: true,\n [className]: !!className,\n });\n\n const addonCls = `${prefix}input-group-addon`;\n const beforeCls = classNames(addonCls, {\n [`${prefix}before`]: true,\n [addonBeforeClassName]: addonBeforeClassName,\n });\n const afterCls = classNames(addonCls, {\n [`${prefix}after`]: true,\n [addonAfterClassName]: addonAfterClassName,\n });\n\n const before = addonBefore ? <span className={beforeCls}>{addonBefore}</span> : null;\n\n const after = addonAfter ? <span className={afterCls}>{addonAfter}</span> : null;\n\n return (\n <span {...others} dir={rtl ? 'rtl' : undefined} className={cls} style={style}>\n {before}\n {children}\n {after}\n </span>\n );\n }\n}\n\nexport default ConfigProvider.config(Group);\n","import React 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\n// preventDefault here can stop onBlur to keep focus state\nfunction preventDefault(e) {\n e.preventDefault();\n}\n\n/** Input */\nexport default class Input extends Base {\n static propTypes = {\n ...Base.propTypes,\n /**\n * label\n */\n label: PropTypes.node,\n /**\n * 是否出现clear按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 是否有边框\n */\n hasBorder: PropTypes.bool,\n /**\n * 状态\n * @enumdesc 错误, 校验中, 成功\n */\n state: PropTypes.oneOf(['error', 'loading', 'success']),\n /**\n * 尺寸\n * @enumdesc 小, 中\n */\n size: PropTypes.oneOf(['xs', 'small', 'medium', 'large']),\n /**\n * 按下回车的回调\n */\n onPressEnter: PropTypes.func,\n\n onClear: PropTypes.func,\n /**\n * 原生type\n */\n htmlType: PropTypes.string,\n htmlSize: PropTypes.string,\n /**\n * 水印 (Icon的type类型,和hasClear占用一个地方)\n */\n hint: PropTypes.string,\n /**\n * 文字前附加内容\n */\n innerBefore: PropTypes.node,\n /**\n * 文字后附加内容\n */\n innerAfter: PropTypes.node,\n /**\n * 输入框前附加内容\n */\n addonBefore: PropTypes.node,\n /**\n * 输入框后附加内容\n */\n addonAfter: PropTypes.node,\n /**\n * 输入框前附加文字\n */\n addonTextBefore: PropTypes.node,\n /**\n * 输入框后附加文字\n */\n addonTextAfter: PropTypes.node,\n /**\n * (原生input支持)\n */\n autoComplete: PropTypes.string,\n /**\n * 自动聚焦(原生input支持)\n */\n autoFocus: PropTypes.bool,\n inputRender: PropTypes.func,\n extra: PropTypes.node,\n innerBeforeClassName: PropTypes.string,\n innerAfterClassName: PropTypes.string,\n };\n\n static defaultProps = {\n ...Base.defaultProps,\n size: 'medium',\n autoComplete: 'off',\n hasBorder: true,\n onPressEnter: func.noop,\n inputRender: el => el,\n };\n\n constructor(props) {\n super(props);\n\n let value;\n if ('value' in props) {\n value = props.value;\n } else {\n value = props.defaultValue;\n }\n\n this.state = {\n value: typeof value === 'undefined' ? '' : value,\n htmlType: props.htmlType\n };\n }\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 getValueLength(value) {\n const nv = `${value}`;\n let strLen = this.props.getValueLength(nv);\n if (typeof strLen !== 'number') {\n strLen = nv.length;\n }\n\n return strLen;\n }\n\n togglePassword = () => {\n this.setState({\n htmlType: this.state.htmlType === 'password' ? undefined : 'password',\n });\n }\n\n renderControl() {\n const { hasClear, readOnly, state, prefix, hint, extra, locale, htmlType } = this.props;\n\n const lenWrap = this.renderLength();\n\n let stateWrap = null;\n // if (state === 'success') {\n // stateWrap = <Icon type=\"tick-o-fill\" className={`${prefix}icon-success-filling`} />;\n // } else if (state === 'loading') {\n // stateWrap = <Icon type=\"loading\" />;\n // }\n\n if (state === 'loading') stateWrap = <Icon type=\"loading\" />;\n\n let clearWrap = null;\n const showClear = hasClear && !readOnly && !!`${this.state.value}`;\n\n if (hint || showClear) {\n let hintIcon = null;\n if (hint) {\n hintIcon = <Icon type={hint} className={`${prefix}input-hint`} />;\n } else {\n hintIcon = (\n <Icon\n type=\"remove-o-fill\"\n role=\"button\"\n tabIndex=\"0\"\n className={`${prefix}input-hint`}\n aria-label={locale.clear}\n onClick={this.onClear}\n onMouseDown={preventDefault}\n onKeyDown={this.handleKeyDownFromClear}\n />\n );\n }\n\n clearWrap = (\n <span className={`${prefix}input-hint-wrap`}>\n {showClear && hint ? (\n <Icon\n type=\"remove-o-fill\"\n role=\"button\"\n tabIndex=\"0\"\n className={`${prefix}input-clear`}\n aria-label={locale.clear}\n onClick={this.onClear}\n onMouseDown={preventDefault}\n onKeyDown={this.handleKeyDownFromClear}\n />\n ) : null}\n {hintIcon}\n </span>\n );\n }\n\n let passwordIcon = null;\n\n if (htmlType === 'password') {\n passwordIcon = <Icon type={this.state.htmlType === 'password' ? 'eye-slash' : 'eye'} onClick={this.togglePassword} />;\n }\n\n if (state === 'loading') {\n clearWrap = null;\n }\n\n return clearWrap || lenWrap || stateWrap || extra || passwordIcon ? (\n <span className={`${prefix}input-control`}>\n {clearWrap}\n {passwordIcon}\n {lenWrap}\n {stateWrap}\n {extra}\n </span>\n ) : null;\n }\n\n renderLabel() {\n const { label, prefix, id } = this.props;\n return label ? (\n <label className={`${prefix}input-label`} htmlFor={id}>\n {label}\n </label>\n ) : null;\n }\n\n renderInner(inner, cls) {\n return inner ? <span className={cls}>{inner}</span> : null;\n }\n\n handleKeyDown = e => {\n if (e.keyCode === 13) {\n this.props.onPressEnter(e);\n }\n\n this.onKeyDown(e);\n };\n\n handleKeyDownFromClear = e => {\n if (e.keyCode === 13) {\n this.onClear(e);\n }\n };\n\n onClear = (e) => {\n if (this.props.disabled) {\n return;\n }\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\n render() {\n const {\n size,\n // htmlType,\n htmlSize,\n autoComplete,\n autoFocus,\n disabled,\n style,\n innerBefore,\n innerAfter,\n innerBeforeClassName,\n innerAfterClassName,\n className,\n hasBorder,\n prefix,\n addonBefore,\n addonAfter,\n addonTextBefore,\n addonTextAfter,\n inputRender,\n rtl,\n } = this.props;\n const { htmlType } = this.state;\n const hasAddon = addonBefore || addonAfter || addonTextBefore || addonTextAfter;\n const cls = classNames(this.getClass(), {\n [`${prefix}${size}`]: true,\n [`${prefix}hidden`]: this.props.htmlType === 'hidden',\n [`${prefix}noborder`]: !hasBorder || this.props.htmlType === 'file',\n [`${prefix}input-group-auto-width`]: hasAddon,\n [className]: !!className && !hasAddon,\n });\n\n const innerCls = `${prefix}input-inner`;\n const innerBeforeCls = classNames({\n [innerCls]: true,\n [`${prefix}before`]: true,\n [innerBeforeClassName]: innerBeforeClassName,\n });\n const innerAfterCls = classNames({\n [innerCls]: true,\n [`${prefix}after`]: true,\n [innerAfterClassName]: innerAfterClassName,\n });\n\n const props = this.getProps();\n // custom data attributes are assigned to the top parent node\n // data-类自定义数据属性分配到顶层node节点\n const dataProps = obj.pickAttrsWith(this.props, 'data-');\n // Custom props are transparently transmitted to the core input node by default\n // 自定义属性默认透传到核心node节点:input\n const others = obj.pickOthers(Object.assign({}, dataProps, Input.propTypes), this.props);\n\n const inputEl = (\n <input\n {...others}\n {...props}\n height=\"100%\"\n type={htmlType}\n size={htmlSize}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n onKeyDown={this.handleKeyDown}\n ref={this.saveRef}\n />\n );\n\n const inputWrap = (\n <span\n {...dataProps}\n dir={rtl ? 'rtl' : undefined}\n className={cls}\n style={hasAddon ? undefined : style}\n >\n {this.renderLabel()}\n {this.renderInner(innerBefore, innerBeforeCls)}\n {inputRender(inputEl)}\n {this.renderInner(innerAfter, innerAfterCls)}\n {this.renderControl()}\n </span>\n );\n\n const groupCls = classNames({\n [`${prefix}input-group-text`]: true,\n [`${prefix}${size}`]: !!size,\n [`${prefix}disabled`]: disabled,\n });\n\n const addonBeforeCls = classNames({\n [groupCls]: addonTextBefore,\n });\n const addonAfterCls = classNames({\n [groupCls]: addonTextAfter,\n });\n\n if (hasAddon) {\n return (\n <Group\n {...dataProps}\n className={className}\n style={style}\n addonBefore={addonBefore || addonTextBefore}\n addonBeforeClassName={addonBeforeCls}\n addonAfter={addonAfter || addonTextAfter}\n addonAfterClassName={addonAfterCls}\n >\n {inputWrap}\n </Group>\n );\n }\n\n return inputWrap;\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { obj, env } from '../util';\nimport Base from './base';\n\nfunction onNextFrame(cb) {\n if (window.requestAnimationFrame) {\n return window.requestAnimationFrame(cb);\n }\n return window.setTimeout(cb, 1);\n}\n\nfunction clearNextFrameAction(nextFrameId) {\n if (window.cancelAnimationFrame) {\n window.cancelAnimationFrame(nextFrameId);\n } else {\n window.clearTimeout(nextFrameId);\n }\n}\n\n// safari in mac\nconst isMacSafari =\n typeof navigator !== 'undefined' && navigator && navigator.userAgent\n ? navigator.userAgent.match(/^((?!chrome|android|windows).)*safari/i)\n : false;\n\nconst 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/**\n * Input.TextArea\n * @order 2\n */\nexport default class TextArea extends Base {\n static propTypes = {\n ...Base.propTypes,\n /**\n * 是否有边框\n */\n hasBorder: PropTypes.bool,\n /**\n * 状态\n * @enumdesc 错误\n */\n state: PropTypes.oneOf(['error']),\n /**\n * 自动高度 true / {minRows: 2, maxRows: 4}\n */\n autoHeight: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n /**\n * 多行文本框高度 <br />(不要直接用height设置多行文本框的高度, ie9 10会有兼容性问题)\n */\n rows: PropTypes.number,\n };\n\n static defaultProps = {\n ...Base.defaultProps,\n hasBorder: true,\n rows: 4,\n autoHeight: false,\n };\n\n constructor(props) {\n super(props);\n\n let value;\n if ('value' in props) {\n value = props.value;\n } else {\n value = props.defaultValue;\n }\n\n this.state = {\n value: typeof value === 'undefined' ? '' : value,\n };\n }\n\n componentDidMount() {\n const { autoHeight } = this.props;\n if (autoHeight) {\n if (typeof autoHeight === 'object') {\n /* eslint-disable react/no-did-mount-set-state */\n this.setState(this._getMinMaxHeight(autoHeight, this.state.value));\n } else {\n this.setState({\n height: this._getHeight(this.state.value),\n overflowY: 'hidden',\n });\n }\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (super.UNSAFE_componentWillReceiveProps) {\n super.UNSAFE_componentWillReceiveProps(nextProps);\n }\n\n if (this.props.autoHeight && this.props.value !== nextProps.value) {\n this._resizeTextArea(nextProps.value);\n }\n }\n\n _getMinMaxHeight({ minRows, maxRows }, value) {\n const node = ReactDOM.findDOMNode(this.helpRef);\n node.setAttribute('rows', minRows);\n const minHeight = node.clientHeight;\n\n node.setAttribute('rows', maxRows);\n const maxHeight = node.clientHeight;\n\n node.setAttribute('rows', '1');\n const height = this._getHeight(value);\n\n return {\n minHeight,\n maxHeight,\n height,\n overflowY: height <= maxHeight ? 'hidden' : undefined,\n };\n }\n\n _getHeight(value) {\n const node = ReactDOM.findDOMNode(this.helpRef);\n node.value = value;\n\n return node.scrollHeight;\n }\n\n _resizeTextArea = value => {\n if (this.nextFrameActionId) {\n clearNextFrameAction(this.nextFrameActionId);\n }\n this.nextFrameActionId = onNextFrame(() => {\n const height = this._getHeight(value);\n const maxHeight = this.state.maxHeight ? this.state.maxHeight : Infinity;\n\n this.setState({\n height: this._getHeight(value),\n overflowY: height <= maxHeight ? 'hidden' : undefined,\n });\n });\n };\n\n ieHack(value) {\n // Fix: textarea dit not support maxLength in ie9\n /* istanbul ignore if */\n if (env.ieVersion === 9 && this.props.maxLength) {\n const maxLength = parseInt(this.props.maxLength);\n const len = this.getValueLength(value, true);\n if (len > maxLength && this.props.cutString) {\n value = value.replace(/\\n/g, '\\n\\n');\n value = value.substr(0, maxLength);\n value = value.replace(/\\n\\n/g, '\\n');\n }\n }\n\n this.props.autoHeight && this._resizeTextArea(value);\n\n return value;\n }\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 getValueLength(value) {\n const { maxLength, cutString } = this.props;\n\n const nv = `${value}`;\n let strLen = this.props.getValueLength(nv);\n if (typeof strLen !== 'number') {\n strLen = nv.length;\n }\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\n return strLen;\n }\n\n saveTextAreaRef(textArea) {\n this.inputRef = textArea;\n }\n\n saveHelpRef(ref) {\n this.helpRef = ref;\n }\n\n render() {\n const { rows, style, className, autoHeight, prefix, rtl, hasBorder } = this.props;\n\n const cls = classNames(this.getClass(), {\n [`${prefix}input-textarea`]: true,\n [`${prefix}noborder`]: !hasBorder,\n [className]: !!className,\n });\n\n const props = this.getProps();\n // custom data attributes are assigned to the top parent node\n // data-类自定义数据属性分配到顶层node节点\n const dataProps = obj.pickAttrsWith(this.props, 'data-');\n // Custom props are transparently transmitted to the core input node by default\n // 自定义属性默认透传到核心node节点:input\n const others = obj.pickOthers(Object.assign({}, dataProps, TextArea.propTypes), this.props);\n\n const textareStyle = {\n ...props.style,\n height: this.state.height,\n minHeight: this.state.minHeight,\n maxHeight: this.state.maxHeight,\n overflowY: this.state.overflowY,\n };\n\n const wrapStyle = autoHeight ? { ...style, position: 'relative' } : style;\n\n return (\n <span className={cls} style={wrapStyle} dir={rtl ? 'rtl' : undefined} {...dataProps}>\n <textarea\n {...others}\n {...props}\n data-real\n rows={rows}\n style={textareStyle}\n ref={this.saveRef.bind(this)}\n onKeyDown={this.onKeyDown.bind(this)}\n />\n {autoHeight ? (\n <textarea\n data-fake\n ref={this.saveHelpRef.bind(this)}\n style={{ ...props.style, ...hiddenStyle }}\n rows=\"1\"\n />\n ) : null}\n {this.renderControl()}\n </span>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Input from './input';\nimport TextArea from './textarea';\nimport Group from './group';\n\nInput.TextArea = ConfigProvider.config(TextArea, {\n exportNames: ['getInputNode', 'focus'],\n});\nInput.Group = Group;\n\n// 用来自动生成文档的工具底层依赖的 react-docgen,无法解析生成 HOC 的方法中存在第二个参数的情况\n// 所以不能在 input.jsx/textarea.jsx 中生成 HOC\nexport default ConfigProvider.config(Input, {\n exportNames: ['getInputNode', 'focus'],\n});\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Overlay from '../overlay';\r\nimport ConfigProvider from '../config-provider';\r\nimport { obj, func } from '../util';\r\n\r\n/* eslint-disable react/prefer-stateless-function */\r\n\r\n/** Loading */\r\nclass Loading extends React.Component {\r\n static propTypes = {\r\n /**\r\n * 样式前缀\r\n */\r\n prefix: PropTypes.string,\r\n /**\r\n * 自定义内容\r\n */\r\n tip: PropTypes.any,\r\n /**\r\n * 自定义内容位置\r\n * @enumdesc 出现在动画右边, 出现在动画下面\r\n */\r\n tipAlign: PropTypes.oneOf(['right', 'bottom']),\r\n /**\r\n * loading 状态, 默认 true\r\n */\r\n visible: PropTypes.bool,\r\n onVisibleChange: PropTypes.func,\r\n /**\r\n * 自定义class\r\n */\r\n className: PropTypes.string,\r\n /**\r\n * 自定义内联样式\r\n */\r\n style: PropTypes.object,\r\n /**\r\n * 设置动画尺寸\r\n * @description 仅仅对默认动画效果起作用\r\n * @enumdesc 大号, 中号\r\n */\r\n size: PropTypes.oneOf(['large', 'medium']),\r\n /**\r\n * 自定义动画\r\n */\r\n indicator: PropTypes.any,\r\n /**\r\n * 动画颜色\r\n */\r\n color: PropTypes.string,\r\n /**\r\n * 全屏展示\r\n */\r\n fullScreen: PropTypes.bool,\r\n /**\r\n * 子元素\r\n */\r\n children: PropTypes.any,\r\n /**\r\n * should loader be displayed inline\r\n */\r\n inline: PropTypes.bool,\r\n rtl: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n prefix: 'next-',\r\n visible: true,\r\n onVisibleChange: func.noop,\r\n tipAlign: 'bottom',\r\n size: 'medium',\r\n inline: true,\r\n };\r\n\r\n render() {\r\n const {\r\n tip,\r\n visible,\r\n children,\r\n className,\r\n style,\r\n indicator,\r\n color,\r\n prefix,\r\n fullScreen,\r\n onVisibleChange,\r\n tipAlign,\r\n size,\r\n inline,\r\n rtl,\r\n } = this.props;\r\n\r\n let indicatorDom = null;\r\n const dotCls = `${prefix}loading-dot`;\r\n\r\n if (indicator) {\r\n indicatorDom = indicator;\r\n } else {\r\n const backgroundColor = color;\r\n const fusionReactorCls = classNames({\r\n [`${prefix}loading-dot-container`]: true,\r\n [`${prefix}loading-dot-container-${size}`]: true,\r\n });\r\n indicatorDom = (\r\n <div className={fusionReactorCls} dir={rtl ? 'rtl' : undefined}>\r\n <span className={dotCls} style={{ backgroundColor }} />\r\n <span className={dotCls} style={{ backgroundColor }} />\r\n <span className={dotCls} style={{ backgroundColor }} />\r\n </div>\r\n );\r\n }\r\n\r\n const loadingCls = classNames({\r\n [`${prefix}loading`]: true,\r\n [`${prefix}open`]: visible,\r\n [`${prefix}loading-inline`]: inline,\r\n [className]: className,\r\n });\r\n\r\n const tipCls = classNames({\r\n [`${prefix}loading-tip`]: true,\r\n [`${prefix}loading-tip-fullscreen`]: fullScreen,\r\n // 默认非 right就是 bottom\r\n [`${prefix}loading-right-tip`]: tipAlign === 'right',\r\n });\r\n\r\n const others = obj.pickOthers(Loading.propTypes, this.props);\r\n\r\n const contentCls = classNames({\r\n [`${prefix}loading-component`]: visible,\r\n [`${prefix}loading-wrap`]: true,\r\n });\r\n\r\n return fullScreen ? (\r\n [\r\n children,\r\n <Overlay\r\n key=\"overlay\"\r\n hasMask\r\n align=\"cc cc\"\r\n {...others}\r\n className={className}\r\n style={style}\r\n visible={visible}\r\n onRequestClose={onVisibleChange}\r\n >\r\n <div className={tipCls}>\r\n <div className={`${prefix}loading-indicator`}>{indicatorDom}</div>\r\n <div className={`${prefix}loading-tip-content`}>{tip}</div>\r\n {/* 由于撑开问题 使用同样的两个DOM */}\r\n <div className={`${prefix}loading-tip-placeholder`}>{tip}</div>\r\n </div>\r\n </Overlay>,\r\n ]\r\n ) : (\r\n <div className={loadingCls} style={style} {...obj.pickAttrs(others)}>\r\n {visible ? (\r\n <div className={tipCls}>\r\n <div className={`${prefix}loading-indicator`}>{indicatorDom}</div>\r\n <div className={`${prefix}loading-tip-content`}>{tip}</div>\r\n <div className={`${prefix}loading-tip-placeholder`}>{tip}</div>\r\n </div>\r\n ) : null}\r\n <div className={contentCls}>\r\n {visible ? <div className={`${prefix}loading-masker`} /> : null}\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ConfigProvider.config(Loading);\r\n","import { Children } from 'react';\n\n/**\n * util module\n */\n\n/**\n * 是否是单选模式\n * @param {string} mode\n * @return {boolean} is single mode\n */\nexport function isSingle(mode) {\n return !mode || mode === 'single' || mode === 'combobox';\n}\n\n/**\n * 在 Select 中,认为 null 和 undefined 都是空值\n * @param {*} n any object\n * @return {boolean}\n */\nexport function isNull(n) {\n return n === null || n === undefined;\n}\n\n/**\n * 将字符串中的正则表达式关键字符添加转义\n * @param {string} str\n * @return {string}\n */\nexport function escapeForReg(str) {\n return str.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\n/**\n * filter by key\n * @param {string} key filter key\n * @param {object} item item object\n * @return {boolean} it's filtered\n */\nexport function filter(key, item) {\n const _key = escapeForReg(`${key}`);\n const regExp = new RegExp(`(${_key})`, 'ig');\n\n return regExp.test(`${item.value}`) || regExp.test(`${item.label}`);\n}\n\n/**\n * loop map\n * @param {Array} dataSource\n * @param {function} callback\n * @return {Array}\n * ----\n * @callback ~loopCallback\n * @param {object} option\n */\nexport function loopMap(dataSource, callback) {\n const result = [];\n dataSource.forEach(option => {\n if (option.children) {\n const children = loopMap(option.children, callback);\n children.length &&\n result.push({\n ...option,\n children,\n });\n } else {\n // eslint-disable-next-line callback-return\n const tmp = callback(option);\n tmp && result.push(tmp);\n }\n });\n\n return result;\n}\n\n/**\n * Parse dataSource from MenuItem\n * @static\n * @param {Array<Element>} children\n * @param {number} [deep=0] recursion deep level\n */\nexport function parseDataSourceFromChildren(children, deep = 0) {\n const source = [];\n\n Children.forEach(children, (child, index) => {\n if (!child) {\n return;\n }\n const { type, props: childProps } = child;\n const item2 = { deep };\n\n let isOption = false;\n let isOptionGroup = false;\n\n if (\n (typeof type === 'function' && type._typeMark === 'next_select_option') ||\n type === 'option'\n ) {\n isOption = true;\n }\n if (\n (typeof type === 'function' && type._typeMark === 'next_select_option_group') ||\n type === 'optgroup'\n ) {\n isOptionGroup = true;\n }\n\n if (!isOption && !isOptionGroup) {\n return;\n }\n\n if (isOption) {\n // option\n // If children is a string, it can be used as value\n const isStrChild = typeof childProps.children === 'string';\n // value > key > string children > index\n item2.value =\n 'value' in childProps\n ? childProps.value\n : 'key' in childProps\n ? childProps.key\n : isStrChild\n ? childProps.children\n : `${index}`;\n\n item2.label = childProps.label || childProps.children || `${item2.value}`;\n item2.title = childProps.title;\n childProps.disabled === true && (item2.disabled = true);\n // You can put your extra data here, and use it in `itemRender` or `labelRender`\n Object.assign(item2, childProps['data-extra'] || {});\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\n source.push(item2);\n });\n\n return source;\n}\n\n/**\n * Normalize dataSource\n * @static\n * @param {Array} dataSource\n * @param {number} [deep=0] 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 = 0) {\n const source = [];\n\n dataSource.forEach((item, index) => {\n // enable array of basic type\n if (/string|boolean|number/.test(typeof item)) {\n item = { label: `${item}`, value: item };\n }\n\n // filter off addon item\n if (item.__isAddon) {\n return;\n }\n\n const item2 = { deep };\n // deep < 1: only 2 level allowed\n if (Array.isArray(item.children) && deep < 1) {\n // handle group\n item2.label = item.label || item.value || `Group ${index}`;\n // parse children\n item2.children = normalizeDataSource(item.children, deep + 1);\n } else {\n const { value, label, title, disabled, ...others } = item;\n item2.value = !isNull(value) ? value : `${index}`;\n item2.label = label || `${item2.value}`;\n item2.title = title;\n disabled === true && (item2.disabled = true);\n\n Object.assign(item2, others);\n }\n\n source.push(item2);\n });\n\n return source;\n}\n\n/**\n * Get flatten dataSource\n * @static\n * @param {Array} dataSource structured dataSource\n * @return {Array}\n */\nexport function flattingDataSource(dataSource) {\n const source = [];\n\n dataSource.forEach(item => {\n if (Array.isArray(item.children)) {\n source.push(...flattingDataSource(item.children));\n } else {\n source.push(item);\n }\n });\n\n return source;\n}\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\n let addKey = true;\n const menuDataSource = loopMap(dataSource, option => {\n if (key === `${option.value}`) {\n addKey = false;\n }\n return filter(key, option) && !option.__isAddon && option;\n });\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 title: key,\n __isAddon: true,\n });\n }\n\n return menuDataSource;\n}\n\nfunction getKeyItemByValue(value, valueMap) {\n let item;\n\n if (typeof value === 'object' && value.hasOwnProperty('value')) {\n item = value;\n } else {\n item = valueMap[`${value}`] || {\n value,\n label: value,\n };\n }\n\n return item;\n}\n\n/**\n * compute valueDataSource by new value\n * @param {Array/String} value 数据\n * @param {Object} mapValueDS 上个value的缓存数据 value => {value,label} 的映射关系表\n * @param {*} mapMenuDS 通过 dataSource 建立 value => {value,label} 的映射关系表\n * @returns {Object} value: [value]; valueDS: [{value,label}]; mapValueDS: {value: {value,label}}\n */\nexport function getValueDataSource(value, mapValueDS, mapMenuDS) {\n if (isNull(value)) {\n return {};\n }\n\n const newValue = [];\n const newValueDS = [];\n const newMapValueDS = {};\n const _newMapDS = Object.assign({}, mapValueDS, mapMenuDS);\n\n if (Array.isArray(value)) {\n value.forEach(v => {\n const item = getKeyItemByValue(v, _newMapDS);\n\n newValueDS.push(item);\n newMapValueDS[`${item.value}`] = item;\n newValue.push(item.value);\n });\n\n return {\n value: newValue, // [value]\n valueDS: newValueDS, // [{value,label}]\n mapValueDS: newMapValueDS, // {value: {value,label}}\n };\n } else {\n const item = getKeyItemByValue(value, _newMapDS);\n\n return {\n value: item.value,\n valueDS: item,\n mapValueDS: {\n [`${item.value}`]: item,\n },\n };\n }\n}\n\n/**\n * Get flatten dataSource\n * @static\n * @param {any} value structured dataSource\n * @return {String}\n */\nexport function valueToSelectKey(value) {\n let val;\n if (typeof value === 'object' && value.hasOwnProperty('value')) {\n val = value.value;\n } else {\n val = value;\n }\n return `${val}`;\n}\n\n/**\n * UP Down 改进双向链表方法\n */\n// function DoubleLinkList(element){\n// this.prev = null;\n// this.next = null;\n// this.element = element;\n// }\n//\n// export function mapDoubleLinkList(dataSource){\n//\n// const mapDS = {};\n// let doubleLink = null;\n//\n// let head = null;\n// let tail = null;\n//\n// function append(element) {\n// if (!doubleLink) {\n// doubleLink = new DoubleLinkList(element);\n// head = doubleLink;\n// tail = doubleLink;\n// return doubleLink;\n// }\n//\n// const node = new DoubleLinkList(element);\n// tail.next = node;\n// node.prev = tail;\n// tail = node;\n//\n// return tail;\n// }\n//\n// dataSource.forEach((item => {\n// if (item.disabled) {\n// return;\n// }\n// mapDS[`${item.value}`] = append(item);\n// }));\n//\n// return mapDS;\n// }\n//\n","import {\n filter,\n parseDataSourceFromChildren,\n normalizeDataSource,\n flattingDataSource,\n filterDataSource,\n} from './util';\n\n/**\n * manage dataSource for menu list\n */\nclass DataStore {\n constructor(options) {\n this.options = {\n filter,\n key: undefined,\n addonKey: false,\n filterLocal: true,\n ...options,\n };\n\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\n setOptions(options) {\n Object.assign(this.options, options);\n }\n\n updateByDS(dataSource, isChildren = false) {\n this.dataSource = isChildren\n ? parseDataSourceFromChildren(dataSource)\n : normalizeDataSource(dataSource);\n return this.updateAll();\n }\n\n updateByKey(key) {\n if (key === this.options.key) {\n return this.getMenuDS();\n }\n\n this.options.key = key;\n return this.updateAll();\n }\n\n getOriginDS() {\n return this.dataSource;\n }\n\n getMenuDS() {\n return this.menuDataSource;\n }\n\n getFlattenDS() {\n return this.flattenDataSource;\n }\n\n getEnableDS() {\n return this.enabledDataSource;\n }\n\n getMapDS() {\n return this.mapDataSource;\n }\n\n updateAll() {\n const { key, filter, filterLocal } = this.options;\n this.menuDataSource = filterDataSource(\n this.dataSource,\n filterLocal ? key : '',\n filter,\n this.options.addonKey,\n );\n\n this.flattenDataSource = flattingDataSource(this.menuDataSource);\n\n this.mapDataSource = {};\n this.flattenDataSource.forEach(item => {\n this.mapDataSource[`${item.value}`] = item;\n });\n\n this.enabledDataSource = this.flattenDataSource.filter(item => !item.disabled);\n\n return this.menuDataSource;\n }\n}\n\nexport default DataStore;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport cx from 'classnames';\nimport { findDOMNode } from 'react-dom';\nimport { events } from '../util';\n\nconst NOOP = () => {};\nconst MAX_SYNC_UPDATES = 100;\n\nconst isEqualSubset = (a, b) => {\n for (const key in b) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n};\n\n/** VirtualList */\nexport default class VirtualList extends Component {\n static displayName = 'VirtualList';\n\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 渲染的子节点\n */\n children: PropTypes.any,\n /**\n * 最小加载数量\n */\n minSize: PropTypes.number,\n /**\n * 一屏数量\n */\n pageSize: PropTypes.number,\n /**\n * 父渲染函数,默认为 (items, ref) => <ul ref={ref}>{items}</ul>\n */\n itemsRenderer: PropTypes.func,\n /**\n * 缓冲区高度\n */\n threshold: PropTypes.number,\n /**\n * 获取item高度的函数\n */\n itemSizeGetter: PropTypes.func,\n /**\n * 设置跳转位置,需要设置 itemSizeGetter 才能生效, 不设置认为元素等高并取第一个元素高度作为默认高\n */\n jumpIndex: PropTypes.number,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n itemsRenderer: (items, ref) => <ul ref={ref}>{items}</ul>,\n minSize: 1,\n pageSize: 10,\n jumpIndex: 0,\n threshold: 100,\n };\n\n constructor(props) {\n super(props);\n const { jumpIndex } = props;\n const { from, size } = this.constrain(jumpIndex, 0, props);\n this.state = { from, size };\n this.cache = {};\n this.cachedScroll = null;\n this.unstable = false;\n this.updateCounter = 0;\n }\n\n componentDidMount() {\n const { jumpIndex } = this.props;\n\n this.updateFrameAndClearCache = this.updateFrameAndClearCache.bind(this);\n\n events.on(window, 'resize', this.updateFrameAndClearCache);\n\n this.updateFrame(this.scrollTo.bind(this, jumpIndex));\n }\n\n UNSAFE_componentWillReceiveProps(next) {\n const { from, size } = this.state;\n\n const oldIndex = this.props.jumpIndex;\n const newIndex = next.jumpIndex;\n\n if (oldIndex !== newIndex) {\n this.updateFrame(this.scrollTo.bind(this, newIndex));\n }\n\n this.maybeSetState(this.constrain(from, size, next), NOOP);\n }\n\n componentDidUpdate() {\n // If the list has reached an unstable state, prevent an infinite loop.\n if (this.unstable) {\n return;\n }\n\n if (++this.updateCounter > MAX_SYNC_UPDATES) {\n this.unstable = true;\n }\n\n if (!this.updateCounterTimeoutId) {\n this.updateCounterTimeoutId = setTimeout(() => {\n this.updateCounter = 0;\n delete this.updateCounterTimeoutId;\n }, 0);\n }\n\n this.updateFrame();\n }\n\n componentWillUnmount() {\n events.off(window, 'resize', this.updateFrameAndClearCache);\n\n events.off(this.scrollParent, 'scroll', this.updateFrameAndClearCache);\n events.off(this.scrollParent, 'mousewheel', NOOP);\n }\n\n maybeSetState(b, cb) {\n if (isEqualSubset(this.state, b)) {\n return cb();\n }\n\n this.setState(b, cb);\n }\n\n getOffset(el) {\n let offset = el.clientLeft || 0;\n do {\n offset += el.offsetTop || 0;\n el = el.offsetParent;\n } while (el);\n return offset;\n }\n\n getEl() {\n return this.el || this.items || {};\n }\n\n getScrollParent() {\n let el = this.getEl();\n el = el.parentElement;\n\n switch (window.getComputedStyle(el).overflowY) {\n case 'auto':\n case 'scroll':\n case 'overlay':\n case 'visible':\n return el;\n }\n\n return window;\n }\n\n getScroll() {\n // Cache scroll position as this causes a forced synchronous layout.\n // if (typeof this.cachedScroll === 'number') {\n // return this.cachedScroll;\n // }\n const { scrollParent } = this;\n const scrollKey = 'scrollTop';\n const actual =\n 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 const max = this.getScrollSize() - this.getViewportSize();\n\n const scroll = Math.max(0, Math.min(actual, max));\n const el = this.getEl();\n this.cachedScroll = this.getOffset(scrollParent) + scroll - this.getOffset(el);\n\n return this.cachedScroll;\n }\n\n setScroll(offset) {\n const { scrollParent } = this;\n offset += this.getOffset(this.getEl());\n if (scrollParent === window) {\n return window.scrollTo(0, offset);\n }\n\n offset -= this.getOffset(this.scrollParent);\n scrollParent.scrollTop = offset;\n }\n\n getViewportSize() {\n const { scrollParent } = this;\n return scrollParent === window ? window.innerHeight : scrollParent.clientHeight;\n }\n\n getScrollSize() {\n const { scrollParent } = this;\n const { body, documentElement } = document;\n const key = 'scrollHeight';\n return scrollParent === window ? Math.max(body[key], documentElement[key]) : scrollParent[key];\n }\n\n getStartAndEnd(threshold = this.props.threshold) {\n const scroll = this.getScroll();\n\n const trueScroll = scroll;\n const start = Math.max(0, trueScroll - threshold);\n const end = trueScroll + this.getViewportSize() + threshold;\n\n return { start, end };\n }\n\n // Called by 'scroll' and 'resize' events, clears scroll position cache.\n updateFrameAndClearCache(cb) {\n this.cachedScroll = null;\n return this.updateFrame(cb);\n }\n\n updateFrame(cb) {\n this.updateScrollParent();\n\n if (typeof cb !== 'function') {\n cb = NOOP;\n }\n\n return this.updateVariableFrame(cb);\n }\n\n updateScrollParent() {\n const prev = this.scrollParent;\n this.scrollParent = this.getScrollParent();\n\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\n events.on(this.scrollParent, 'scroll', this.updateFrameAndClearCache);\n events.on(this.scrollParent, 'mousewheel', NOOP);\n\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\n updateVariableFrame(cb) {\n if (!this.props.itemSizeGetter) {\n this.cacheSizes();\n }\n\n const { start, end } = this.getStartAndEnd();\n const { pageSize, children } = this.props;\n const { length } = children;\n let space = 0;\n let from = 0;\n let size = 0;\n const maxFrom = length - 1;\n\n while (from < maxFrom) {\n const itemSize = this.getSizeOf(from);\n if (itemSize === null || itemSize === undefined || space + itemSize > start) {\n break;\n }\n space += itemSize;\n ++from;\n }\n\n const maxSize = length - from;\n\n while (size < maxSize && space < end) {\n const 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\n this.maybeSetState({ from, size }, cb);\n }\n\n getSpaceBefore(index, cache = {}) {\n if (!index) {\n return 0;\n }\n if (cache[index] !== null && cache[index] !== undefined) {\n return cache[index] || 0;\n }\n\n // Find the closest space to index there is a cached value for.\n let from = index;\n while (from > 0 && (cache[from] === null || cache[from] === undefined)) {\n from--;\n }\n\n // Finally, accumulate sizes of items from - index.\n let space = cache[from] || 0;\n for (let i = from; i < index; ++i) {\n cache[i] = space;\n const itemSize = this.getSizeOf(i);\n if (itemSize === null || itemSize === undefined) {\n break;\n }\n space += itemSize;\n }\n\n cache[index] = space;\n\n return cache[index] || 0;\n }\n\n cacheSizes() {\n const { cache } = this;\n const { from } = this.state;\n const { children, props = {} } = this.items;\n const itemEls = children || props.children || [];\n for (let i = 0, l = itemEls.length; i < l; ++i) {\n const ulRef = findDOMNode(this.items);\n const height = ulRef.children[i].offsetHeight;\n if (height > 0) {\n cache[from + i] = height;\n }\n }\n }\n\n getSizeOf(index) {\n const { cache } = this;\n const { itemSizeGetter, jumpIndex } = this.props;\n\n // Try the cache.\n if (index in cache) {\n return cache[index];\n }\n if (itemSizeGetter) {\n return itemSizeGetter(index);\n }\n\n const height = Object.keys(this.cache)\n .map(key => this.cache[key])\n .pop();\n if (!this.defaultItemHeight && jumpIndex > -1 && height) {\n this.defaultItemHeight = height;\n }\n\n if (this.defaultItemHeight) {\n return this.defaultItemHeight;\n }\n }\n\n constrain(from, size, { children, minSize }) {\n const length = children && children.length;\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\n return { from, size };\n }\n\n scrollTo = index => {\n this.setScroll(this.getSpaceBefore(index));\n };\n\n renderMenuItems() {\n const { children, itemsRenderer } = this.props;\n const { from, size } = this.state;\n const items = [];\n\n for (let i = 0; i < size; ++i) {\n items.push(children[from + i]);\n }\n\n return itemsRenderer(items, c => {\n this.items = c;\n return this.items;\n });\n }\n\n render() {\n const { children = [], prefix, className } = this.props;\n const { length } = children;\n const { from } = this.state;\n const items = this.renderMenuItems();\n\n const style = { position: 'relative' };\n const cache = {};\n\n const size = this.getSpaceBefore(length, cache);\n\n if (size) {\n style.height = size;\n }\n const offset = this.getSpaceBefore(from, cache);\n const transform = `translate(0px, ${offset}px)`;\n const listStyle = {\n msTransform: transform,\n WebkitTransform: transform,\n transform,\n };\n\n const cls = cx({\n [`${prefix}virtual-list-wrapper`]: true,\n [className]: !!className,\n });\n\n return (\n <div\n className={cls}\n style={style}\n ref={c => {\n this.el = c;\n return this.el;\n }}\n >\n <div style={listStyle}>{items}</div>\n </div>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport VirtualList from './virtual-list';\n\nexport default ConfigProvider.config(VirtualList);\n","import React, { Children } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { func, dom, events } from '../util';\nimport Menu from '../menu';\nimport Overlay from '../overlay';\nimport Loading from '../loading';\nimport zhCN from '../locale/zh-cn';\nimport DataStore from './data-store';\nimport VirtualList from '../virtual-list';\nimport { isSingle, filter, isNull, valueToSelectKey } from './util';\n\nconst { Popup } = Overlay;\nconst { Item: MenuItem, Group: MenuGroup } = Menu;\nconst { noop, makeChain } = func;\n\nfunction preventDefault(e) {\n e.preventDefault();\n}\n\nexport default class Base extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 选择器尺寸\n */\n size: PropTypes.oneOf(['xs', 'small', 'medium']),\n // 当前值,用于受控模式\n value: PropTypes.any, // to be override\n // 初始化的默认值\n defaultValue: PropTypes.any, // to be override\n /**\n * 没有值的时候的占位符\n */\n placeholder: PropTypes.string,\n /**\n * 下拉菜单是否与选择器对齐\n */\n autoWidth: PropTypes.bool,\n /**\n * 自定义内联 label\n */\n label: PropTypes.node,\n /**\n * 是否有清除按钮(单选模式有效)\n */\n hasClear: PropTypes.bool,\n /**\n * 校验状态\n */\n state: PropTypes.oneOf(['error', 'loading']),\n /**\n * 是否只读,只读模式下可以展开弹层但不能选\n */\n readOnly: PropTypes.bool,\n /**\n * 是否禁用选择器\n */\n disabled: PropTypes.bool,\n /**\n * 当前弹层是否显示\n */\n visible: PropTypes.bool,\n /**\n * 弹层初始化是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层显示或隐藏时触发的回调\n * @param {Boolean} visible 弹层是否显示\n * @param {String} type 触发弹层显示或隐藏的来源 fromContent 表示由Dropdown内容触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * value变化时回调\n */\n onChange: PropTypes.func,\n /**\n * 弹层挂载的容器节点\n */\n popupContainer: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * 弹层的 className\n */\n popupClassName: PropTypes.any,\n /**\n * 弹层的内联样式\n */\n popupStyle: PropTypes.object,\n /**\n * 添加到弹层上的属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 自定义弹层的内容\n */\n popupContent: PropTypes.node,\n /**\n * 是否使用本地过滤,在数据源为远程的时候需要关闭此项\n */\n filterLocal: PropTypes.bool,\n /**\n * 本地过滤方法,返回一个 Boolean 值确定是否保留\n */\n filter: PropTypes.func,\n /**\n * 键盘上下键切换菜单高亮选项的回调\n */\n onToggleHighlightItem: PropTypes.func,\n /**\n * 是否开启虚拟滚动模式\n */\n useVirtual: PropTypes.bool,\n // 自定义类名\n className: PropTypes.any,\n children: PropTypes.any,\n dataSource: PropTypes.array,\n itemRender: PropTypes.func,\n /**\n * 弹层菜单footer\n */\n footer: PropTypes.node,\n mode: PropTypes.string,\n notFoundContent: PropTypes.node,\n /**\n * 内容为空是否显示弹层\n */\n showEmpty: PropTypes.bool,\n locale: PropTypes.object,\n rtl: PropTypes.bool,\n /**\n * 监听滚动事件\n */\n onPopupScroll: PropTypes.func,\n };\n\n static 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,\n itemRender: item => {\n return item.label || item.value;\n },\n locale: zhCN.Select,\n showEmpty: true,\n };\n\n constructor(props) {\n super(props);\n\n this.dataStore = new DataStore({\n filter: props.filter,\n filterLocal: props.filterLocal,\n });\n\n this.state = {\n value: 'value' in props ? props.value : props.defaultValue,\n visible: 'visible' in props ? props.visible : props.defaultVisible,\n dataSource: [],\n width: 100,\n // current highlight key\n highlightKey: null,\n srReader: '',\n };\n }\n\n UNSAFE_componentWillMount() {\n this.setState({\n dataSource: this.setDataSource(this.props),\n });\n }\n\n componentDidMount() {\n // overlay 还没有完成 mount,所以需要滞后同步宽度\n setTimeout(() => this.syncWidth(), 0);\n\n events.on(window, 'resize', this.handleResize);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.label !== this.props.label || prevState.value !== this.state.value) {\n this.syncWidth();\n }\n }\n\n componentWillUnmount() {\n events.off(window, 'resize', this.handleResize);\n clearTimeout(this.resizeTimeout);\n }\n\n /**\n * Calculate and set width of popup menu\n * @protected\n */\n syncWidth = () => {\n const width = dom.getStyle(this.selectDOM, 'width');\n\n if (width && this.width !== width) {\n this.width = width;\n\n if (this.popupRef && this.props.autoWidth) {\n // overy 的 node 节点可能没有挂载完成,所以这里需要异步\n setTimeout(() => {\n if (this.popupRef && this.popupRef.getInstance().overlay) {\n dom.setStyle(\n this.popupRef\n .getInstance()\n .overlay.getInstance()\n .getContentNode(),\n 'width',\n this.width,\n );\n // 更新下Menu的宽度\n this.forceUpdate();\n }\n }, 0);\n }\n }\n };\n\n handleResize = () => {\n clearTimeout(this.resizeTimeout);\n if (this.state.visible) {\n this.resizeTimeout = setTimeout(() => {\n this.syncWidth();\n }, 200);\n }\n };\n\n /**\n * Get structured dataSource, for cache\n * @protected\n * @param {Object} [props=this.props]\n * @return {Array}\n */\n setDataSource = props => {\n const { dataSource, children } = props;\n\n // children is higher priority then dataSource\n if (Children.count(children)) {\n return this.dataStore.updateByDS(children, true);\n } else if (Array.isArray(dataSource)) {\n return this.dataStore.updateByDS(dataSource, false);\n }\n return [];\n };\n\n /**\n * Set popup visible\n * @protected\n * @param {boolean} visible\n * @param {string} type trigger type\n */\n setVisible = (visible, type) => {\n if (this.props.disabled || this.state.visible === visible) {\n return;\n }\n\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n if (!this.props.visible && visible) {\n // 当面板由收起到展开时,面板显示完整的数据(无过滤效果)\n this.setState({\n dataSource: this.dataStore.getOriginDS(),\n });\n // 更新菜单数据\n this.dataStore.updateByKey('');\n }\n\n this.props.onVisibleChange(visible, type);\n };\n\n setFirstHightLightKeyForMenu = () => {\n // 设置高亮 item key\n if (this.dataStore.getMenuDS().length && this.dataStore.getEnableDS().length) {\n this.setState({\n highlightKey: `${this.dataStore.getEnableDS()[0].value}`,\n });\n }\n };\n\n handleChange = (value, ...args) => {\n // 非受控模式清空内部数据\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n this.props.onChange(value, ...args);\n };\n\n /**\n * Handle Menu body click\n * @param {Event} e click event\n */\n handleMenuBodyClick = e => {\n this.focusInput(e);\n };\n\n /**\n * Toggle highlight MenuItem\n * @private\n * @param {number} dir -1: up, 1: down\n */\n toggleHighlightItem = dir => {\n if (!this.state.visible) {\n this.setVisible(true, 'enter');\n return;\n }\n\n const maxCount = this.dataStore.getEnableDS().length;\n // When there is no enabled item\n if (!maxCount) {\n return false;\n }\n\n let { highlightKey } = this.state;\n let highlightIndex = -1;\n\n // find previous highlight index\n highlightKey !== null &&\n this.dataStore.getEnableDS().some((item, index) => {\n if (`${item.value}` === highlightKey) {\n highlightIndex = index;\n }\n return highlightIndex > -1;\n });\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\n // get highlight key\n const highlightItem = this.dataStore.getEnableDS()[highlightIndex];\n highlightKey = highlightItem ? `${highlightItem.value}` : null;\n\n this.setState({ highlightKey, srReader: highlightItem.label });\n\n this.scrollMenuIntoView();\n\n return highlightItem;\n };\n\n // scroll into focus item\n scrollMenuIntoView = () => {\n const { prefix } = this.props;\n\n clearTimeout(this.highlightTimer);\n this.highlightTimer = setTimeout(() => {\n try {\n const menuNode = findDOMNode(this.menuRef);\n const itemNode = menuNode.querySelector(`.${prefix}select-menu-item.${prefix}focused`);\n itemNode && itemNode.scrollIntoViewIfNeeded();\n } catch (ex) {\n // I don't care...\n }\n });\n };\n\n /**\n * render popup menu header\n * @abstract\n */\n renderMenuHeader = () => {\n return null;\n };\n\n /**\n * render popup menu footer\n */\n renderMenuFooter = () => {\n const { useVirtual, footer } = this.props;\n return !useVirtual ? footer : null;\n };\n\n handleSelect = () => {};\n\n /**\n * render popup children\n * @protected\n * @param {object} props\n */\n renderMenu = () => {\n const {\n prefix,\n mode,\n autoWidth,\n locale,\n notFoundContent,\n useVirtual,\n onPopupScroll,\n } = this.props;\n const { dataSource, highlightKey } = this.state;\n const { value } = this.state;\n let selectedKeys;\n\n if (isNull(value) || value.length === 0) {\n selectedKeys = [];\n } else if (isSingle(mode)) {\n selectedKeys = [valueToSelectKey(value)];\n } else {\n selectedKeys = [].concat(value).map(n => valueToSelectKey(n));\n }\n\n let children = this.renderMenuItem(dataSource);\n\n const menuClassName = classNames({\n [`${prefix}select-menu`]: true,\n [`${prefix}select-menu-empty`]: !children || !children.length,\n });\n\n if (!children || !children.length) {\n children = (\n <span className={`${prefix}select-menu-empty-content`}>\n {notFoundContent || locale.notFoundContent}\n </span>\n );\n }\n\n const menuProps = {\n children,\n role: 'listbox',\n style: autoWidth ? { width: this.width } : { minWidth: this.width },\n selectedKeys,\n focusedKey: highlightKey,\n focusable: false,\n selectMode: isSingle(mode) ? 'single' : 'multiple',\n onSelect: this.handleMenuSelect,\n onItemClick: this.handleItemClick,\n header: this.renderMenuHeader(),\n footer: this.renderMenuFooter(),\n onClick: this.handleMenuBodyClick,\n onMouseDown: preventDefault,\n className: menuClassName,\n onScroll: onPopupScroll,\n };\n\n return useVirtual && children.length ? (\n <div className={`${prefix}select-menu-wrapper`} style={{ position: 'relative' }}>\n <VirtualList\n itemsRenderer={(items, ref) => {\n return (\n <Menu\n ref={c => {\n ref(c);\n this.menuRef = c;\n }}\n {...menuProps}\n >\n {items}\n </Menu>\n );\n }}\n >\n {children}\n </VirtualList>\n </div>\n ) : (\n <Menu\n ref={c => {\n this.menuRef = c;\n }}\n {...menuProps}\n />\n );\n };\n\n /**\n * render menu item\n * @protected\n * @param {Array} dataSource\n */\n renderMenuItem = dataSource => {\n const { prefix, itemRender } = this.props;\n // If it has.\n let searchKey;\n if (this.isAutoComplete) {\n // In AutoComplete, value is the searchKey\n searchKey = this.state.value;\n } else {\n searchKey = this.state.searchValue;\n }\n\n return dataSource.map((item, index) => {\n if (!item) {\n return null;\n }\n if (Array.isArray(item.children)) {\n return (\n <MenuGroup key={index} label={item.label}>\n {this.renderMenuItem(item.children)}\n </MenuGroup>\n );\n } else {\n const itemProps = {\n role: 'option',\n key: item.value,\n className: `${prefix}select-menu-item`,\n disabled: item.disabled,\n };\n if (item.title) {\n itemProps.title = item.title;\n }\n\n return <MenuItem {...itemProps}>{itemRender(item, searchKey)}</MenuItem>;\n }\n });\n };\n\n saveSelectRef = ref => {\n this.selectDOM = findDOMNode(ref);\n };\n\n saveInputRef = ref => {\n if (ref && ref.getInstance()) {\n this.inputRef = ref.getInstance();\n }\n };\n\n /**\n * 点击 arrow 或 label 的时候焦点切到 input 中\n * @override\n */\n focusInput = () => {\n this.inputRef && this.inputRef.focus();\n };\n\n beforeOpen = () => {\n const { value, highlightKey } = this.state;\n if (this.props.mode === 'single' && !value && !highlightKey) {\n this.setFirstHightLightKeyForMenu();\n }\n this.syncWidth();\n };\n\n beforeClose = () => {};\n\n afterClose = () => {};\n\n savePopupRef = ref => {\n this.popupRef = ref;\n if (this.props.popupProps && typeof this.props.popupProps.ref === 'function') {\n this.props.popupProps.ref(ref);\n }\n };\n\n render() {\n const {\n prefix,\n mode,\n state,\n popupProps,\n popupContainer,\n popupClassName,\n popupStyle,\n popupContent,\n autoWidth,\n canCloseByTrigger,\n followTrigger,\n cache,\n showEmpty,\n } = this.props;\n\n const cls = classNames(\n {\n [`${prefix}select-auto-complete-menu`]: !popupContent && this.isAutoComplete,\n [`${prefix}select-${mode}-menu`]: !popupContent && !!mode,\n },\n popupClassName || popupProps.className,\n );\n\n const _props = {\n offset: [0, 4],\n animation: { in: 'fadeInDown', out: 'fadeOutUp' },\n triggerType: 'click',\n autoFocus: false,\n cache,\n // Put `popupProps` into here for covering above props.\n ...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),\n beforeClose: makeChain(this.beforeClose, popupProps.beforeClose),\n afterClose: makeChain(this.afterClose, popupProps.afterClose),\n canCloseByTrigger,\n followTrigger,\n visible: this.state.visible,\n onVisibleChange: this.handleVisibleChange,\n shouldUpdatePosition: true,\n container: popupContainer || popupProps.container,\n className: cls,\n style: popupStyle || popupProps.style,\n };\n // 用于 Search 不显示弹出层\n if (!showEmpty) {\n return this.renderSelect();\n }\n return (\n <Popup {..._props} trigger={this.renderSelect()} ref={this.savePopupRef}>\n <Loading className={`${prefix}select-loading`} visible={state === 'loading'}>\n {popupContent ? (\n <div\n className={`${prefix}select-popup-wrap`}\n style={autoWidth ? { width: this.width } : {}}\n >\n {popupContent}\n </div>\n ) : (\n this.renderMenu()\n )}\n </Loading>\n </Popup>\n );\n }\n}\n","/* eslint-disable valid-jsdoc */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\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';\n\nconst { noop } = func;\nconst isIE9 = env.ieVersion === 9;\n\n/**\n * 无障碍化注意事项:\n * 1. Select 无搜索情况下,不应该让 Input 可focus,此时外层wrap必须可focus,并且需要相应focus事件让外边框发生变化\n *\n * TODO: hightLight 后续改造注意点\n * 1. hightLight 跟随点击变化(fixed) 2. 弹窗打开时根据 是否高亮第一个选项的 api开关设置是否hightLight 第一项\n */\n\n// 自定义弹层:1. 不需要关心Menu的点击事件 2. 不需要关心dataSource变化\n\n/**\n * Select\n */\nclass Select extends Base {\n static propTypes = {\n ...Base.propTypes,\n trigger: PropTypes.element,\n /**\n * 选择器模式\n */\n mode: PropTypes.oneOf(['single', 'multiple', 'tag']),\n /**\n * 当前值,用于受控模式\n */\n value: PropTypes.any,\n /**\n * 初始的默认值\n */\n defaultValue: PropTypes.any,\n /**\n * Select发生改变时触发的回调\n * @param {*} value 选中的值\n * @param {String} actionType 触发的方式, 'itemClick', 'enter', 'tag'\n * @param {*} item 选中的值的对象数据 (useDetailValue=false有效)\n */\n onChange: PropTypes.func,\n /**\n * 传入的数据源,可以动态渲染子项,详见 [dataSource的使用](#dataSource的使用)\n */\n dataSource: PropTypes.arrayOf(\n 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 ]),\n ),\n /**\n * 是否有边框\n */\n hasBorder: PropTypes.bool,\n /**\n * 是否有下拉箭头\n */\n hasArrow: PropTypes.bool,\n /**\n * 展开后是否能搜索(tag 模式下固定为true)\n */\n showSearch: PropTypes.bool,\n /**\n * 当搜索框值变化时回调\n * @param {String} value 数据\n */\n onSearch: PropTypes.func,\n /**\n * 当搜索框值被清空时候的回调\n * @param {String} actionType 触发的方式, 'select'(选择清空), 'popupClose'(弹窗关闭清空)\n */\n onSearchClear: PropTypes.func,\n /**\n * 多选模式下是否有全选功能\n */\n hasSelectAll: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * 填充到选择框里的值的 key\n */\n fillProps: PropTypes.string,\n /**\n * onChange 返回的 value 使用 dataSource 的对象\n */\n useDetailValue: PropTypes.bool,\n /**\n * dataSource 变化的时是否保留已选的内容\n */\n cacheValue: PropTypes.bool,\n /**\n * 渲染 Select 展现内容的方法\n * @param {Object} item 渲染节点的item\n * @return {ReactNode} 展现内容\n * @default item => item.label \\|\\| item.value\n */\n valueRender: PropTypes.func,\n /**\n * 渲染 MenuItem 内容的方法\n * @param {Object} item 渲染节点的item\n * @param {String} searchValue 搜索关键字(如果开启搜索)\n * @return {ReactNode} item node\n */\n itemRender: PropTypes.func,\n /**\n * 弹层内容为空的文案\n */\n notFoundContent: PropTypes.node,\n style: PropTypes.object,\n /**\n * 受控搜索值,一般不需要设置\n * @type {[type]}\n */\n searchValue: PropTypes.string,\n /**\n * 是否一行显示,仅在 mode 为 multiple 的时候生效\n */\n tagInline: PropTypes.bool,\n /**\n * 最多显示多少个 tag\n */\n maxTagCount: PropTypes.number,\n /**\n * 隐藏多余 tag 时显示的内容,在 maxTagCount 生效时起作用\n * @param {number} selectedValues 当前已选中的元素\n * @param {number} totalValues 总待选元素\n */\n maxTagPlaceholder: PropTypes.func,\n /**\n * 选择后是否立即隐藏菜单 (mode=multiple/tag 模式生效)\n */\n hiddenSelected: PropTypes.bool,\n /**\n * tag 删除回调\n * @param {object} item 渲染节点的item\n */\n onRemove: PropTypes.func,\n /**\n * 焦点事件\n */\n onFocus: PropTypes.func,\n /**\n * 是否自动高亮第一个选项\n */\n // highlightFirstItem: PropTypes.bool,\n /**\n * 失去焦点事件\n */\n onBlur: PropTypes.func,\n onKeyDown: PropTypes.func,\n locale: PropTypes.object,\n };\n\n static defaultProps = {\n ...Base.defaultProps,\n locale: zhCN.Select,\n mode: 'single',\n showSearch: false,\n cacheValue: true,\n tagInline: false,\n onSearch: noop,\n onSearchClear: noop,\n hasArrow: true,\n onRemove: noop,\n // highlightFirstItem: true,\n valueRender: item => {\n return item.label || item.value;\n },\n onKeyDown: noop,\n onFocus: noop,\n onBlur: noop,\n };\n\n static displayName = 'Select';\n\n constructor(props) {\n super(props);\n\n // @extend Base state\n Object.assign(this.state, {\n // search keyword\n searchValue: 'searchValue' in props ? props.searchValue : '',\n });\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 }\n\n UNSAFE_componentWillMount() {\n this.dataStore.setOptions({\n key: this.state.searchValue,\n addonKey: this.props.mode === 'tag', // tag 模式手动输入的数据\n });\n if (super.UNSAFE_componentWillMount) {\n super.UNSAFE_componentWillMount();\n }\n\n // 根据value和计算后的dataSource,更新value对应的详细数据valueDataSource\n if (typeof this.state.value !== 'undefined') {\n this.valueDataSource = getValueDataSource(\n this.state.value,\n this.valueDataSource.mapValueDS,\n this.dataStore.getMapDS(),\n );\n }\n\n if (isIE9) {\n this.ie9Hack();\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('searchValue' in nextProps) {\n this.dataStore.setOptions({ key: nextProps.searchValue });\n this.setState({\n searchValue: typeof nextProps.searchValue === 'undefined' ? '' : nextProps.searchValue,\n });\n }\n if (this.props.mode !== nextProps.mode) {\n this.dataStore.setOptions({\n addonKey: nextProps.mode === 'tag',\n });\n }\n\n this.dataStore.setOptions({\n filter: nextProps.filter,\n filterLocal: nextProps.filterLocal,\n });\n\n if (\n nextProps.children !== this.props.children ||\n nextProps.dataSource !== this.props.dataSource\n ) {\n const dataSource = this.setDataSource(nextProps);\n this.setState({\n dataSource,\n });\n\n // 远程数据有更新,并且还有搜索框\n if (nextProps.showSearch && !nextProps.filterLocal && !nextProps.popupContent) {\n this.setFirstHightLightKeyForMenu();\n }\n }\n\n if ('value' in nextProps) {\n this.setState({\n value: nextProps.value,\n });\n\n this.valueDataSource = getValueDataSource(\n nextProps.value,\n this.valueDataSource.mapValueDS,\n this.dataStore.getMapDS(),\n );\n this.updateSelectAllYet(this.valueDataSource.value);\n } else if (\n 'defaultValue' in nextProps &&\n nextProps.defaultValue === this.valueDataSource.value &&\n (nextProps.children !== this.props.children || nextProps.dataSource !== this.props.dataSource)\n ) {\n // has defaultValue and value not changed and dataSource changed\n this.valueDataSource = getValueDataSource(\n nextProps.defaultValue,\n this.valueDataSource.mapValueDS,\n this.dataStore.getMapDS(),\n );\n }\n\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n\n if (!this.props.visible && nextProps.visible) {\n // 当面板由收起到展开时,面板显示完整的数据(无过滤效果)\n this.setState({\n dataSource: this.dataStore.getOriginDS(),\n });\n // 更新菜单数据\n this.dataStore.updateByKey('');\n }\n }\n\n componentDidMount() {\n if (isIE9) {\n this.ie9Hack();\n }\n super.componentDidMount();\n }\n\n // ie9 下 table-cell 布局不支持宽度超出隐藏\n ie9Hack = () => {\n try {\n const { width } = this.selectDOM.currentStyle;\n this.setState({\n fixWidth: width !== 'auto',\n });\n } catch (e) {\n //\n }\n };\n\n componentDidUpdate(prevProps, prevState) {\n const { props } = this;\n // 随着输入自动伸展\n if (/tag|multiple/.test(props.mode) && prevState.searchValue !== this.state.searchValue) {\n this.syncWidth();\n } else {\n return super.componentDidUpdate(prevProps, prevState);\n }\n }\n\n useDetailValue = () => {\n const { popupContent, useDetailValue, dataSource } = this.props;\n return useDetailValue || (popupContent && !dataSource);\n };\n\n hasSearch = () => {\n const { showSearch, mode } = this.props;\n return showSearch || mode === 'tag';\n };\n\n /**\n * Menu.Item onSelect\n * @private\n * @param {Array<string>} keys\n * @\n */\n handleMenuSelect = (keys, item) => {\n const { mode, readOnly, disabled } = this.props;\n\n if (readOnly || disabled) {\n return false;\n }\n\n const isSingle = mode === 'single';\n\n if (isSingle) {\n // 单选\n return this.handleSingleSelect(keys[0], 'itemClick');\n } else {\n // 正常多选\n return this.handleMultipleSelect(keys, 'itemClick', item.props && item.props._key);\n }\n };\n\n handleItemClick = () => {\n this.focusInput();\n };\n\n /**\n * 单选模式\n */\n handleSingleSelect = (key, triggerType) => {\n const { cacheValue } = this.props;\n // get data only from dataStore while cacheValue=false\n const itemObj = getValueDataSource(\n key,\n cacheValue ? this.valueDataSource.mapValueDS : {},\n this.dataStore.getMapDS(),\n );\n this.valueDataSource = itemObj;\n\n this.setVisible(false, triggerType);\n\n if (this.useDetailValue()) {\n return this.handleChange(itemObj.valueDS, triggerType);\n } else {\n this.handleChange(itemObj.value, triggerType, itemObj.valueDS);\n }\n\n this.setState({\n highlightKey: key,\n });\n\n // 清空搜索\n if (!('searchValue' in this.props) && this.state.searchValue) {\n this.handleSearchClear(triggerType);\n }\n };\n\n /**\n * 多选模式 multiple/tag\n */\n handleMultipleSelect = (keys, triggerType, key) => {\n const itemObj = getValueDataSource(\n keys,\n this.valueDataSource.mapValueDS,\n this.dataStore.getMapDS(),\n );\n\n const { cacheValue, mode, hiddenSelected } = this.props;\n\n // cache those value maybe not exists in dataSource\n if (cacheValue || mode === 'tag') {\n this.valueDataSource = itemObj;\n }\n\n if (hiddenSelected) {\n this.setVisible(false, triggerType);\n }\n\n key &&\n this.state.visible &&\n this.setState({\n highlightKey: key,\n });\n\n if (this.useDetailValue()) {\n this.handleChange(itemObj.valueDS, triggerType);\n } else {\n this.handleChange(itemObj.value, triggerType, itemObj.valueDS);\n }\n\n this.updateSelectAllYet(itemObj.value);\n\n // 清空搜索\n if (!('searchValue' in this.props) && this.state.searchValue) {\n // 因为 SearchValue 被 clear 后会重新渲染 Menu,所以在 Overlay 检测 safeNode 的时候 e.target 可能会找不到导致弹窗关闭\n setTimeout(() => {\n this.handleSearchClear(triggerType);\n });\n }\n };\n\n updateSelectAllYet = value => {\n // multiple mode\n // is current state select all or not\n this.selectAllYet = false;\n if (this.props.hasSelectAll && Array.isArray(value)) {\n const selectAllValues = this.dataStore.getEnableDS().map(item => item.value);\n\n if (selectAllValues.length <= value.length) {\n this.selectAllYet = true;\n\n selectAllValues.forEach(val => {\n if (value.indexOf(val) === -1) {\n this.selectAllYet = false;\n }\n });\n }\n }\n };\n\n handleSearchValue = value => {\n if (this.state.searchValue === value) {\n return;\n }\n\n const { filterLocal } = this.props;\n\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();\n }\n } else if (!('searchValue' in this.props)) {\n this.setState({\n searchValue: value,\n });\n }\n };\n\n /**\n * Handle search input change event\n * @param {Event} e change Event\n */\n handleSearch = value => {\n this.handleSearchValue(value);\n\n // inputing should trigger popup open\n if (!this.state.visible && value) {\n this.setVisible(true);\n }\n\n this.props.onSearch(value);\n };\n\n handleSearchClear = triggerType => {\n this.handleSearchValue('');\n this.props.onSearchClear(triggerType);\n };\n\n // 搜索框 keyDown 事件\n handleSearchKeyDown = e => {\n const {\n popupContent,\n onKeyDown,\n showSearch,\n mode,\n hasClear,\n onToggleHighlightItem,\n } = this.props;\n\n if (popupContent) {\n return onKeyDown(e);\n }\n\n const proxy = 'search';\n const hasSearch = this.hasSearch();\n\n switch (e.keyCode) {\n case KEYCODE.UP:\n e.preventDefault();\n onToggleHighlightItem(this.toggleHighlightItem(-1, e), 'up');\n break;\n case KEYCODE.DOWN:\n e.preventDefault();\n onToggleHighlightItem(this.toggleHighlightItem(1, e), 'down');\n break;\n case KEYCODE.ENTER:\n e.preventDefault();\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 ((mode === 'multiple' && showSearch) || mode === 'tag') {\n // 在多选并且有搜索的情况下,删除最后一个 tag\n this.handleDeleteTag(e);\n } else if (mode === 'single' && hasClear && !this.state.visible) {\n // 单选、非展开、并且可清除的情况,允许按删除键清除\n this.handleClear(e);\n }\n break;\n default:\n break;\n }\n\n onKeyDown(e);\n };\n\n chooseMultipleItem = key => {\n const value = this.state.value || [];\n const keys = value.map(v => {\n return valueToSelectKey(v);\n });\n\n const index = keys.map(v => `${v}`).indexOf(key);\n\n if (index > -1) {\n // unselect\n keys.splice(index, 1);\n } else {\n // select\n keys.push(key);\n }\n\n this.handleMultipleSelect(keys, 'enter');\n };\n\n // 回车 选择高亮的 item\n chooseHighlightItem = (proxy, e) => {\n const prevVisible = this.state.visible;\n const { mode } = this.props;\n\n if (!prevVisible) {\n // input tag by itself\n if (mode === 'tag' && this.state.searchValue) {\n this.chooseMultipleItem(this.state.searchValue);\n }\n return false;\n }\n\n const { highlightKey } = this.state;\n\n // 没有高亮选项 或者 没有可选菜单\n if (highlightKey === null || !this.dataStore.getMenuDS().length) {\n return;\n }\n\n if (mode === 'single') {\n this.handleSingleSelect(highlightKey, 'enter');\n } else {\n this.chooseMultipleItem(highlightKey);\n // 阻止事件冒泡到最外层,让Popup 监听到触发弹层关闭\n e && e.stopPropagation();\n }\n };\n\n /**\n * Handle Tag close event\n * @param {Object} item\n * @return {Boolean} false return false to prevent auto close\n * ----\n * It MUST be multiple mode, needn't additional judgement\n */\n handleTagClose = item => {\n if (this.useDetailValue()) {\n const value = this.state.value.filter(v => {\n return item.value !== v.value;\n });\n\n this.handleChange(value, 'tag');\n } else {\n // filter out current item, and then call handleMenuSelect\n const value = this.state.value.filter(v => {\n return item.value !== v;\n });\n\n this.handleMultipleSelect(value, 'tag');\n }\n\n this.props.onRemove(item);\n\n // prevent tag close\n return false;\n };\n\n // eslint-disable-next-line valid-jsdoc\n /**\n * Handle BACKSPACE key event\n * @param {Event} e keyDown event\n * ---\n * It MUST be multiple mode\n */\n handleDeleteTag = e => {\n const { value } = this.state;\n const { searchValue } = this.state;\n\n if (searchValue || !value || !value.length) {\n return false;\n }\n\n e.preventDefault();\n\n const nextValues = value.slice(0, value.length - 1);\n // 手动调用 handleMenuSelect 时直接传入原生的 value,可以减少 toString 的操作\n\n if (this.useDetailValue()) {\n this.handleChange(nextValues, 'tag');\n } else {\n this.handleMultipleSelect(nextValues, 'tag');\n }\n };\n\n /**\n * Handle SelectAll span click event\n * @param {Event} e click event\n */\n handleSelectAll = e => {\n e && e.preventDefault();\n let nextValues;\n\n if (this.selectAllYet) {\n nextValues = [];\n } else {\n nextValues = this.dataStore.getEnableDS().map(item => item.value);\n }\n\n // 直接传 values,减少 toString 操作\n this.handleMultipleSelect(nextValues, 'selectAll');\n };\n\n handleVisibleChange = (visible, type) => {\n this.setVisible(visible, type);\n };\n\n afterClose = () => {\n // 关闭的时候清空搜索值\n if (this.hasSearch()) {\n this.handleSearchClear('popupClose');\n }\n // 清空选项的获焦状态\n this.setState({\n highlightKey: '',\n });\n };\n\n maxTagPlaceholder = (selectedValues, totalValues) => {\n const { locale } = this.props;\n\n return `${str.template(locale.maxTagPlaceholder, {\n selected: selectedValues.length,\n total: totalValues.length,\n })}`;\n };\n\n /**\n * 如果用户是自定义的弹层,则直接以 value 为准,不再校验 dataSource\n * @param {object} props\n */\n renderValues = () => {\n const {\n prefix,\n mode,\n size,\n valueRender,\n fillProps,\n disabled,\n maxTagCount,\n maxTagPlaceholder,\n tagInline,\n } = this.props;\n let { value } = this.state;\n\n if (isNull(value)) {\n return null;\n }\n\n // get detail value\n if (!this.useDetailValue()) {\n if (value === this.valueDataSource.value) {\n value = this.valueDataSource.valueDS;\n } else {\n value = getValueDataSource(\n value,\n this.valueDataSource.mapValueDS,\n this.dataStore.getMapDS(),\n ).valueDS;\n }\n }\n\n if (mode === 'single') {\n if (!value) {\n return null;\n }\n\n const retvalue = fillProps && fillProps in value ? value[fillProps] : valueRender(value);\n // 0 => '0'\n return typeof retvalue === 'number' ? retvalue.toString() : retvalue;\n } else if (value) {\n let limitedCountValue = value;\n let maxTagPlaceholderEl;\n const totalValue = this.dataStore.getFlattenDS();\n const holder = 'maxTagPlaceholder' in this.props ? maxTagPlaceholder : this.maxTagPlaceholder;\n\n if (maxTagCount !== undefined && value.length > maxTagCount && !tagInline) {\n limitedCountValue = limitedCountValue.slice(0, maxTagCount);\n maxTagPlaceholderEl = (\n <Tag\n key=\"_count\"\n type=\"primary\"\n size={size === 'large' ? 'medium' : 'small'}\n animation={false}\n >\n {holder(value, totalValue)}\n </Tag>\n );\n }\n\n if (value.length > 0 && tagInline) {\n maxTagPlaceholderEl = (\n <div className={`${prefix}select-tag-compact`} key=\"_count\">\n {holder(value, totalValue)}\n </div>\n );\n }\n\n value = limitedCountValue;\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n const selectedValueNodes = value.map(v => {\n if (!v) {\n return null;\n }\n const labelNode = fillProps ? v[fillProps] : valueRender(v);\n\n return (\n <Tag\n key={v.value}\n disabled={disabled || v.disabled}\n type=\"primary\"\n size={size === 'large' ? 'medium' : 'small'}\n animation={false}\n onClose={this.handleTagClose.bind(this, v)}\n closable\n >\n {labelNode}\n </Tag>\n );\n });\n\n if (maxTagPlaceholderEl) {\n if (tagInline) {\n selectedValueNodes.unshift(maxTagPlaceholderEl);\n } else {\n selectedValueNodes.push(maxTagPlaceholderEl);\n }\n }\n return selectedValueNodes;\n }\n\n return null;\n };\n\n /**\n * 1. fix flash while click <label/>\n * 2. fix onBlur while has clear\n * @returns\n */\n handleWrapClick = e => {\n // ignore click on input to choose text\n if (e.target.nodeName !== 'INPUT') {\n e.preventDefault();\n }\n this.focusInput();\n };\n\n handleArrowClick = e => {\n e.preventDefault();\n this.focusInput();\n\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\n handleClear = e => {\n e.stopPropagation();\n\n this.handleChange(undefined, 'clear');\n };\n\n hasClear = () => {\n const { hasClear, readOnly, disabled, mode, showSearch } = this.props;\n const { value, visible } = this.state;\n\n return (\n typeof value !== 'undefined' &&\n hasClear &&\n !readOnly &&\n !disabled &&\n mode === 'single' &&\n !(showSearch && visible)\n );\n };\n\n /**\n * render arrow\n * @param {object} props\n * @param {function} [clickHandler]\n */\n renderExtraNode = () => {\n const { hasArrow, hasClear, prefix } = this.props;\n\n const ret = [];\n\n if (hasArrow) {\n ret.push(\n <span\n key=\"arrow\"\n aria-hidden\n onClick={this.handleArrowClick}\n className={`${prefix}select-arrow`}\n >\n <Icon type=\"chevron-down-s\" />\n </span>,\n );\n }\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(\n <span\n key=\"clear\"\n aria-hidden\n onClick={this.handleClear}\n className={`${prefix}select-clear`}\n >\n <Icon type=\"remove-o-fill\" />\n </span>,\n );\n }\n\n return ret;\n };\n\n /**\n * 选择器\n * @override\n * @param {object} props\n */\n renderSelect = () => {\n const {\n prefix,\n trigger,\n showSearch,\n placeholder,\n mode,\n size,\n className,\n style,\n readOnly,\n disabled,\n hasBorder,\n label,\n locale,\n state,\n onBlur,\n onFocus,\n rtl,\n } = this.props;\n if (trigger) {\n return trigger;\n }\n const others = obj.pickOthers(Select.propTypes, this.props);\n const othersData = obj.pickAttrsWith(others, 'data-');\n\n const { visible } = this.state;\n const isSingle = mode === 'single';\n const hasSearch = this.hasSearch();\n const valueNodes = this.renderValues();\n\n let _placeholder = placeholder || locale.selectPlaceholder;\n if (valueNodes && valueNodes.length) {\n _placeholder = null;\n }\n\n // 弹窗展开时将当前的值作为 placeholder,这个功能的前提是 valueNode 必须是一个字符串\n if (showSearch && visible && isSingle && typeof valueNodes === 'string') {\n _placeholder = valueNodes;\n }\n\n // 下拉箭头\n const extra = this.renderExtraNode();\n\n const triggerClazz = classNames(\n [\n `${prefix}select`,\n `${prefix}select-trigger`,\n `${prefix}select-${mode}`,\n `${prefix}${size}`,\n className,\n ],\n {\n [`${prefix}active`]: visible, // 用于设置 searchInput 样式\n [`${prefix}inactive`]: !visible, // 用于设置 searchInput 样式\n [`${prefix}no-search`]: !hasSearch, // 用于判断是否将 searchInput 设置为 1px + 透明\n [`${prefix}has-search`]: hasSearch, // 用于单选时展开后判断是否隐藏值\n [`${prefix}select-in-ie`]: isIE9,\n [`${prefix}select-in-ie-fixwidth`]: this.state.fixWidth,\n [`${prefix}has-clear`]: this.hasClear(),\n },\n );\n\n const valuetext = this.valueDataSource.valueDS ? this.valueDataSource.valueDS.label : '';\n // state 为loading时效果转到弹层面板中\n return (\n <span\n {...othersData}\n className={triggerClazz}\n style={style}\n dir={rtl ? 'rtl' : undefined}\n ref={this.saveSelectRef}\n onClick={this.handleWrapClick}\n onMouseDown={this.handleWrapClick}\n >\n <Input\n aria-valuetext={valuetext}\n {...obj.pickOthers(othersData, others)}\n role=\"combobox\"\n tabIndex={0}\n aria-expanded={this.state.visible}\n aria-disabled={disabled}\n state={state === 'loading' ? undefined : state}\n label={label}\n extra={extra}\n value={this.state.searchValue}\n size={size}\n readOnly={!this.hasSearch() || readOnly}\n disabled={disabled}\n placeholder={_placeholder}\n hasBorder={hasBorder}\n hasClear={false}\n htmlSize=\"1\"\n inputRender={inputEl => {\n return this.renderSearchInput(valueNodes, _placeholder, inputEl);\n }}\n onChange={this.handleSearch}\n onKeyDown={this.handleSearchKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n className={`${prefix}select-inner`}\n ref={this.saveInputRef}\n />\n <span className={`${prefix}sr-only`} aria-live=\"polite\">\n {this.state.srReader}\n </span>\n </span>\n );\n };\n\n renderSearchInput = (valueNodes, placeholder, inputEl) => {\n const { prefix, mode, tagInline } = this.props;\n const isSingle = mode === 'single';\n\n const mirrorText = this.state.searchValue;\n\n const cls = classNames({\n [`${prefix}select-values`]: true,\n [`${prefix}input-text-field`]: true,\n [`${prefix}select-compact`]: !isSingle && tagInline,\n });\n\n const searchInput = [\n isSingle && valueNodes ? <em key=\"select-value\">{valueNodes}</em> : valueNodes,\n ];\n const triggerSearch = (\n <span key=\"trigger-search\" className={`${prefix}select-trigger-search`}>\n {inputEl}\n <span aria-hidden>{mirrorText || placeholder}&nbsp;</span>\n </span>\n );\n\n if (!isSingle && tagInline) {\n searchInput.unshift(triggerSearch);\n } else {\n searchInput.push(triggerSearch);\n }\n\n return <span className={cls}>{searchInput}</span>;\n };\n\n /**\n * 渲染弹层的 header 内容\n * @override\n * @param {object} props\n */\n renderMenuHeader = () => {\n const { prefix, hasSelectAll, mode } = this.props;\n\n const sourceCount = this.dataStore.getEnableDS().length;\n // 多选模式下才有全选\n if (!hasSelectAll || mode === 'single' || !sourceCount) {\n return null;\n }\n\n const text = typeof hasSelectAll === 'boolean' ? 'Select All' : hasSelectAll;\n\n const { selectAllYet } = this;\n\n const cls = classNames({\n [`${prefix}select-all`]: true,\n [`${prefix}selected`]: selectAllYet,\n });\n\n const clsInner = classNames({\n [`${prefix}select-all-inner`]: true,\n });\n\n // remove style={{'lineHeight': 'unset'}} in next Y\n // remove style={{'display': 'none'}} in next Y\n return (\n <div key=\"all\" onClick={this.handleSelectAll} className={cls} style={{ lineHeight: 'unset' }}>\n {selectAllYet ? (\n <Icon className={`${prefix}menu-icon-selected`} style={{ display: 'none' }} type=\"tick\" />\n ) : null}\n <span className={clsInner}>{text}</span>\n </div>\n );\n };\n\n render() {\n const { mode } = this.props;\n const props = { ...this.props };\n\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.render(props);\n }\n}\n\nexport default Select;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { func, obj, KEYCODE } from '../util';\nimport Input from '../input';\nimport Base from './base';\n\nconst { noop } = func;\n\n/**\n * Select.AutoComplete\n */\nclass AutoComplete extends Base {\n static propTypes = {\n ...Base.propTypes,\n /**\n * 当前值,用于受控模式\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * 初始化的默认值\n */\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * Select发生改变时触发的回调\n * @param {*} value 选中的值\n * @param {String} actionType 触发的方式, 'itemClick', 'enter', 'change'\n * @param {*} item 选中的值的对象数据\n */\n onChange: PropTypes.func,\n /**\n * 传入的数据源,可以动态渲染子项\n */\n dataSource: PropTypes.arrayOf(\n 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 ]),\n ),\n /**\n * 填充到选择框里的值的 key,默认是 value\n */\n fillProps: PropTypes.string,\n /**\n * 渲染 MenuItem 内容的方法\n * @param {Object} item 渲染节点的 item\n * @return {ReactNode} item node\n */\n itemRender: PropTypes.func,\n // input keydown\n onKeyDown: PropTypes.func,\n // 是否将当前高亮的选项作为 placeholder\n highlightHolder: PropTypes.bool,\n style: PropTypes.object,\n };\n\n static defaultProps = {\n ...Base.defaultProps,\n onKeyDown: noop,\n fillProps: 'value',\n };\n\n constructor(props) {\n super(props);\n\n this.isAutoComplete = true;\n this.isInputing = false;\n }\n\n UNSAFE_componentWillMount() {\n this.dataStore.setOptions({ key: this.state.value });\n\n if (super.UNSAFE_componentWillMount) {\n super.UNSAFE_componentWillMount();\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n this.dataStore.setOptions({ key: nextProps.value });\n this.setState({\n value: nextProps.value,\n });\n }\n\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n\n this.dataStore.setOptions({\n filter: nextProps.filter,\n filterLocal: nextProps.filterLocal,\n });\n\n if (\n nextProps.children !== this.props.children ||\n nextProps.dataSource !== this.props.dataSource\n ) {\n const dataSource = this.setDataSource(nextProps);\n this.setState({\n dataSource,\n });\n }\n\n // remote dataSource and focused\n // 因为autoComplete没有下拉数据不展示,搜索并且有数据了需要自动展示下拉\n if (!nextProps.filterLocal && this.isInputing) {\n this.shouldControlPopup(nextProps, 'update');\n }\n\n if (!nextProps.filterLocal && !nextProps.popupContent) {\n this.setFirstHightLightKeyForMenu();\n }\n\n if (!this.props.visible && nextProps.visible) {\n // 当面板由收起到展开时,面板显示完整的数据(无过滤效果)\n this.setState({\n dataSource: this.dataStore.getOriginDS(),\n });\n // 更新菜单数据\n this.dataStore.updateByKey('');\n }\n }\n\n UNSAFE_componentWillUpdate() {\n if (this.hasClear()) {\n const inputNode = ReactDOM.findDOMNode(this.inputRef);\n if (inputNode) {\n this.clearNode = inputNode.querySelector(`.${this.props.prefix}input-control`);\n }\n }\n }\n\n shouldControlPopup = (props = this.props, type) => {\n const hasPopup = props.popupContent || this.dataStore.getMenuDS().length;\n if (hasPopup) {\n this.setVisible(true, type);\n } else {\n this.setVisible(false, type);\n }\n };\n\n handleMenuSelect = keys => {\n const key = keys[0];\n if (this.state.value === keys[0]) {\n return this.setVisible(false, 'itemClick');\n }\n\n const mapDS = this.dataStore.getMapDS();\n\n if (key in mapDS) {\n const item = mapDS[key];\n this.handleSelectEvent(key, item, 'itemClick');\n }\n };\n\n handleItemClick = () => {\n this.setVisible(false, 'itemClick');\n };\n\n handleSelectEvent = (key, item, triggerType) => {\n const value = (item && item[this.props.fillProps]) || key;\n\n if (triggerType === 'itemClick' || triggerType === 'enter') {\n // 点击 item 的时候不会触发关闭,需要手动关闭,其它类型比如 keyDown 等都会有其它事件句柄处理\n this.setVisible(false, triggerType);\n }\n\n this.handleChange(value, triggerType, item);\n };\n\n handleChange = (value, proxy, item) => {\n const { disabled, readOnly, filterLocal } = this.props;\n\n if (disabled || readOnly) {\n return false;\n }\n\n const actionType = typeof proxy === 'string' ? proxy : 'change';\n\n this.isInputing = actionType === 'change';\n\n if (filterLocal) {\n this.setState({\n dataSource: this.dataStore.updateByKey(value),\n });\n\n this.shouldControlPopup(this.props, actionType);\n this.setFirstHightLightKeyForMenu();\n }\n\n // 非受控模式清空内部数据\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n\n this.props.onChange(value, actionType, item);\n\n if (actionType === 'itemClick' || actionType === 'enter') {\n // 点击 item 的时候不会触发关闭,需要手动关闭,其它类型比如 keyDown 等都会有其它事件句柄处理\n this.setVisible(false, actionType);\n }\n };\n\n handleVisibleChange = (visible, type) => {\n // 去掉这段逻辑,统一由base.jsx中的setVisible进行处理\n // if (\n // !('visible' in this.props) &&\n // visible &&\n // !this.props.popupContent &&\n // !this.dataStore.getMenuDS().length\n // ) {\n // return;\n // }\n\n this.setVisible(visible, type);\n };\n\n beforeClose = () => {\n this.isInputing = false;\n // 清空选项的获焦状态\n this.setState({\n highlightKey: '',\n });\n };\n\n /**\n * Handle trigger keydown event\n * @param {Event} e\n */\n handleTriggerKeyDown = e => {\n const { popupContent, onToggleHighlightItem, onKeyDown } = this.props;\n if (popupContent) {\n // stopPropagation can make use onChange triggerd while typing space('') in Input\n e.stopPropagation();\n return onKeyDown(e);\n }\n\n switch (e.keyCode) {\n case KEYCODE.UP:\n e.preventDefault();\n onToggleHighlightItem(this.toggleHighlightItem(-1, e), 'up');\n break;\n case KEYCODE.DOWN:\n e.preventDefault();\n onToggleHighlightItem(this.toggleHighlightItem(1, e), 'down');\n break;\n case KEYCODE.ENTER:\n e.preventDefault();\n this.chooseHighlightItem(e);\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\n onKeyDown(e);\n };\n\n // 回车 选择高亮的 item\n chooseHighlightItem = () => {\n if (!this.state.visible) {\n return false;\n }\n\n const { highlightKey } = this.state;\n const highlightItem = this.dataStore.getEnableDS().find(item => {\n return highlightKey === `${item.value}`;\n });\n\n if (highlightItem) {\n this.handleSelectEvent(highlightKey, highlightItem, 'enter');\n }\n };\n\n hasClear = () => {\n const { hasClear, readOnly, disabled } = this.props;\n const { value } = this.state;\n\n return value && hasClear && !readOnly && !disabled;\n };\n\n /**\n * 选择器\n * @override\n * @param {object} props\n */\n renderSelect = (props = this.props) => {\n const {\n placeholder,\n size,\n prefix,\n className,\n style,\n label,\n readOnly,\n disabled,\n highlightHolder,\n locale,\n hasClear,\n state,\n rtl,\n } = props;\n const others = obj.pickOthers(AutoComplete.propTypes, props);\n const othersData = obj.pickAttrsWith(others, 'data-');\n\n const { value } = this.state;\n const { visible } = this.state;\n\n // // 下拉箭头\n // const arrowNode = this.renderArrowNode(props, () => {\n // this.focusInput();\n // this.setVisible(!this.state.visible);\n // });\n\n // trigger className\n const triggerClazz = classNames(\n [`${prefix}select`, `${prefix}select-auto-complete`, `${prefix}size-${size}`, className],\n {\n [`${prefix}active`]: visible,\n [`${prefix}disabled`]: disabled,\n },\n );\n\n // highlightKey into placeholder\n // compatible with selectPlaceHolder. TODO: removed in 2.0 version\n let _placeholder =\n placeholder || locale.autoCompletePlaceholder || locale.autoCompletePlaceHolder;\n if (highlightHolder && visible) {\n _placeholder = this.state.highlightKey || _placeholder;\n }\n\n // Input props\n // state 为loading时效果转到弹层面板中\n const _inputProps = {\n ...obj.pickOthers(othersData, others),\n state: state === 'loading' ? undefined : state,\n ref: this.saveInputRef,\n hasClear,\n value,\n size,\n disabled,\n readOnly,\n placeholder: _placeholder,\n label,\n // extra: arrowNode,\n onChange: this.handleChange,\n onKeyDown: this.handleTriggerKeyDown,\n };\n\n return (\n <span\n {...othersData}\n className={triggerClazz}\n style={style}\n dir={rtl ? 'rtl' : undefined}\n ref={this.saveSelectRef}\n onClick={this.focusInput}\n >\n <Input\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-disabled={disabled}\n aria-expanded={this.state.visible}\n {..._inputProps}\n />\n <span className={`${prefix}sr-only`} aria-live=\"polite\">\n {this.state.srReader}\n </span>\n </span>\n );\n };\n\n render() {\n if (this.hasClear()) {\n // clear 按钮点击后,会在 dom 结构中被删除掉,需要将其额外设置为安全节点,防止触发弹层的显示或隐藏\n const safeNode = this.props.popupProps.safeNode || [];\n const safeNodes = Array.isArray(safeNode) ? safeNode : [safeNode];\n safeNodes.push(() => this.clearNode);\n this.props.popupProps.safeNode = safeNodes;\n }\n\n return super.render(Object.assign({}, this.props, { canCloseByTrigger: false }));\n }\n}\n\nexport default AutoComplete;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/* istanbul ignore file */\n\n/**\n * Select.Option\n */\nexport default class Option extends React.Component {\n static propTypes = {\n /**\n * 选项值\n */\n value: PropTypes.any.isRequired,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n children: PropTypes.any,\n };\n\n static _typeMark = 'next_select_option';\n\n render() {\n return this.props.children;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/* istanbul ignore file */\n\n/**\n * Select.OptionGroup\n */\nexport default class OptionGroup extends React.Component {\n static propTypes = {\n /**\n * 设置分组的文案\n */\n label: PropTypes.node,\n children: PropTypes.any,\n };\n\n static _typeMark = 'next_select_option_group';\n\n render() {\n return this.props.children;\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Select from './select';\nimport AutoComplete from './auto-complete';\nimport Option from './option';\nimport OptionGroup from './option-group';\n\nSelect.AutoComplete = ConfigProvider.config(AutoComplete, {\n componentName: 'Select',\n});\n\nSelect.Option = Option;\nSelect.OptionGroup = OptionGroup;\n\n// compatible with 0.x version\n/* istanbul ignore next */\nfunction transform(props, deprecated) {\n const {\n shape,\n container,\n multiple,\n filterBy,\n overlay,\n safeNode,\n noFoundContent,\n ...others\n } = props;\n\n const 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\n if (noFoundContent) {\n deprecated('noFoundContent', 'notFoundContent', 'Select');\n newprops.notFoundContent = noFoundContent;\n }\n\n if (safeNode) {\n deprecated('safeNode', 'popupProps={safeNode}', 'Select');\n newprops.popupProps = {\n safeNode,\n };\n }\n\n return newprops;\n}\n\n// compatible with 0.x version: Select.Combobox\nSelect.Combobox = ConfigProvider.config(Select, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n deprecated('Select.Combobox', '<Select showSearch={true}/>', 'Select');\n\n const 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(Select, {\n transform,\n exportNames: ['focusInput', 'handleSearchClear'],\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '../../select';\nimport Radio from '../../radio';\n\nclass CardHeader extends React.PureComponent {\n static propTypes = {\n yearRange: PropTypes.arrayOf(PropTypes.number),\n yearRangeOffset: PropTypes.number,\n locale: PropTypes.object,\n };\n\n static defaultProps = {\n yearRangeOffset: 10,\n };\n\n selectContainerHandler = target => {\n return target.parentNode;\n };\n\n getYearSelect(year) {\n const { prefix, yearRangeOffset, yearRange = [], locale } = this.props;\n\n let [startYear, endYear] = yearRange;\n if (!startYear || !endYear) {\n startYear = year - yearRangeOffset;\n endYear = year + yearRangeOffset;\n }\n\n const options = [];\n for (let i = startYear; i <= endYear; i++) {\n options.push(\n <Select.Option key={i} value={i}>\n {i}\n </Select.Option>,\n );\n }\n\n return (\n <Select\n prefix={prefix}\n value={year}\n aria-label={locale.yearSelectAriaLabel}\n onChange={this.onYearChange}\n popupContainer={this.selectContainerHandler}\n >\n {options}\n </Select>\n );\n }\n\n getMonthSelect(month) {\n const { prefix, momentLocale, locale } = this.props;\n const localeMonths = momentLocale.monthsShort();\n const options = [];\n for (let i = 0; i < 12; i++) {\n options.push(\n <Select.Option key={i} value={i}>\n {localeMonths[i]}\n </Select.Option>,\n );\n }\n return (\n <Select\n aria-label={locale.monthSelectAriaLabel}\n prefix={prefix}\n value={month}\n onChange={this.changeVisibleMonth}\n popupContainer={this.selectContainerHandler}\n >\n {options}\n </Select>\n );\n }\n\n onYearChange = year => {\n const { visibleMonth, changeVisibleMonth } = this.props;\n changeVisibleMonth(visibleMonth.clone().year(year), 'yearSelect');\n };\n\n changeVisibleMonth = month => {\n const { visibleMonth, changeVisibleMonth } = this.props;\n changeVisibleMonth(visibleMonth.clone().month(month), 'monthSelect');\n };\n\n onModePanelChange = mode => {\n this.props.changeMode(mode);\n };\n\n render() {\n const { prefix, mode, locale, visibleMonth } = this.props;\n\n const yearSelect = this.getYearSelect(visibleMonth.year());\n const monthSelect = mode === 'month' ? null : this.getMonthSelect(visibleMonth.month());\n const panelSelect = (\n <Radio.Group shape=\"button\" size=\"medium\" value={mode} onChange={this.onModePanelChange}>\n <Radio value=\"date\">{locale.month}</Radio>\n <Radio value=\"month\">{locale.year}</Radio>\n </Radio.Group>\n );\n\n return (\n <div className={`${prefix}calendar-header`}>\n {yearSelect}\n {monthSelect}\n {panelSelect}\n </div>\n );\n }\n}\n\nexport default CardHeader;\n","import React from 'react';\r\nimport Icon from '../../icon';\r\n\r\nclass DatePanelHeader extends React.PureComponent {\r\n render() {\r\n const {\r\n prefix,\r\n modes,\r\n visibleMonth,\r\n momentLocale,\r\n locale,\r\n changeMode,\r\n goNextMonth,\r\n goNextYear,\r\n goPrevMonth,\r\n goPrevYear,\r\n } = this.props;\r\n\r\n const localedMonths = momentLocale.months();\r\n const monthLabel = localedMonths[visibleMonth.month()];\r\n const yearLabel = visibleMonth.format(locale.format.yearLabel);\r\n const btnCls = `${prefix}calendar-btn`;\r\n\r\n return (\r\n <div className={`${prefix}calendar-panel-header`}>\r\n <button\r\n role=\"button\"\r\n title={locale.prevYear}\r\n className={`${btnCls} ${btnCls}-prev-year`}\r\n onClick={goPrevYear}\r\n >\r\n <Icon type=\"chevrons-left\" />\r\n </button>\r\n <button\r\n role=\"button\"\r\n title={locale.prevMonth}\r\n className={`${btnCls} ${btnCls}-prev-month`}\r\n onClick={goPrevMonth}\r\n >\r\n <Icon type=\"chevron-left-s\" />\r\n </button>\r\n <div\r\n className={`${prefix}calendar-panel-header-full`}\r\n onClick={() => {\r\n modes.includes('month') && changeMode('month');\r\n }}\r\n >\r\n {yearLabel} {monthLabel}\r\n </div>\r\n <button\r\n role=\"button\"\r\n title={locale.nextMonth}\r\n className={`${btnCls} ${btnCls}-next-month`}\r\n onClick={goNextMonth}\r\n >\r\n <Icon type=\"chevron-right-s\" />\r\n </button>\r\n <button\r\n role=\"button\"\r\n title={locale.nextYear}\r\n className={`${btnCls} ${btnCls}-next-year`}\r\n onClick={goNextYear}\r\n >\r\n <Icon type=\"chevrons-right\" />\r\n </button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default DatePanelHeader;\r\n","import React from 'react';\r\nimport Icon from '../../icon';\r\n\r\nclass MonthPanelHeader extends React.PureComponent {\r\n render() {\r\n const { prefix, visibleMonth, locale, modes, changeMode, goPrevYear, goNextYear } = this.props;\r\n const yearLabel = visibleMonth.format(locale.format.yearLabel);\r\n const btnCls = `${prefix}calendar-btn`;\r\n\r\n return (\r\n <div className={`${prefix}calendar-panel-header`}>\r\n <button\r\n role=\"button\"\r\n title={locale.prevYear}\r\n className={`${btnCls} ${btnCls}-prev-year`}\r\n onClick={goPrevYear}\r\n >\r\n <Icon type=\"chevrons-left\" />\r\n </button>\r\n <div\r\n className={`${prefix}calendar-panel-header-full`}\r\n onClick={() => modes.includes('year') && changeMode('year')}\r\n >\r\n {yearLabel}\r\n </div>\r\n <button\r\n role=\"button\"\r\n title={locale.nextYear}\r\n className={`${btnCls} ${btnCls}-next-year`}\r\n onClick={goNextYear}\r\n >\r\n <Icon type=\"chevrons-right\" />\r\n </button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default MonthPanelHeader;\r\n","import React from 'react';\nimport Icon from '../../icon';\n\nclass YearPanelHeader extends React.PureComponent {\n getDecadeLabel = date => {\n const year = date.year();\n const start = parseInt(year / 12, 10) * 12;\n const end = start + 11;\n return `${start}-${end}`;\n };\n\n render() {\n const { prefix, visibleMonth, locale, goPrevDecade, goNextDecade, modes, changeMode } = this.props;\n const decadeLabel = this.getDecadeLabel(visibleMonth);\n const btnCls = `${prefix}calendar-btn`;\n\n return (\n <div className={`${prefix}calendar-panel-header`}>\n <button\n role=\"button\"\n title={locale.prevDecade}\n className={`${btnCls} ${btnCls}-prev-decade`}\n onClick={goPrevDecade}\n >\n <Icon type=\"chevrons-left\" />\n </button>\n <div\n className={`${prefix}calendar-panel-header-full`}\n title={decadeLabel}\n onClick={() => { modes.includes('date') && changeMode('date'); modes.includes('month') && changeMode('month');}}\n >\n {decadeLabel}\n </div>\n <button\n role=\"button\"\n title={locale.nextDecade}\n className={`${btnCls} ${btnCls}-next-decade`}\n onClick={goNextDecade}\n >\n <Icon type=\"chevrons-right\" />\n </button>\n </div>\n );\n }\n}\n\nexport default YearPanelHeader;\n","import React, { PureComponent } from 'react';\nimport { DAYS_OF_WEEK } from '../utils';\n\nclass DateTableHead extends PureComponent {\n render() {\n const { prefix, momentLocale } = this.props;\n const firstDayOfWeek = momentLocale.firstDayOfWeek();\n const weekdaysShort = momentLocale.weekdaysShort();\n\n const elements = [];\n for (let i = 0; i < DAYS_OF_WEEK; i++) {\n const index = (firstDayOfWeek + i) % DAYS_OF_WEEK;\n elements.push(\n <th key={i} className={`${prefix}calendar-th`} role=\"cell\">\n <div className={`${prefix}calendar-th-day`}>{weekdaysShort[index]}</div>\n </th>,\n );\n }\n\n return (\n <thead className={`${prefix}calendar-thead`} role=\"rowgroup\">\n <tr role=\"row\">{elements}</tr>\n </thead>\n );\n }\n}\n\nexport default DateTableHead;\n","import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport DateTableHead from './date-table-head';\nimport {\n isDisabledDate,\n DAYS_OF_WEEK,\n CALENDAR_TABLE_COL_COUNT,\n CALENDAR_TABLE_ROW_COUNT,\n} from '../utils';\n\nfunction isSameDay(a, b) {\n return a && b && a.isSame(b, 'day');\n}\n\nfunction isRangeDate(date, startDate, endDate) {\n return (\n date.format('L') !== startDate.format('L') &&\n date.format('L') !== endDate.format('L') &&\n date.valueOf() > startDate.valueOf() &&\n date.valueOf() < endDate.valueOf()\n );\n}\n\nfunction isLastMonthDate(date, target) {\n if (date.year() < target.year()) {\n return 1;\n }\n return date.year() === target.year() && date.month() < target.month();\n}\n\nfunction isNextMonthDate(date, target) {\n if (date.year() > target.year()) {\n return 1;\n }\n return date.year() === target.year() && date.month() > target.month();\n}\n\nclass DateTable extends PureComponent {\n render() {\n const {\n prefix,\n visibleMonth,\n showOtherMonth,\n endValue,\n format,\n today,\n momentLocale,\n dateCellRender,\n disabledDate,\n onSelectDate,\n } = this.props;\n const startValue = this.props.startValue || this.props.value;\n\n const firstDayOfMonth = visibleMonth.clone().startOf('month'); // 该月的 1 号\n const firstDayOfMonthInWeek = firstDayOfMonth.day(); // 星期几\n\n const firstDayOfWeek = momentLocale.firstDayOfWeek();\n\n const datesOfLastMonthCount =\n (firstDayOfMonthInWeek + DAYS_OF_WEEK - firstDayOfWeek) % DAYS_OF_WEEK;\n\n const lastMonthDate = firstDayOfMonth.clone();\n lastMonthDate.add(0 - datesOfLastMonthCount, 'days');\n\n let counter = 0;\n let currentDate;\n const dateList = [];\n for (let i = 0; i < CALENDAR_TABLE_ROW_COUNT; i++) {\n for (let j = 0; j < CALENDAR_TABLE_COL_COUNT; j++) {\n currentDate = lastMonthDate;\n if (counter) {\n currentDate = currentDate.clone();\n currentDate.add(counter, 'days');\n }\n dateList.push(currentDate);\n counter++;\n }\n }\n\n counter = 0; // reset counter\n const monthElements = [];\n for (let i = 0; i < CALENDAR_TABLE_ROW_COUNT; i++) {\n const weekElements = [];\n for (let j = 0; j < CALENDAR_TABLE_COL_COUNT; j++) {\n currentDate = dateList[counter];\n const isLastMonth = isLastMonthDate(currentDate, visibleMonth);\n const isNextMonth = isNextMonthDate(currentDate, visibleMonth);\n const isCurrentMonth = !isLastMonth && !isNextMonth;\n\n const isDisabled = isDisabledDate(currentDate, disabledDate, 'date');\n const isToday = !isDisabled && isSameDay(currentDate, today) && isCurrentMonth;\n const isSelected =\n !isDisabled &&\n (isSameDay(currentDate, startValue) || isSameDay(currentDate, endValue)) &&\n isCurrentMonth;\n const isInRange =\n !isDisabled &&\n startValue &&\n endValue &&\n isRangeDate(currentDate, startValue, endValue) &&\n isCurrentMonth;\n\n const cellContent = !showOtherMonth && !isCurrentMonth ? null : dateCellRender(currentDate);\n\n const elementCls = classNames({\n [`${prefix}calendar-cell`]: true,\n [`${prefix}calendar-cell-prev-month`]: isLastMonth,\n [`${prefix}calendar-cell-next-month`]: isNextMonth,\n [`${prefix}calendar-cell-current`]: isToday,\n [`${prefix}inrange`]: isInRange,\n [`${prefix}selected`]: isSelected,\n [`${prefix}disabled`]: cellContent && isDisabled,\n });\n\n weekElements.push(\n <td\n key={counter}\n title={currentDate.format(format)}\n onClick={isDisabled ? undefined : onSelectDate.bind(null, currentDate)}\n className={elementCls}\n role=\"cell\"\n aria-disabled={isDisabled ? 'true' : 'false'}\n aria-selected={isSelected ? 'true' : 'false'}\n >\n <div className={`${prefix}calendar-date`}>{cellContent}</div>\n </td>,\n );\n counter++;\n }\n monthElements.push(\n <tr key={i} role=\"row\">\n {weekElements}\n </tr>,\n );\n }\n\n return (\n <table className={`${prefix}calendar-table`} role=\"grid\">\n <DateTableHead {...this.props} momentLocale={momentLocale} />\n <tbody className={`${prefix}calendar-tbody`} role=\"rowgroup\">\n {monthElements}\n </tbody>\n </table>\n );\n }\n}\n\nexport default DateTable;\n","import React, { PureComponent } from 'react';\nimport classnames from 'classnames';\nimport { isDisabledDate, MONTH_TABLE_ROW_COUNT, MONTH_TABLE_COL_COUNT } from '../utils';\n\nfunction isSameMonth(currentDate, selectedDate) {\n return (\n selectedDate &&\n currentDate.year() === selectedDate.year() &&\n currentDate.month() === selectedDate.month()\n );\n}\n\nclass MonthTable extends PureComponent {\n onMonthCellClick(date) {\n this.props.onSelectMonth(date, 'date');\n }\n\n render() {\n const {\n prefix,\n value,\n visibleMonth,\n disabledDate,\n today,\n momentLocale,\n monthCellRender,\n } = this.props;\n\n const monthLocale = momentLocale.monthsShort();\n\n let counter = 0;\n const monthList = [];\n for (let i = 0; i < MONTH_TABLE_ROW_COUNT; i++) {\n const rowList = [];\n for (let j = 0; j < MONTH_TABLE_COL_COUNT; j++) {\n const monthDate = visibleMonth.clone().month(counter);\n const isDisabled = isDisabledDate(monthDate, disabledDate, 'month');\n const isSelected = isSameMonth(monthDate, value);\n const isThisMonth = isSameMonth(monthDate, today);\n const elementCls = classnames({\n [`${prefix}calendar-cell`]: true,\n [`${prefix}calendar-cell-current`]: isThisMonth,\n [`${prefix}selected`]: isSelected,\n [`${prefix}disabled`]: isDisabled,\n });\n const localedMonth = monthLocale[counter];\n const monthCellContent = monthCellRender ? monthCellRender(monthDate) : localedMonth;\n rowList.push(\n <td\n key={counter}\n title={localedMonth}\n onClick={isDisabled ? undefined : this.onMonthCellClick.bind(this, monthDate)}\n className={elementCls}\n role=\"cell\"\n aria-disabled={isDisabled ? 'true' : 'false'}\n aria-selected={isSelected ? 'true' : 'false'}\n >\n <div className={`${prefix}calendar-month`}>{monthCellContent}</div>\n </td>,\n );\n counter++;\n }\n monthList.push(\n <tr key={i} role=\"row\">\n {rowList}\n </tr>,\n );\n }\n\n return (\n <table className={`${prefix}calendar-table`} role=\"grid\">\n <tbody className={`${prefix}calendar-tbody`} role=\"rowgroup\">\n {monthList}\n </tbody>\n </table>\n );\n }\n}\n\nexport default MonthTable;\n","import React from 'react';\nimport classnames from 'classnames';\nimport Icon from '../../icon';\nimport { isDisabledDate, YEAR_TABLE_COL_COUNT, YEAR_TABLE_ROW_COUNT } from '../utils';\n\nclass YearTable extends React.PureComponent {\n onYearCellClick(date) {\n this.props.onSelectYear(date, 'month');\n }\n\n render() {\n const {\n prefix,\n value,\n today,\n visibleMonth,\n disabledDate,\n yearCellRender,\n } = this.props;\n const currentYear = today.year();\n const selectedYear = value ? value.year() : null;\n const visibleYear = visibleMonth.year();\n const startYear = Math.floor(visibleYear / 12) * 12;\n\n const yearElements = [];\n let counter = 0;\n\n for (let i = 0; i < YEAR_TABLE_ROW_COUNT; i++) {\n const rowElements = [];\n for (let j = 0; j < YEAR_TABLE_COL_COUNT; j++) {\n let isDisabled = false;\n let onClick;\n const year = startYear + counter++;\n const title = year;\n const yearDate = visibleMonth.clone().year(year);\n isDisabled = isDisabledDate(yearDate, disabledDate, 'year');\n\n !isDisabled && (onClick = this.onYearCellClick.bind(this, yearDate));\n\n const content = yearCellRender ? yearCellRender(yearDate) : year;\n\n const isSelected = year === selectedYear;\n\n const classNames = classnames({\n [`${prefix}calendar-cell`]: true,\n [`${prefix}calendar-cell-current`]: year === currentYear,\n [`${prefix}selected`]: isSelected,\n [`${prefix}disabled`]: isDisabled,\n });\n\n rowElements.push(\n <td key={`${i}-${j}`} className={classNames} role=\"cell\">\n <div\n className={`${prefix}calendar-year`}\n onClick={onClick}\n title={title}\n aria-disabled={isDisabled ? 'true' : 'false'}\n aria-selected={isSelected ? 'true' : 'false'}\n >\n {content}\n </div>\n </td>,\n );\n }\n yearElements.push(\n <tr key={i} role=\"row\">\n {rowElements}\n </tr>,\n );\n }\n return (\n <table className={`${prefix}calendar-table`} role=\"grid\">\n <tbody className={`${prefix}calendar-tbody`} role=\"rowgroup\">\n {yearElements}\n </tbody>\n </table>\n );\n }\n}\n\nexport default YearTable;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport classnames from 'classnames';\nimport nextLocale from '../locale/zh-cn';\nimport { func, obj } from '../util';\nimport CardHeader from './head/card-header';\nimport DatePanelHeader from './head/date-panel-header';\nimport MonthPanelHeader from './head/month-panel-header';\nimport YearPanelHeader from './head/year-panel-header';\nimport DateTable from './table/date-table';\nimport MonthTable from './table/month-table';\nimport YearTable from './table/year-table';\nimport {\n checkMomentObj,\n formatDateValue,\n getVisibleMonth,\n isSameYearMonth,\n CALENDAR_MODES,\n CALENDAR_MODE_DATE,\n CALENDAR_MODE_MONTH,\n CALENDAR_MODE_YEAR,\n getLocaleData,\n} from './utils';\n\n/** Calendar */\nclass Calendar extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 默认选中的日期(moment 对象)\n */\n defaultValue: checkMomentObj,\n /**\n * 选中的日期值 (moment 对象)\n */\n value: checkMomentObj,\n /**\n * 面板模式\n */\n mode: PropTypes.oneOf(CALENDAR_MODES), // 生成 API 文档需要手动改回 ['date', 'month', 'year']\n // 面板可变化的模式列表,仅初始化时接收一次\n modes: PropTypes.array,\n // 日期值的格式(用于日期title显示的格式)\n format: PropTypes.string,\n /**\n * 是否展示非本月的日期\n */\n showOtherMonth: PropTypes.bool,\n /**\n * 默认展示的月份\n */\n defaultVisibleMonth: PropTypes.func,\n /**\n * 展现形态\n */\n shape: PropTypes.oneOf(['card', 'fullscreen', 'panel']),\n /**\n * 选择日期单元格时的回调\n * @param {Object} value 对应的日期值 (moment 对象)\n */\n onSelect: PropTypes.func,\n /**\n * 面板模式变化时的回调\n * @param {String} mode 对应面板模式 date month year\n */\n onModeChange: PropTypes.func,\n /**\n * 展现的月份变化时的回调\n * @param {Object} value 显示的月份 (moment 对象)\n * @param {String} reason 触发月份改变原因\n */\n onVisibleMonthChange: PropTypes.func,\n /**\n * 自定义样式类\n */\n className: PropTypes.string,\n /**\n * 自定义日期渲染函数\n * @param {Object} value 日期值(moment对象)\n * @returns {ReactNode}\n */\n dateCellRender: PropTypes.func,\n /**\n * 自定义月份渲染函数\n * @param {Object} calendarDate 对应 Calendar 返回的自定义日期对象\n * @returns {ReactNode}\n */\n monthCellRender: PropTypes.func,\n yearCellRender: PropTypes.func, // 兼容 0.x yearCellRender\n /**\n * 年份范围,[START_YEAR, END_YEAR] (只在shape 为 ‘card’, 'fullscreen' 下生效)\n */\n yearRange: PropTypes.arrayOf(PropTypes.number),\n /**\n * 不可选择的日期\n * @param {Object} calendarDate 对应 Calendar 返回的自定义日期对象\n * @param {String} view 当前视图类型,year: 年, month: 月, date: 日\n * @returns {Boolean}\n */\n disabledDate: PropTypes.func,\n /**\n * 国际化配置\n */\n locale: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n shape: 'fullscreen',\n modes: CALENDAR_MODES,\n format: 'YYYY-MM-DD',\n onSelect: func.noop,\n onVisibleMonthChange: func.noop,\n onModeChange: func.noop,\n dateCellRender: value => (value.date() < 10 ? `0${value.date()}` : value.date()),\n locale: nextLocale.Calendar,\n showOtherMonth: true,\n };\n\n constructor(props, context) {\n super(props, context);\n const value = formatDateValue(props.value || props.defaultValue);\n const visibleMonth = getVisibleMonth(props.defaultVisibleMonth, value);\n\n this.MODES = props.modes;\n this.today = moment();\n this.state = {\n value,\n mode: props.mode || this.MODES[0],\n visibleMonth,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps && nextProps.value !== this.props.value) {\n const value = formatDateValue(nextProps.value);\n this.setState({\n value,\n });\n\n if (value) {\n this.setState({\n visibleMonth: value,\n });\n }\n }\n\n if (nextProps.mode && this.MODES.indexOf(nextProps.mode) > -1) {\n this.setState({\n mode: nextProps.mode,\n });\n }\n }\n\n onSelectCell = (date, nextMode) => {\n const { shape } = this.props;\n\n this.changeVisibleMonth(date, 'cellClick');\n\n // 当用户所在的面板为初始化面板时,则选择动作为触发 onSelect 回调\n if (this.state.mode === this.MODES[0]) {\n this.props.onSelect(date);\n }\n\n if (shape === 'panel') {\n this.changeMode(nextMode);\n }\n };\n\n changeMode = nextMode => {\n if (nextMode && this.MODES.indexOf(nextMode) > -1 && nextMode !== this.state.mode) {\n this.setState({ mode: nextMode });\n this.props.onModeChange(nextMode);\n }\n };\n\n changeVisibleMonth = (date, reason) => {\n if (!isSameYearMonth(date, this.state.visibleMonth)) {\n this.setState({ visibleMonth: date });\n this.props.onVisibleMonthChange(date, reason);\n }\n };\n\n /**\n * 根据日期偏移量设置当前展示的月份\n * @param {Number} offset 日期偏移的数量\n * @param {String} type 日期偏移的类型 days, months, years\n */\n changeVisibleMonthByOffset(offset, type) {\n const cloneValue = this.state.visibleMonth.clone();\n cloneValue.add(offset, type);\n this.changeVisibleMonth(cloneValue, 'buttonClick');\n }\n\n goPrevDecade = () => {\n this.changeVisibleMonthByOffset(-12, 'years');\n };\n\n goNextDecade = () => {\n this.changeVisibleMonthByOffset(12, 'years');\n };\n\n goPrevYear = () => {\n this.changeVisibleMonthByOffset(-1, 'years');\n };\n\n goNextYear = () => {\n this.changeVisibleMonthByOffset(1, 'years');\n };\n\n goPrevMonth = () => {\n this.changeVisibleMonthByOffset(-1, 'months');\n };\n\n goNextMonth = () => {\n this.changeVisibleMonthByOffset(1, 'months');\n };\n\n render() {\n const {\n prefix,\n rtl,\n className,\n shape,\n showOtherMonth,\n format,\n locale,\n dateCellRender,\n monthCellRender,\n yearCellRender,\n disabledDate,\n yearRange,\n ...others\n } = this.props;\n const { state } = this;\n\n const classNames = classnames(\n {\n [`${prefix}calendar`]: true,\n [`${prefix}calendar-${shape}`]: shape,\n },\n className,\n );\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const { visibleMonth } = state;\n\n // reset moment locale\n if (nextLocale.momentLocale) {\n state.value && state.value.locale(nextLocale.momentLocale);\n visibleMonth.locale(nextLocale.momentLocale);\n }\n\n const localeData = getLocaleData(locale.format || {}, visibleMonth.localeData());\n\n const headerProps = {\n prefix,\n lang: nextLocale.momentLocale,\n value: state.value,\n mode: state.mode,\n modes: this.MODES,\n locale,\n rtl,\n visibleMonth,\n momentLocale: localeData,\n changeMode: this.changeMode,\n changeVisibleMonth: this.changeVisibleMonth,\n goNextDecade: this.goNextDecade,\n goNextYear: this.goNextYear,\n goNextMonth: this.goNextMonth,\n goPrevDecade: this.goPrevDecade,\n goPrevYear: this.goPrevYear,\n goPrevMonth: this.goPrevMonth,\n };\n\n const tableProps = {\n prefix,\n visibleMonth,\n showOtherMonth,\n value: state.value,\n mode: state.mode,\n locale,\n dateCellRender,\n monthCellRender,\n yearCellRender,\n disabledDate,\n momentLocale: localeData,\n today: this.today,\n goPrevDecade: this.goPrevDecade,\n goNextDecade: this.goNextDecade,\n };\n\n const tables = {\n [CALENDAR_MODE_DATE]: (\n <DateTable format={format} {...tableProps} onSelectDate={this.onSelectCell} />\n ),\n [CALENDAR_MODE_MONTH]: <MonthTable {...tableProps} onSelectMonth={this.onSelectCell} />,\n [CALENDAR_MODE_YEAR]: (\n <YearTable {...tableProps} rtl={rtl} onSelectYear={this.onSelectCell} />\n ),\n };\n\n const panelHeaders = {\n [CALENDAR_MODE_DATE]: <DatePanelHeader {...headerProps} />,\n [CALENDAR_MODE_MONTH]: <MonthPanelHeader {...headerProps} />,\n [CALENDAR_MODE_YEAR]: <YearPanelHeader {...headerProps} />,\n };\n\n return (\n <div {...obj.pickOthers(Calendar.propTypes, others)} className={classNames}>\n {shape === 'panel' ? (\n panelHeaders[state.mode]\n ) : (\n <CardHeader {...headerProps} yearRange={yearRange} />\n )}\n {tables[state.mode]}\n </div>\n );\n }\n}\n\nexport default Calendar;\n","import ConfigProvider from '../config-provider';\nimport { preFormatDateValue } from './utils';\nimport Calendar from './calendar';\n\n/* istanbul ignore next */\nconst transform = (props, deprecated) => {\n const { type, onChange, base, disabledMonth, disabledYear, ...others } = props;\n const newProps = others;\n\n if ('type' in props) {\n deprecated('type', 'shape', 'Calendar');\n\n newProps.shape = type;\n\n if ('shape' in props) {\n newProps.shape = props.shape;\n }\n }\n\n if ('base' in props) {\n deprecated('base', 'defaultVisibleMonth', 'Calendar');\n\n let newDefaultVisibleMonth = () => {\n preFormatDateValue(base, 'YYYY-MM-DD');\n };\n\n if ('defaultVisibleMonth' in props) {\n newDefaultVisibleMonth = props.defaultVisibleMonth;\n }\n\n newProps.defaultVisibleMonth = newDefaultVisibleMonth;\n }\n\n if ('onChange' in props && typeof onChange === 'function') {\n deprecated('onChange', 'onSelect', 'Calendar');\n\n const newOnSelect = date => {\n onChange({ mode: others.mode, value: date });\n\n if ('onSelect' in props) {\n props.onSelect(date);\n }\n };\n\n newProps.onSelect = newOnSelect;\n }\n\n if ('disabledMonth' in props && typeof disabledMonth === 'function') {\n deprecated('disabledMonth', 'disabledDate', 'Calendar');\n }\n\n if ('disabledYear' in props && typeof disabledYear === 'function') {\n deprecated('disabledYear', 'disabledDate', 'Calendar');\n }\n\n if ('yearCellRender' in props && typeof yearCellRender === 'function') {\n deprecated('yearCellRender', 'monthCellRender/dateCellRender', 'Calendar');\n }\n\n if ('language' in props) {\n deprecated('language', 'moment.locale', 'Calendar');\n }\n\n return newProps;\n};\n\nexport default ConfigProvider.config(Calendar, {\n transform,\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { findDOMNode } from 'react-dom';\nimport Menu from '../menu';\nimport VirtualList from '../virtual-list';\n\nexport default class CascaderMenu extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n useVirtual: PropTypes.bool,\n children: PropTypes.node,\n };\n\n componentDidMount() {\n this.scrollToSelectedItem();\n }\n\n scrollToSelectedItem() {\n const { prefix, useVirtual, children } = this.props;\n if (!children || children.length === 0) {\n return;\n }\n const selectedIndex = children.findIndex(\n item => !!item.props.checked || !!item.props.selected || !!item.props.expanded,\n );\n\n if (selectedIndex === -1) {\n return;\n }\n\n if (useVirtual) {\n const instance = this.refs.virtual.getInstance();\n setTimeout(() => instance.scrollTo(selectedIndex), 0);\n } else {\n const itemSelector = `.${prefix}menu-item`;\n const menu = findDOMNode(this.refs.menu);\n const targetItem = menu.querySelectorAll(itemSelector)[selectedIndex];\n if (targetItem) {\n menu.scrollTop =\n targetItem.offsetTop -\n Math.floor((menu.clientHeight / targetItem.clientHeight - 1) / 2) *\n targetItem.clientHeight;\n }\n }\n }\n\n renderMenu(items, ref, props) {\n return (\n <Menu ref={ref} role=\"listbox\" {...props}>\n {items.map(node => {\n if (React.isValidElement(node) && node.type.menuChildType === 'item') {\n return React.cloneElement(node, {\n menu: this,\n });\n }\n\n return node;\n })}\n </Menu>\n );\n }\n\n render() {\n const { prefix, useVirtual, className, style, children, ...others } = this.props;\n const menuProps = {\n labelToggleChecked: false,\n className: `${prefix}cascader-menu`,\n ...others,\n };\n return (\n <div\n ref=\"menu\"\n className={`${prefix}cascader-menu-wrapper ${className ? className : ''}`}\n style={style}\n >\n {useVirtual ? (\n <VirtualList\n ref=\"virtual\"\n itemsRenderer={(items, ref) => this.renderMenu(items, ref, menuProps)}\n >\n {children}\n </VirtualList>\n ) : (\n this.renderMenu(children, undefined, menuProps)\n )}\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Menu from '../menu';\nimport Icon from '../icon';\nimport { func, obj, KEYCODE } from '../util';\n\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\n\nexport default class CascaderMenuItem extends Component {\n static menuChildType = 'item';\n\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n selected: PropTypes.bool,\n onSelect: PropTypes.func,\n expanded: PropTypes.bool,\n canExpand: PropTypes.bool,\n menu: PropTypes.any,\n expandTriggerType: PropTypes.oneOf(['click', 'hover']),\n onExpand: PropTypes.func,\n onFold: PropTypes.func,\n checkable: PropTypes.bool,\n checked: PropTypes.bool,\n indeterminate: PropTypes.bool,\n checkboxDisabled: PropTypes.bool,\n onCheck: PropTypes.func,\n children: PropTypes.node,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n };\n\n bindCtx(this, [\n 'handleExpand',\n 'handleClick',\n 'handleMouseEnter',\n 'handleKeyDown',\n 'removeLoading',\n ]);\n }\n\n addLoading() {\n this.setState({\n loading: true,\n });\n }\n\n removeLoading() {\n this.setState({\n loading: false,\n });\n }\n\n setLoadingIfNeed(p) {\n if (p && typeof p.then === 'function') {\n this.addLoading();\n p.then(this.removeLoading).catch(this.removeLoading);\n }\n }\n\n handleExpand(focusedFirstChild) {\n this.setLoadingIfNeed(this.props.onExpand(focusedFirstChild));\n }\n\n handleClick() {\n this.handleExpand(false);\n }\n\n handleMouseEnter() {\n this.handleExpand(false);\n }\n\n handleKeyDown(e) {\n if (!this.props.disabled) {\n if (e.keyCode === KEYCODE.RIGHT || e.keyCode === KEYCODE.ENTER) {\n if (this.props.canExpand) {\n this.handleExpand(true);\n }\n } else if (e.keyCode === KEYCODE.LEFT || e.keyCode === KEYCODE.ESC) {\n this.props.onFold();\n } else if (e.keyCode === KEYCODE.SPACE) {\n this.handleExpand(false);\n }\n }\n }\n\n render() {\n const {\n prefix,\n className,\n menu,\n disabled,\n selected,\n onSelect,\n expanded,\n canExpand,\n expandTriggerType,\n checkable,\n checked,\n indeterminate,\n checkboxDisabled,\n onCheck,\n children,\n } = this.props;\n const others = pickOthers(Object.keys(CascaderMenuItem.propTypes), this.props);\n const { loading } = this.state;\n\n const itemProps = {\n className: cx({\n [`${prefix}cascader-menu-item`]: true,\n [`${prefix}expanded`]: expanded,\n [className]: !!className,\n }),\n disabled,\n menu,\n onKeyDown: this.handleKeyDown,\n role: 'option',\n ...others,\n };\n if (!disabled) {\n if (expandTriggerType === 'hover') {\n itemProps.onMouseEnter = this.handleMouseEnter;\n } else {\n itemProps.onClick = this.handleClick;\n }\n }\n\n let Item;\n if (checkable) {\n Item = Menu.CheckboxItem;\n itemProps.checked = checked;\n itemProps.indeterminate = indeterminate;\n itemProps.checkboxDisabled = checkboxDisabled;\n itemProps.onChange = onCheck;\n } else {\n Item = Menu.Item;\n itemProps.selected = selected;\n itemProps.onSelect = onSelect;\n }\n\n return (\n <Item {...itemProps}>\n {children}\n {canExpand ? (\n loading ? (\n <Icon\n className={`${prefix}cascader-menu-icon-right ${prefix}cascader-menu-icon-loading`}\n type=\"loading\"\n />\n ) : (\n <Icon\n className={`${prefix}cascader-menu-icon-right ${prefix}cascader-menu-icon-expand`}\n type=\"chevron-right\"\n />\n )\n ) : null}\n </Item>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Menu from '../menu';\nimport { func, obj, dom } from '../util';\nimport CascaderMenu from './menu';\nimport CascaderMenuItem from './item';\n\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\nconst { addClass, removeClass, setStyle, getStyle } = dom;\n\n/**\n * Cascader\n */\nexport default class Cascader extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n pure: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 数据源,结构可参考下方说明\n */\n dataSource: PropTypes.arrayOf(PropTypes.object),\n /**\n * (非受控)默认值\n */\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n /**\n * (受控)当前值\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n /**\n * 选中值改变时触发的回调函数\n * @param {String|Array} value 选中的值,单选时返回单个值,多选时返回数组\n * @param {Object|Array} data 选中的数据,包括 value 和 label,单选时返回单个值,多选时返回数组,父子节点选中关联时,同时选中,只返回父节点\n * @param {Object} extra 额外参数\n * @param {Array} extra.selectedPath 单选时选中的数据的路径\n * @param {Boolean} extra.checked 多选时当前的操作是选中还是取消选中\n * @param {Object} extra.currentData 多选时当前操作的数据\n * @param {Array} extra.checkedData 多选时所有被选中的数据\n * @param {Array} extra.indeterminateData 多选时半选的数据\n */\n onChange: PropTypes.func,\n /**\n * (非受控)默认展开值,如果不设置,组件内部会根据 defaultValue/value 进行自动设置\n */\n defaultExpandedValue: PropTypes.arrayOf(PropTypes.string),\n /**\n * (受控)当前展开值\n */\n expandedValue: PropTypes.arrayOf(PropTypes.string),\n /**\n * 展开触发的方式\n */\n expandTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 展开时触发的回调函数\n * @param {Array} expandedValue 各列展开值的数组\n */\n onExpand: PropTypes.func,\n /**\n * 是否开启虚拟滚动\n */\n useVirtual: PropTypes.bool,\n /**\n * 是否多选\n */\n multiple: PropTypes.bool,\n /**\n * 单选时是否只能选中叶子节点\n */\n canOnlySelectLeaf: PropTypes.bool,\n /**\n * 多选时是否只能选中叶子节点\n */\n canOnlyCheckLeaf: PropTypes.bool,\n /**\n * 父子节点是否选中不关联\n */\n checkStrictly: PropTypes.bool,\n /**\n * 每列列表样式对象\n */\n listStyle: PropTypes.object,\n /**\n * 每列列表类名\n */\n listClassName: PropTypes.string,\n /**\n * 每列列表项渲染函数\n * @param {Object} data 数据\n * @return {ReactNode} 列表项内容\n */\n itemRender: PropTypes.func,\n /**\n * 异步加载数据函数\n * @param {Object} data 当前点击异步加载的数据\n * @param {Object} source 当前点击数据\n */\n loadData: PropTypes.func,\n searchValue: PropTypes.string,\n onBlur: PropTypes.func,\n filteredPaths: PropTypes.array,\n filteredListStyle: PropTypes.object,\n resultRender: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n pure: false,\n dataSource: [],\n defaultValue: null,\n canOnlySelectLeaf: false,\n canOnlyCheckLeaf: false,\n expandTriggerType: 'click',\n multiple: false,\n useVirtual: false,\n checkStrictly: false,\n itemRender: item => item.label,\n };\n\n constructor(props, context) {\n super(props, context);\n\n const {\n defaultValue,\n value,\n defaultExpandedValue,\n expandedValue,\n dataSource,\n multiple,\n checkStrictly,\n canOnlyCheckLeaf,\n loadData,\n } = props;\n\n this.updateCache(dataSource);\n\n let normalizedValue = this.normalizeValue(typeof value === 'undefined' ? defaultValue : value);\n if (!loadData) {\n normalizedValue = normalizedValue.filter(v => this._v2n[v]);\n }\n // TODO loadData\n const realExpandedValue =\n typeof expandedValue === 'undefined'\n ? typeof defaultExpandedValue === 'undefined'\n ? this.getExpandedValue(normalizedValue[0])\n : this.normalizeValue(defaultExpandedValue)\n : this.normalizeValue(expandedValue);\n const st = {\n value: normalizedValue,\n expandedValue: realExpandedValue,\n };\n if (multiple && !checkStrictly && !canOnlyCheckLeaf) {\n st.value = this.completeValue(props.dataSource, st.value);\n }\n\n this.state = st;\n\n this.lastExpandedValue = [...this.state.expandedValue];\n\n bindCtx(this, ['handleMouseLeave', 'handleFocus', 'handleFold', 'getCascaderNode', 'onBlur']);\n }\n\n componentDidMount() {\n this.setCascaderInnerWidth();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateCache(nextProps.dataSource);\n\n const state = {};\n if ('value' in nextProps) {\n state.value = this.normalizeValue(nextProps.value);\n if (!nextProps.loadData) {\n state.value = state.value.filter(v => this._v2n[v]);\n }\n\n const { multiple, checkStrictly, canOnlyCheckLeaf } = nextProps;\n if (multiple && !checkStrictly && !canOnlyCheckLeaf) {\n state.value = this.completeValue(nextProps.dataSource, state.value);\n }\n if (!this.state.expandedValue.length && !('expandedValue' in nextProps)) {\n state.expandedValue = this.getExpandedValue(state.value[0]);\n }\n }\n if ('expandedValue' in nextProps) {\n state.expandedValue = this.normalizeValue(nextProps.expandedValue);\n }\n if (Object.keys(state).length) {\n this.setState(state);\n }\n }\n\n componentDidUpdate() {\n this.setCascaderInnerWidth();\n }\n\n getCascaderNode(ref) {\n this.cascader = ref;\n if (this.cascader) {\n this.cascaderInner = this.cascader.querySelector(`.${this.props.prefix}cascader-inner`);\n }\n }\n\n setCascaderInnerWidth() {\n if (!this.cascaderInner) {\n return;\n }\n const menus = [].slice.call(\n this.cascaderInner.querySelectorAll(`.${this.props.prefix}cascader-menu-wrapper`),\n );\n if (menus.length === 0) {\n return;\n }\n\n const menusWidth = Math.ceil(\n menus.reduce((ret, menu) => {\n return ret + menu.offsetWidth;\n }, 0),\n );\n if (getStyle(this.cascaderInner, 'width') !== menusWidth) {\n setStyle(this.cascaderInner, 'width', menusWidth);\n }\n\n if (getStyle(this.cascader, 'display') === 'inline-block') {\n const hasRightBorderClass = `${this.props.prefix}has-right-border`;\n menus.forEach(menu => removeClass(menu, hasRightBorderClass));\n if (this.cascader.clientWidth > menusWidth) {\n addClass(menus[menus.length - 1], hasRightBorderClass);\n }\n }\n }\n\n setCache(data, prefix = '0') {\n data.forEach((item, index) => {\n const { value, children } = item;\n const pos = `${prefix}-${index}`;\n const newValue = String(value);\n item.value = newValue;\n this._v2n[newValue] = this._p2n[pos] = {\n ...item,\n pos,\n _source: item,\n };\n\n if (children && children.length) {\n this.setCache(children, pos);\n }\n });\n }\n\n updateCache(dataSource) {\n this._v2n = {};\n this._p2n = {};\n this.setCache(dataSource);\n }\n\n normalizeValue(value) {\n if (value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n return [value];\n }\n\n return [];\n }\n\n getExpandedValue(v) {\n if (!v || !this._v2n[v]) {\n return [];\n }\n\n const { pos } = this._v2n[v];\n if (pos.split('-').length === 2) {\n return [];\n }\n\n const expandedMap = {};\n Object.keys(this._p2n).forEach(p => {\n if (this.isDescendantOrSelf(p, pos) && p !== pos) {\n expandedMap[this._p2n[p].value] = p;\n }\n });\n\n return Object.keys(expandedMap).sort((prev, next) => {\n return expandedMap[prev].split('-').length - expandedMap[next].split('-').length;\n });\n }\n\n /* eslint-disable max-statements */\n completeValue(dataSource, value) {\n const filterValue = value.filter(v => typeof this._v2n[v] !== 'undefined');\n const flatValue = this.flatValue(filterValue);\n\n const childChecked = child => flatValue.indexOf(child.value) > -1;\n const removeValue = child => flatValue.splice(flatValue.indexOf(child.value), 1);\n const addParentValue = (i, parent) => flatValue.splice(i, 0, parent.value);\n for (let i = 0; i < flatValue.length; i++) {\n const pos = this.getPos(flatValue[i]);\n const nums = pos.split('-');\n if (nums.length === 2) {\n break;\n }\n for (let j = nums.length - 2; j > 0; j--) {\n const parent = nums.slice(1, j + 1).reduce((ret, num) => ret.children[num], {\n children: dataSource,\n });\n const parentChecked = parent.children.every(childChecked);\n if (parentChecked) {\n parent.children.forEach(removeValue);\n addParentValue(i, parent);\n } else {\n break;\n }\n }\n }\n\n const newValue = [];\n if (flatValue.length) {\n // flatValue = flatValue.reverse(); TODO 后续检测大数据性能问题\n const ps = Object.keys(this._p2n);\n for (let i = 0; i < flatValue.length; i++) {\n const pos = this.getPos(flatValue[i]);\n for (let j = 0; j < ps.length; j++) {\n if (this.isDescendantOrSelf(pos, ps[j])) {\n newValue.push(this.getValue(ps[j]));\n ps.splice(j, 1);\n j--;\n }\n }\n }\n }\n\n return newValue;\n }\n\n /* eslint-enable */\n flatValue(value) {\n const getDepth = v => this.getPos(v).split('-').length;\n const newValue = value.slice(0).sort((prev, next) => {\n return getDepth(prev) - getDepth(next);\n });\n\n for (let i = 0; i < newValue.length; i++) {\n for (let j = 0; j < newValue.length; j++) {\n if (\n i !== j &&\n this.isDescendantOrSelf(this.getPos(newValue[i]), this.getPos(newValue[j]))\n ) {\n newValue.splice(j, 1);\n j--;\n }\n }\n }\n\n return newValue;\n }\n\n getValue(pos) {\n return this._p2n[pos] ? this._p2n[pos].value : null;\n }\n\n getPos(value) {\n return this._v2n[value] ? this._v2n[value].pos : null;\n }\n\n getData(value) {\n return value.map(v => this._v2n[v]);\n }\n\n isDescendantOrSelf(currentPos, targetPos) {\n if (!currentPos || !targetPos) {\n return false;\n }\n\n const currentNums = currentPos.split('-');\n const targetNums = targetPos.split('-');\n\n return (\n currentNums.length <= targetNums.length &&\n currentNums.every((num, index) => {\n return num === targetNums[index];\n })\n );\n }\n\n isSiblingOrSelf(currentPos, targetPos) {\n const currentNums = currentPos.split('-').slice(0, -1);\n const targetNums = targetPos.split('-').slice(0, -1);\n\n return (\n currentNums.length === targetNums.length &&\n currentNums.every((num, index) => {\n return num === targetNums[index];\n })\n );\n }\n\n processValue(value, v, checked) {\n const index = value.indexOf(v);\n if (checked && index === -1) {\n value.push(v);\n } else if (!checked && index > -1) {\n value.splice(index, 1);\n }\n }\n\n handleSelect(v, canExpand) {\n if (!(this.props.canOnlySelectLeaf && canExpand) && this.state.value[0] !== v) {\n if (!('value' in this.props)) {\n this.setState({\n value: [v],\n });\n }\n\n if ('onChange' in this.props) {\n const data = this._v2n[v];\n const nums = data.pos.split('-');\n const selectedPath = nums.slice(1).reduce((ret, num, index) => {\n const p = nums.slice(0, index + 2).join('-');\n ret.push(this._p2n[p]);\n return ret;\n }, []);\n\n this.props.onChange(v, data, {\n selectedPath,\n });\n }\n }\n\n if (canExpand) {\n if (!this.props.canOnlySelectLeaf) {\n this.lastExpandedValue = this.state.expandedValue.slice(0, -1);\n }\n } else {\n this.lastExpandedValue = [...this.state.expandedValue];\n }\n }\n\n /* eslint-disable max-statements */\n handleCheck(v, checked) {\n const { checkStrictly, canOnlyCheckLeaf } = this.props;\n const value = [...this.state.value];\n\n if (checkStrictly || canOnlyCheckLeaf) {\n this.processValue(value, v, checked);\n } else {\n const pos = this.getPos(v);\n\n const ps = Object.keys(this._p2n);\n ps.forEach(p => {\n if (this.isDescendantOrSelf(pos, p)) {\n this.processValue(value, this.getValue(p), checked);\n }\n });\n\n let currentPos = pos;\n const nums = pos.split('-');\n for (let i = nums.length; i > 2; i--) {\n let parentChecked = true;\n for (let j = 0; j < ps.length; j++) {\n const p = ps[j];\n if (!this.isSiblingOrSelf(currentPos, p)) {\n continue;\n }\n const v = this.getValue(p);\n if (value.indexOf(v) === -1) {\n parentChecked = false;\n break;\n }\n }\n const parentPos = nums.slice(0, i - 1).join('-');\n this.processValue(value, this.getValue(parentPos), parentChecked);\n\n currentPos = parentPos;\n }\n }\n\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n\n if ('onChange' in this.props) {\n if (checkStrictly || canOnlyCheckLeaf) {\n const data = this.getData(value);\n this.props.onChange(value, data, {\n checked,\n currentData: this._v2n[v],\n checkedData: data,\n });\n } else {\n const flatValue = this.flatValue(value);\n const flatData = this.getData(flatValue);\n const checkedData = this.getData(value);\n const indeterminateValue = this.getIndeterminate(value);\n const indeterminateData = this.getData(indeterminateValue);\n this.props.onChange(flatValue, flatData, {\n checked,\n currentData: this._v2n[v],\n checkedData,\n indeterminateData,\n });\n }\n }\n\n this.lastExpandedValue = [...this.state.expandedValue];\n }\n\n handleExpand(value, level, canExpand, focusedFirstChild) {\n const { expandedValue } = this.state;\n\n if (canExpand || expandedValue.length > level) {\n if (canExpand) {\n expandedValue.splice(level, expandedValue.length - level, value);\n } else {\n expandedValue.splice(level);\n }\n\n const callback = () => {\n this.setExpandValue(expandedValue);\n\n if (focusedFirstChild) {\n const endExpandedValue = expandedValue[expandedValue.length - 1];\n this.setState({\n focusedValue: this._v2n[endExpandedValue].children[0].value,\n });\n }\n };\n\n const { loadData } = this.props;\n if (canExpand && loadData) {\n const data = this._v2n[value];\n return loadData(data, data._source).then(callback);\n } else {\n return callback();\n }\n }\n }\n\n handleMouseLeave() {\n this.setExpandValue([...this.lastExpandedValue]);\n }\n\n setExpandValue(expandedValue) {\n if (!('expandedValue' in this.props)) {\n this.setState({\n expandedValue,\n });\n }\n\n if ('onExpand' in this.props) {\n this.props.onExpand(expandedValue);\n }\n }\n\n getFirstFocusKeyByDataSource(dataSource) {\n if (!dataSource || dataSource.length === 0) {\n return '';\n }\n\n for (let i = 0; i < dataSource.length; i++) {\n if (dataSource[i] && !dataSource[i].disabled) {\n return dataSource[i].value;\n }\n }\n\n return '';\n }\n\n getFirstFocusKeyByFilteredPaths(filteredPaths) {\n if (!filteredPaths || filteredPaths.length === 0) {\n return '';\n }\n\n for (let i = 0; i < filteredPaths.length; i++) {\n const path = filteredPaths[i];\n if (!path.some(item => item.disabled)) {\n const lastItem = path[path.length - 1];\n return lastItem.value;\n }\n }\n\n return '';\n }\n\n getFirstFocusKey() {\n const { dataSource, searchValue, filteredPaths } = this.props;\n\n return !searchValue\n ? this.getFirstFocusKeyByDataSource(dataSource)\n : this.getFirstFocusKeyByFilteredPaths(filteredPaths);\n }\n\n setFocusValue() {\n this.setState({\n focusedValue: this.getFirstFocusKey(),\n });\n }\n\n handleFocus(focusedValue) {\n this.setState({\n focusedValue,\n });\n }\n\n handleFold() {\n const { expandedValue } = this.state;\n if (expandedValue.length > 0) {\n this.setExpandValue(expandedValue.slice(0, -1));\n }\n\n this.setState({\n focusedValue: expandedValue[expandedValue.length - 1],\n });\n }\n\n getIndeterminate(value) {\n const indeterminate = [];\n\n const positions = this.flatValue(value).map(value => this.getPos(value));\n positions.forEach(pos => {\n const nums = pos.split('-');\n for (let i = nums.length; i > 2; i--) {\n const parentPos = nums.slice(0, i - 1).join('-');\n const parentValue = this.getValue(parentPos);\n if (indeterminate.indexOf(parentValue) === -1) {\n indeterminate.push(parentValue);\n }\n }\n });\n\n return indeterminate;\n }\n\n onBlur(e) {\n this.setState({\n focusedValue: '',\n });\n\n this.props.onBlur && this.props.onBlur(e);\n }\n\n renderMenu(data, level) {\n const {\n prefix,\n multiple,\n useVirtual,\n checkStrictly,\n expandTriggerType,\n loadData,\n canOnlyCheckLeaf,\n listClassName,\n listStyle,\n itemRender,\n } = this.props;\n const { value, expandedValue, focusedValue } = this.state;\n\n return (\n <CascaderMenu\n key={level}\n prefix={prefix}\n useVirtual={useVirtual}\n className={listClassName}\n style={listStyle}\n ref={this.saveMenuRef}\n focusedKey={focusedValue}\n onItemFocus={this.handleFocus}\n onBlur={this.onBlur}\n >\n {data.map(item => {\n const disabled = !!item.disabled;\n const canExpand =\n (!!item.children && !!item.children.length) || (!!loadData && !item.isLeaf);\n const expanded = expandedValue[level] === item.value;\n const props = {\n prefix,\n disabled,\n canExpand,\n expanded,\n expandTriggerType,\n onExpand: this.handleExpand.bind(this, item.value, level, canExpand),\n onFold: this.handleFold,\n };\n\n if (multiple) {\n props.checkable = !(canOnlyCheckLeaf && canExpand);\n props.checked = value.indexOf(item.value) > -1;\n props.indeterminate =\n checkStrictly || canOnlyCheckLeaf\n ? false\n : this.indeterminate.indexOf(item.value) > -1;\n props.checkboxDisabled = !!item.checkboxDisabled;\n props.onCheck = this.handleCheck.bind(this, item.value);\n } else {\n props.selected = value[0] === item.value;\n props.onSelect = this.handleSelect.bind(this, item.value, canExpand);\n }\n\n return (\n <CascaderMenuItem key={item.value} {...props}>\n {itemRender(item)}\n </CascaderMenuItem>\n );\n })}\n </CascaderMenu>\n );\n }\n\n renderMenus() {\n const { dataSource } = this.props;\n const { expandedValue } = this.state;\n\n const menus = [];\n let data = dataSource;\n\n for (let i = 0; i <= expandedValue.length; i++) {\n if (!data) {\n break;\n }\n\n menus.push(this.renderMenu(data, i));\n\n let expandedItem;\n for (let j = 0; j < data.length; j++) {\n if (data[j].value === expandedValue[i]) {\n expandedItem = data[j];\n break;\n }\n }\n data = expandedItem ? expandedItem.children : null;\n }\n\n return menus;\n }\n\n renderFilteredItem(path) {\n const { prefix, resultRender, searchValue, multiple } = this.props;\n const { value } = this.state;\n const lastItem = path[path.length - 1];\n\n let Item;\n const props = {\n key: lastItem.value,\n className: `${prefix}cascader-filtered-item`,\n disabled: path.some(item => item.disabled),\n children: resultRender(searchValue, path),\n };\n\n if (multiple) {\n Item = Menu.CheckboxItem;\n const { checkStrictly, canOnlyCheckLeaf } = this.props;\n props.checked = value.indexOf(lastItem.value) > -1;\n props.indeterminate =\n !checkStrictly && !canOnlyCheckLeaf && this.indeterminate.indexOf(lastItem.value) > -1;\n props.checkboxDisabled = lastItem.checkboxDisabled;\n props.onChange = this.handleCheck.bind(this, lastItem.value);\n } else {\n Item = Menu.Item;\n props.selected = value[0] === lastItem.value;\n props.onSelect = this.handleSelect.bind(this, lastItem.value, false);\n }\n\n return <Item {...props} />;\n }\n\n renderFilteredList() {\n const { prefix, filteredListStyle, filteredPaths } = this.props;\n const { focusedValue } = this.state;\n return (\n <Menu\n focusedKey={focusedValue}\n onItemFocus={this.handleFocus}\n className={`${prefix}cascader-filtered-list`}\n style={filteredListStyle}\n >\n {filteredPaths.map(path => this.renderFilteredItem(path))}\n </Menu>\n );\n }\n\n render() {\n const {\n prefix,\n rtl,\n className,\n expandTriggerType,\n multiple,\n dataSource,\n checkStrictly,\n canOnlyCheckLeaf,\n searchValue,\n } = this.props;\n const others = pickOthers(Object.keys(Cascader.propTypes), this.props);\n const { value } = this.state;\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const props = {\n className: cx({\n [`${prefix}cascader`]: true,\n multiple,\n [className]: !!className,\n }),\n ref: 'cascader',\n ...others,\n };\n if (expandTriggerType === 'hover') {\n props.onMouseLeave = this.handleMouseLeave;\n }\n\n if (multiple && !checkStrictly && !canOnlyCheckLeaf) {\n this.indeterminate = this.getIndeterminate(value);\n }\n\n return (\n <div {...props} ref={this.getCascaderNode}>\n {!searchValue ? (\n <div className={`${prefix}cascader-inner`}>\n {dataSource && dataSource.length ? this.renderMenus() : null}\n </div>\n ) : (\n this.renderFilteredList()\n )}\n </div>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Cascader from './cascader';\n\nexport default ConfigProvider.config(Cascader, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('expandTrigger' in props) {\n deprecated('expandTrigger', 'expandTriggerType', 'Cascader');\n const { expandTrigger, ...others } = props;\n props = { expandTriggerType: expandTrigger, ...others };\n }\n\n if ('showItemCount' in props) {\n deprecated('showItemCount', 'listStyle | listClassName', 'Cascader');\n }\n if ('labelWidth' in props) {\n deprecated('labelWidth', 'listStyle | listClassName', 'Cascader');\n }\n\n return props;\n },\n exportNames: ['setFocusValue'],\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '../select';\nimport Cascader from '../cascader';\nimport Menu from '../menu';\nimport { func, obj, dom, KEYCODE } from '../util';\n\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\nconst { getStyle } = dom;\n\n/**\n * CascaderSelect\n */\nexport default class CascaderSelect extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 选择框大小\n */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n /**\n * 选择框占位符\n */\n placeholder: PropTypes.string,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 是否有下拉箭头\n */\n hasArrow: PropTypes.bool,\n /**\n * 是否有边框\n */\n hasBorder: PropTypes.bool,\n /**\n * 是否有清除按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 自定义内联 label\n */\n label: PropTypes.node,\n /**\n * 是否只读,只读模式下可以展开弹层但不能选\n */\n readOnly: PropTypes.bool,\n /**\n * 数据源,结构可参考下方说明\n */\n dataSource: PropTypes.arrayOf(PropTypes.object),\n /**\n * (非受控)默认值\n */\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n /**\n * (受控)当前值\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n /**\n * 选中值改变时触发的回调函数\n * @param {String|Array} value 选中的值,单选时返回单个值,多选时返回数组\n * @param {Object|Array} data 选中的数据,包括 value 和 label,单选时返回单个值,多选时返回数组,父子节点选中关联时,同时选中,只返回父节点\n * @param {Object} extra 额外参数\n * @param {Array} extra.selectedPath 单选时选中的数据的路径\n * @param {Boolean} extra.checked 多选时当前的操作是选中还是取消选中\n * @param {Object} extra.currentData 多选时当前操作的数据\n * @param {Array} extra.checkedData 多选时所有被选中的数据\n * @param {Array} extra.indeterminateData 多选时半选的数据\n */\n onChange: PropTypes.func,\n /**\n * 默认展开值,如果不设置,组件内部会根据 defaultValue/value 进行自动设置\n */\n defaultExpandedValue: PropTypes.arrayOf(PropTypes.string),\n /**\n * 展开触发的方式\n */\n expandTriggerType: PropTypes.oneOf(['click', 'hover']),\n onExpand: PropTypes.func,\n /**\n * 是否开启虚拟滚动\n */\n useVirtual: PropTypes.bool,\n /**\n * 是否多选\n */\n multiple: PropTypes.bool,\n /**\n * 是否选中即发生改变, 该属性仅在单选模式下有效\n */\n changeOnSelect: PropTypes.bool,\n /**\n * 是否只能勾选叶子项的checkbox,该属性仅在多选模式下有效\n */\n canOnlyCheckLeaf: PropTypes.bool,\n /**\n * 父子节点是否选中不关联\n */\n checkStrictly: PropTypes.bool,\n /**\n * 每列列表样式对象\n */\n listStyle: PropTypes.object,\n /**\n * 每列列表类名\n */\n listClassName: PropTypes.string,\n /**\n * 选择框单选时展示结果的自定义渲染函数\n * @param {Array} label 选中路径的文本数组\n * @return {ReactNode} 渲染在选择框中的内容\n * @default 单选时:labelPath => labelPath.join(' / ');多选时:labelPath => labelPath[labelPath.length - 1]\n */\n displayRender: PropTypes.func,\n /**\n * 渲染 item 内容的方法\n * @param {Object} item 渲染节点的item\n * @return {ReactNode} item node\n */\n itemRender: PropTypes.func,\n /**\n * 是否显示搜索框\n */\n showSearch: PropTypes.bool,\n /**\n * 自定义搜索函数\n * @param {String} searchValue 搜索的关键字\n * @param {Array} path 节点路径\n * @return {Boolean} 是否匹配\n * @default 根据路径所有节点的文本值模糊匹配\n */\n filter: PropTypes.func,\n /**\n * 搜索结果自定义渲染函数\n * @param {String} searchValue 搜索的关键字\n * @param {Array} path 匹配到的节点路径\n * @return {ReactNode} 渲染的内容\n * @default 按照节点文本 a / b / c 的模式渲染\n */\n resultRender: PropTypes.func,\n /**\n * 搜索结果列表是否和选择框等宽\n */\n resultAutoWidth: PropTypes.bool,\n /**\n * 无数据时显示内容\n */\n notFoundContent: PropTypes.node,\n /**\n * 异步加载数据函数\n * @param {Object} data 当前点击异步加载的数据\n */\n loadData: PropTypes.func,\n /**\n * 自定义下拉框头部\n */\n header: PropTypes.node,\n /**\n * 自定义下拉框底部\n */\n footer: PropTypes.node,\n /**\n * 初始下拉框是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 当前下拉框是否显示\n */\n visible: PropTypes.bool,\n /**\n * 下拉框显示或关闭时触发事件的回调函数\n * @param {Boolean} visible 是否显示\n * @param {String} type 触发显示关闭的操作类型, fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 下拉框自定义样式对象\n */\n popupStyle: PropTypes.object,\n /**\n * 下拉框样式自定义类名\n */\n popupClassName: PropTypes.string,\n /**\n * 下拉框挂载的容器节点\n */\n popupContainer: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * 透传到 Popup 的属性对象\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n size: 'medium',\n disabled: false,\n hasArrow: true,\n hasBorder: true,\n hasClear: false,\n dataSource: [],\n defaultValue: null,\n expandTriggerType: 'click',\n onExpand: () => {},\n useVirtual: false,\n multiple: false,\n changeOnSelect: false,\n canOnlyCheckLeaf: false,\n checkStrictly: false,\n showSearch: false,\n filter: (searchValue, path) => {\n return path.some(item => item.label.indexOf(searchValue) > -1);\n },\n resultRender: (searchValue, path) => {\n const parts = [];\n path.forEach((item, i) => {\n const others = item.label.split(searchValue);\n others.forEach((other, j) => {\n if (other) {\n parts.push(other);\n }\n if (j < others.length - 1) {\n parts.push(<em key={`${i}-${j}`}>{searchValue}</em>);\n }\n });\n if (i < path.length - 1) {\n parts.push(' / ');\n }\n });\n return <span>{parts}</span>;\n },\n resultAutoWidth: true,\n notFoundContent: 'Not Found',\n defaultVisible: false,\n onVisibleChange: () => {},\n popupProps: {},\n };\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n value: this.normalizeValue('value' in props ? props.value : props.defaultValue),\n searchValue: '',\n visible: typeof props.visible === 'undefined' ? props.defaultVisible : props.visible,\n };\n\n bindCtx(this, [\n 'handleVisibleChange',\n 'handleAfterOpen',\n 'handleChange',\n 'handleClear',\n 'handleRemove',\n 'handleSearch',\n 'getPopup',\n 'saveSelectRef',\n 'saveCascaderRef',\n 'handleKeyDown',\n ]);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const st = {};\n\n if ('value' in nextProps) {\n st.value = this.normalizeValue(nextProps.value);\n }\n if ('visible' in nextProps) {\n st.visible = nextProps.visible;\n }\n\n if (Object.keys(st).length) {\n this.setState(st);\n }\n }\n\n normalizeValue(value) {\n if (value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n return [value];\n }\n\n return [];\n }\n\n updateCache(dataSource) {\n this._v2n = {};\n this._p2n = {};\n const loop = (data, prefix = '0') => data.forEach((item, index) => {\n const { value, children } = item;\n const pos = `${prefix}-${index}`;\n this._v2n[value] = this._p2n[pos] = { ...item, pos };\n\n if (children && children.length) {\n loop(children, pos);\n }\n });\n\n loop(dataSource);\n }\n\n flatValue(value) {\n const getDepth = v => {\n const pos = this.getPos(v);\n if (!pos) {\n return 0;\n }\n return pos.split('-').length;\n };\n const newValue = value.slice(0).sort((prev, next) => {\n return getDepth(prev) - getDepth(next);\n });\n\n for (let i = 0; i < newValue.length; i++) {\n for (let j = 0; j < newValue.length; j++) {\n if (\n i !== j &&\n this.isDescendantOrSelf(this.getPos(newValue[i]), this.getPos(newValue[j]))\n ) {\n newValue.splice(j, 1);\n j--;\n }\n }\n }\n\n return newValue;\n }\n\n isDescendantOrSelf(currentPos, targetPos) {\n if (!currentPos || !targetPos) {\n return false;\n }\n\n const currentNums = currentPos.split('-');\n const targetNums = targetPos.split('-');\n\n return (\n currentNums.length <= targetNums.length &&\n currentNums.every((num, index) => {\n return num === targetNums[index];\n })\n );\n }\n\n getValue(pos) {\n return this._p2n[pos] ? this._p2n[pos].value : null;\n }\n\n getPos(value) {\n return this._v2n[value] ? this._v2n[value].pos : null;\n }\n\n getData(value) {\n return value.map(v => this._v2n[v]);\n }\n\n getLabelPath(data) {\n const nums = data.pos.split('-');\n return nums.slice(1).reduce((ret, num, index) => {\n const p = nums.slice(0, index + 2).join('-');\n ret.push(this._p2n[p].label);\n return ret;\n }, []);\n }\n\n getSignleData(value) {\n if (!value.length) {\n return null;\n }\n\n if (Array.isArray(value)) value = value[0];\n\n const data = this._v2n[value];\n if (!data) {\n return {\n value,\n };\n }\n\n const labelPath = this.getLabelPath(data);\n const displayRender = this.props.displayRender || (labels => labels.join(' / '));\n\n return {\n ...data,\n label: displayRender(labelPath, data),\n };\n }\n\n getMultipleData(value) {\n if (!value.length) {\n return null;\n }\n\n const { checkStrictly, canOnlyCheckLeaf, displayRender } = this.props;\n let data = (checkStrictly || canOnlyCheckLeaf ? value : this.flatValue(value)).map(\n v => this._v2n[v] || { value: v },\n );\n\n if (displayRender) {\n data = data.map(item => {\n if (!item.pos) {\n return item;\n }\n const labelPath = this.getLabelPath(item);\n\n return {\n ...item,\n label: displayRender(labelPath, item),\n };\n });\n }\n\n return data;\n }\n\n getIndeterminate(value) {\n const indeterminate = [];\n\n const positions = value.map(this.getPos.bind(this));\n positions.forEach(pos => {\n if (!pos) {\n return false;\n }\n const nums = pos.split('-');\n for (let i = nums.length; i > 2; i--) {\n const parentPos = nums.slice(0, i - 1).join('-');\n const parentValue = this.getValue(parentPos);\n if (indeterminate.indexOf(parentValue) === -1) {\n indeterminate.push(parentValue);\n }\n }\n });\n\n return indeterminate;\n }\n\n saveSelectRef(ref) {\n this.select = ref;\n }\n\n saveCascaderRef(ref) {\n this.cascader = ref;\n }\n\n completeValue(value) {\n const newValue = [];\n\n const flatValue = this.flatValue(value).reverse();\n const ps = Object.keys(this._p2n);\n for (let i = 0; i < ps.length; i++) {\n for (let j = 0; j < flatValue.length; j++) {\n const v = flatValue[j];\n if (this.isDescendantOrSelf(this.getPos(v), ps[i])) {\n newValue.push(this.getValue(ps[i]));\n ps.splice(i, 1);\n i--;\n break;\n }\n }\n }\n\n return newValue;\n }\n\n isLeaf(data) {\n return !((data.children && data.children.length) || (!!this.props.loadData && !data.isLeaf));\n }\n\n handleVisibleChange(visible, type) {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n\n if (['fromCascader', 'keyboard'].indexOf(type) !== -1 && !visible) {\n this.select.focusInput();\n }\n\n this.props.onVisibleChange(visible, type);\n }\n\n handleKeyDown(e) {\n const { onKeyDown } = this.props;\n const { visible } = this.state;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!visible) {\n return;\n }\n\n switch (e.keyCode) {\n case KEYCODE.UP:\n case KEYCODE.DOWN:\n this.cascader.setFocusValue();\n e.preventDefault();\n break;\n default:\n break;\n }\n }\n\n getPopup(ref) {\n this.popup = ref;\n if (typeof this.props.popupProps.ref === 'function') {\n this.props.popupProps.ref(ref);\n }\n }\n\n handleAfterOpen() {\n if (!this.popup) {\n return;\n }\n\n const { prefix, popupProps } = this.props;\n const dropDownNode = this.popup\n .getInstance()\n .overlay.getInstance()\n .getContentNode();\n const cascaderNode = dropDownNode.querySelector(`.${prefix}cascader`);\n if (cascaderNode) {\n this.cascaderHeight = getStyle(cascaderNode, 'height');\n }\n\n if (typeof popupProps.afterOpen === 'function') {\n popupProps.afterOpen();\n }\n }\n\n handleChange(value, data, extra) {\n const { multiple, changeOnSelect, onChange } = this.props;\n const { visible, searchValue } = this.state;\n\n const st = {};\n if (!multiple && (!changeOnSelect || this.isLeaf(data) || !!searchValue)) {\n this.handleVisibleChange(!visible, 'fromCascader');\n }\n if (!('value' in this.props)) {\n st.value = value;\n }\n if (!multiple && searchValue) {\n st.searchValue = '';\n }\n if (Object.keys(st).length) {\n this.setState(st);\n }\n\n if (onChange) {\n onChange(value, data, extra);\n }\n\n if (searchValue && this.select) {\n this.select.handleSearchClear();\n }\n }\n\n handleClear() {\n // 单选时点击清空按钮\n const { hasClear, multiple, treeCheckable } = this.props;\n if (hasClear && (!multiple || !treeCheckable)) {\n if (!('value' in this.props)) {\n this.setState({\n value: [],\n });\n }\n\n this.props.onChange(null, null);\n }\n }\n\n handleRemove(currentData) {\n const { value: currentValue } = currentData;\n let value;\n\n const { multiple, checkStrictly, onChange } = this.props;\n if (multiple) {\n value = [...this.state.value];\n value.splice(value.indexOf(currentValue), 1);\n\n if (this.props.onChange) {\n const data = this.getData(value);\n const checked = false;\n\n if (checkStrictly) {\n this.props.onChange(value, data, {\n checked,\n currentData,\n checkedData: data,\n });\n } else {\n const checkedValue = this.completeValue(value);\n const checkedData = this.getData(checkedValue);\n const indeterminateValue = this.getIndeterminate(value);\n const indeterminateData = this.getData(indeterminateValue);\n this.props.onChange(value, data, {\n checked,\n currentData,\n checkedData,\n indeterminateData,\n });\n }\n }\n } else {\n value = [];\n onChange(null, null);\n }\n\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n }\n\n handleSearch(searchValue) {\n this.setState({\n searchValue,\n });\n }\n\n getPath(pos) {\n const items = [];\n\n const nums = pos.split('-');\n if (nums === 2) {\n items.push(this._p2n[pos]);\n } else {\n for (let i = 1; i < nums.length; i++) {\n const p = nums.slice(0, i + 1).join('-');\n items.push(this._p2n[p]);\n }\n }\n\n return items;\n }\n\n filterItems() {\n const { multiple, changeOnSelect, canOnlyCheckLeaf, filter } = this.props;\n const { searchValue } = this.state;\n let items = Object.keys(this._p2n).map(p => this._p2n[p]);\n if ((!multiple && !changeOnSelect) || (multiple && canOnlyCheckLeaf)) {\n items = items.filter(item => !item.children || !item.children.length);\n }\n\n return items.map(item => this.getPath(item.pos)).filter(path => filter(searchValue, path));\n }\n\n renderNotFound() {\n const { prefix, notFoundContent } = this.props;\n\n return (\n <Menu className={`${prefix}cascader-select-not-found`}>\n <Menu.Item>{notFoundContent}</Menu.Item>\n </Menu>\n );\n }\n\n renderCascader() {\n const { dataSource } = this.props;\n if (dataSource.length === 0) {\n return this.renderNotFound();\n }\n\n const { searchValue } = this.state;\n let filteredPaths = [];\n if (searchValue) {\n filteredPaths = this.filterItems();\n if (filteredPaths.length === 0) {\n return this.renderNotFound();\n }\n }\n\n const {\n multiple,\n useVirtual,\n changeOnSelect,\n checkStrictly,\n canOnlyCheckLeaf,\n defaultExpandedValue,\n expandTriggerType,\n onExpand,\n listStyle,\n listClassName,\n loadData,\n showSearch,\n resultRender,\n readOnly,\n itemRender,\n } = this.props;\n const { value } = this.state;\n\n const props = {\n dataSource,\n value,\n multiple,\n useVirtual,\n canOnlySelectLeaf: !changeOnSelect,\n checkStrictly,\n canOnlyCheckLeaf,\n defaultExpandedValue,\n expandTriggerType,\n ref: this.saveCascaderRef,\n onExpand,\n listStyle,\n listClassName,\n loadData,\n itemRender,\n };\n if (!readOnly) {\n props.onChange = this.handleChange;\n }\n if (showSearch) {\n props.searchValue = searchValue;\n props.filteredPaths = filteredPaths;\n props.resultRender = resultRender;\n props.filteredListStyle = { height: this.cascaderHeight };\n }\n\n return <Cascader {...props} />;\n }\n\n renderPopupContent() {\n const { prefix, header, footer } = this.props;\n return (\n <div className={`${prefix}cascader-select-dropdown`}>\n {header}\n {this.renderCascader()}\n {footer}\n </div>\n );\n }\n\n render() {\n const {\n prefix,\n size,\n hasArrow,\n hasBorder,\n hasClear,\n label,\n readOnly,\n placeholder,\n dataSource,\n disabled,\n multiple,\n className,\n showSearch,\n popupStyle,\n popupClassName,\n popupContainer,\n popupProps,\n followTrigger,\n } = this.props;\n const { value, searchValue, visible } = this.state;\n const others = pickOthers(Object.keys(CascaderSelect.propTypes), this.props);\n const popupContent = this.renderPopupContent();\n\n this.updateCache(dataSource);\n\n const props = {\n prefix,\n className,\n size,\n placeholder,\n disabled,\n hasArrow,\n hasBorder,\n hasClear,\n label,\n readOnly,\n ref: this.saveSelectRef,\n autoWidth: false,\n mode: multiple ? 'multiple' : 'single',\n value: multiple ? this.getMultipleData(value) : this.getSignleData(value),\n onChange: this.handleClear,\n onRemove: this.handleRemove,\n visible,\n onVisibleChange: this.handleVisibleChange,\n showSearch,\n // searchValue,\n onSearch: this.handleSearch,\n onKeyDown: this.handleKeyDown,\n popupContent,\n popupStyle,\n popupClassName,\n popupContainer,\n popupProps,\n followTrigger,\n };\n\n if (showSearch) {\n props.popupProps = {\n ...popupProps,\n ref: this.getPopup,\n afterOpen: this.handleAfterOpen,\n };\n props.autoWidth = showSearch && !!searchValue;\n }\n\n return <Select {...props} {...others} />;\n }\n}\n","import ConfigProvider from '../config-provider';\nimport CascaderSelect from './cascader-select';\n\nexport default ConfigProvider.config(CascaderSelect, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('shape' in props) {\n deprecated('shape', 'hasBorder', 'CascaderSelect');\n const { shape, ...others } = props;\n props = { hasBorder: shape !== 'arrow-only', ...others };\n }\n\n if ('container' in props) {\n deprecated('container', 'popupContainer', 'CascaderSelect');\n const { container, ...others } = props;\n props = { popupContainer: container, ...others };\n }\n\n if ('expandTrigger' in props) {\n deprecated('expandTrigger', 'expandTriggerType', 'CascaderSelect');\n const { expandTrigger, ...others } = props;\n props = { expandTriggerType: expandTrigger, ...others };\n }\n\n if ('showItemCount' in props) {\n deprecated('showItemCount', 'listStyle | listClassName', 'CascaderSelect');\n }\n if ('labelWidth' in props) {\n deprecated('labelWidth', 'listStyle | listClassName', 'CascaderSelect');\n }\n\n return props;\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport Icon from '../icon';\nimport { func, KEYCODE } from '../util';\n\n/** Collapse.Panel */\nclass Panel extends React.Component {\n static propTypes = {\n /**\n * 样式类名的品牌前缀\n */\n prefix: PropTypes.string,\n /**\n * 子组件接受行内样式\n */\n style: PropTypes.object,\n children: PropTypes.any,\n isExpanded: PropTypes.bool,\n /**\n * 是否禁止用户操作\n */\n disabled: PropTypes.bool,\n /**\n * 标题\n */\n title: PropTypes.node,\n /**\n * 标题前的icon\n */\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * 扩展class\n */\n className: PropTypes.string,\n onClick: PropTypes.func,\n id: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n isExpanded: false,\n onClick: func.noop,\n };\n\n static isNextPanel = true; //\n\n onKeyDown = e => {\n const { keyCode } = e;\n if (keyCode === KEYCODE.SPACE) {\n const { onClick } = this.props;\n e.preventDefault();\n onClick && onClick(e);\n }\n };\n\n renderTitleIcon = () => {\n const { prefix, icon } = this.props;\n if (icon) {\n if (typeof icon === 'string') {\n return <span className={`${prefix}collapse-panel-title-icon`}><Icon type={icon} /></span>;\n } else {\n return <span className={`${prefix}collapse-panel-title-icon`}>{icon}</span>;\n }\n }\n return null;\n }\n\n render() {\n const {\n title,\n icon,\n children,\n className,\n isExpanded,\n disabled,\n style,\n prefix,\n onClick,\n id,\n ...others\n } = this.props;\n\n const cls = classNames({\n [`${prefix}collapse-panel`]: true,\n [`${prefix}collapse-panel-expanded`]: isExpanded,\n [`${prefix}collapse-panel-disabled`]: disabled,\n [className]: className,\n });\n\n const iconCls = classNames({\n [`${prefix}collapse-panel-icon`]: true,\n [`${prefix}collapse-panel-icon-expanded`]: isExpanded,\n });\n\n // 为了无障碍 需要添加两个id\n const headingId = id ? `${id}-heading` : undefined;\n const regionId = id ? `${id}-region` : undefined;\n return (\n <div className={cls} style={style} id={id} {...others}>\n <div\n id={headingId}\n className={`${prefix}collapse-panel-title`}\n onClick={onClick}\n onKeyDown={this.onKeyDown}\n tabIndex=\"0\"\n aria-disabled={disabled}\n aria-expanded={isExpanded}\n aria-controls={regionId}\n role=\"button\"\n >\n <Icon type=\"triangle-up-s\" className={iconCls} aria-hidden=\"true\" />\n {this.renderTitleIcon()}\n <span className={`${prefix}collapse-panel-title-text`}>{title}</span>\n </div>\n <div className={`${prefix}collapse-panel-content`} role=\"region\" id={regionId}>\n {children}\n </div>\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(Panel);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { func, obj } from '../util';\nimport Panel from './panel';\n\n/** Collapse */\nclass Collapse extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n /**\n * 组件接受行内样式\n */\n style: PropTypes.object,\n /**\n * 使用数据模型构建\n */\n dataSource: PropTypes.array,\n /**\n * 默认展开keys\n */\n defaultExpandedKeys: PropTypes.array,\n /**\n * 受控展开keys\n */\n expandedKeys: PropTypes.array,\n /**\n * 展开状态发升变化时候的回调\n */\n onExpand: PropTypes.func,\n /**\n * 所有禁用\n */\n disabled: PropTypes.bool,\n /**\n * 扩展class\n */\n className: PropTypes.string,\n /**\n * 手风琴模式,一次只能打开一个\n */\n accordion: PropTypes.bool,\n children: PropTypes.node,\n id: PropTypes.string,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n accordion: false,\n prefix: 'next-',\n onExpand: func.noop,\n };\n\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n\n let expandedKeys;\n if ('expandedKeys' in props) {\n expandedKeys = props.expandedKeys;\n } else {\n expandedKeys = props.defaultExpandedKeys;\n }\n\n this.state = {\n expandedKeys: typeof expandedKeys === 'undefined' ? [] : expandedKeys,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('expandedKeys' in nextProps) {\n this.setState({\n expandedKeys: typeof nextProps.expandedKeys === 'undefined' ? [] : nextProps.expandedKeys,\n });\n }\n }\n\n onItemClick(key) {\n let { expandedKeys } = this.state;\n if (this.props.accordion) {\n expandedKeys = expandedKeys[0] === key ? [] : [key];\n } else {\n expandedKeys = [...expandedKeys];\n const index = expandedKeys.indexOf(key);\n const isExpanded = index > -1;\n if (isExpanded) {\n expandedKeys.splice(index, 1);\n } else {\n expandedKeys.push(key);\n }\n }\n this.setExpandedKey(expandedKeys);\n }\n\n genratePanelId(itemId, index) {\n const { id: collapseId } = this.props;\n let id;\n if (itemId) {\n // 优先用 item自带的id\n id = itemId;\n } else if (collapseId) {\n // 其次用 collapseId 和 index 生成id\n id = `${collapseId}-panel-${index}`;\n }\n return id;\n }\n\n getProps(item, index, key) {\n const { expandedKeys } = this.state;\n const { title } = item;\n let { disabled } = this.props;\n\n if (!disabled) {\n disabled = item.disabled;\n }\n\n let isExpanded = false;\n\n if (this.props.accordion) {\n isExpanded = expandedKeys[0] === key;\n } else {\n isExpanded = expandedKeys.some(expandedKey => {\n if (\n expandedKey === null ||\n expandedKey === undefined ||\n key === null ||\n key === undefined\n ) {\n return false;\n }\n\n if (expandedKey === key || expandedKey.toString() === key.toString()) {\n return true;\n }\n return false;\n });\n }\n\n const id = this.genratePanelId(item.id, index);\n return {\n key,\n title,\n isExpanded,\n disabled,\n id,\n onClick: disabled\n ? null\n : () => {\n this.onItemClick(key);\n if ('onClick' in item) {\n item.onClick(key);\n }\n },\n };\n }\n\n getItemsByDataSource() {\n const { props } = this;\n const { dataSource } = props;\n // 是否有dataSource.item传入过key\n const hasKeys = dataSource.some(item => 'key' in item);\n\n return dataSource.map((item, index) => {\n // 传入过key就用item.key 没传入则统一使用index为key\n const key = hasKeys ? item.key : `${index}`;\n return (\n <Panel {...this.getProps(item, index, key)} key={key}>\n {item.content}\n </Panel>\n );\n });\n }\n\n getItemsByChildren() {\n // 是否有child传入过key\n const allKeys = React.Children.map(this.props.children, child => child.key);\n const hasKeys = Boolean(allKeys.length);\n\n return React.Children.map(this.props.children, (child, index) => {\n if (child && typeof child.type === 'function' && child.type.isNextPanel) {\n // 传入过key就用child.key 没传入则统一使用index为key\n const key = hasKeys ? child.key : `${index}`;\n return React.cloneElement(child, this.getProps(child.props, index, key));\n } else {\n return child;\n }\n });\n }\n\n setExpandedKey(expandedKeys) {\n if (!('expandedKeys' in this.props)) {\n this.setState({ expandedKeys });\n }\n this.props.onExpand(this.props.accordion ? expandedKeys[0] : expandedKeys);\n }\n\n render() {\n const { prefix, className, style, disabled, dataSource, id, rtl } = this.props;\n const collapseClassName = classNames({\n [`${prefix}collapse`]: true,\n [`${prefix}collapse-disabled`]: disabled,\n [className]: Boolean(className),\n });\n\n const others = obj.pickOthers(Collapse.propTypes, this.props);\n return (\n <div\n id={id}\n className={collapseClassName}\n style={style}\n {...others}\n role=\"presentation\"\n dir={rtl ? 'rtl' : undefined}\n >\n {dataSource ? this.getItemsByDataSource() : this.getItemsByChildren()}\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(Collapse);\n","import Collapse from './collapse';\nimport Panel from './panel';\n\nCollapse.Panel = Panel;\n\nexport default Collapse;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\n\nclass Cover extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n img: PropTypes.string.isRequired,\n title: PropTypes.node.isRequired,\n extra: PropTypes.node,\n description: PropTypes.node,\n tag: PropTypes.string,\n link: PropTypes.string.isRequired,\n target: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n }\n\n static defaultProps = {\n prefix: 'next-',\n target: '_self',\n onMouseEnter: () => {},\n onMouseLeave: () => {},\n }\n\n render() {\n const {\n prefix,\n className,\n img,\n title,\n extra,\n description,\n tag,\n link,\n target,\n onMouseEnter,\n onMouseLeave,\n ...others\n } = this.props;\n return (\n <a\n href={link}\n target={target}\n className={`${prefix}cover`}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n {...obj.pickAttrs(others)}\n style={{\n ...(others.style ? others.style : {}),\n backgroundImage: `url(${img})`,\n }}\n >\n <div className={`${prefix}cover-inner`}>\n <div className={`${prefix}cover-header`}>\n <div className={`${prefix}cover-header-title`}>{title}</div>\n {\n extra ?\n <div className={`${prefix}cover-header-extra`}>\n {extra}\n </div> : null\n }\n </div>\n {\n description ?\n <div className={`${prefix}cover-description`}>{description}</div> : null\n }\n {\n tag ?\n <div className={`${prefix}cover-tag`}>{tag}</div> : null\n }\n </div>\n </a>\n );\n }\n}\n\nconst Configured = ConfigProvider.config(Cover);\nConfigured.displayName = 'Cover';\n\nexport default Configured;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\n\nclass Img extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n src: PropTypes.string.isRequired,\n size: PropTypes.oneOf(['xs', 'small', 'medium', 'large', 'xl']),\n }\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n }\n\n render() {\n const { prefix, className, src, size, ...others } = this.props;\n const classNames = cls({\n [`${prefix}cover-img`]: true,\n [`${prefix}cover-img-${size}`]: true,\n [className]: !!className,\n });\n return (\n <div className={classNames} {...obj.pickAttrs(others)}>\n <img src={src} />\n </div>\n );\n }\n}\n\nconst Configured = ConfigProvider.config(Img);\nConfigured.displayName = 'Img';\n\nexport default Configured;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\n\nclass Text extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n text: PropTypes.string.isRequired,\n size: PropTypes.oneOf(['xxs', 'xs', 'small', 'medium', 'large', 'xl', 'xxl']),\n colorSets: PropTypes.arrayOf(PropTypes.string),\n }\n\n static defaultProps = {\n prefix: 'next-',\n style: {},\n size: 'medium',\n colorSets: ['#BC61CF', '#F26666', '#F29A52', '#F4C329', '#CBD057', '#289ED3', '#29B3F0'],\n }\n\n getBgColor = () => {\n const { text, colorSets } = this.props;\n if (typeof text !== 'string' || colorSets.length === 0 || colorSets.length === 1) {\n return '#289ED3';\n }\n const charCode = text.charCodeAt(0);\n const len = colorSets.length;\n const index = charCode % len;\n return colorSets[index];\n }\n\n render() {\n const { prefix, className, text, size, style, ...others } = this.props;\n const classNames = cls({\n [`${prefix}cover-text`]: true,\n [`${prefix}cover-text-${size}`]: true,\n [className]: !!className,\n });\n return (\n <div\n className={classNames}\n style={{ background: this.getBgColor(), ...style }}\n {...obj.pickAttrs(others)}\n >\n {text.slice(0, 1)}\n </div>\n );\n }\n}\n\nconst Configured = ConfigProvider.config(Text);\nConfigured.displayName = 'Text';\n\nexport default Configured;\n","import Cover from './cover';\nimport Img from './img';\nimport Text from './text';\n\nCover.Img = Img;\nCover.Text = Text;\n\nexport default Cover;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nfunction scrollTo(element, to, duration) {\n const requestAnimationFrame =\n window.requestAnimationFrame ||\n function requestAnimationFrameTimeout(...params) {\n return setTimeout(params[0], 10);\n };\n\n if (duration <= 0) {\n element.scrollTop = to;\n return;\n }\n\n const difference = to - element.scrollTop;\n const perTick = (difference / duration) * 10;\n\n requestAnimationFrame(() => {\n element.scrollTop = element.scrollTop + perTick;\n\n if (element.scrollTop === to) {\n return;\n }\n\n scrollTo(element, to, duration - 10);\n });\n}\n\nconst noop = () => {};\n\nclass TimeMenu extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n title: PropTypes.node,\n mode: PropTypes.oneOf(['hour', 'minute', 'second']),\n step: PropTypes.number,\n activeIndex: PropTypes.number,\n disabledItems: PropTypes.func,\n onSelect: PropTypes.func,\n disabled: PropTypes.bool,\n };\n\n static defaultProps = {\n step: 1,\n disabledItems: () => false,\n onSelect: () => {},\n disabled: false,\n };\n\n componentDidMount() {\n this.scrollToSelected(0);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.activeIndex !== this.props.activeIndex) {\n this.scrollToSelected(120);\n }\n }\n\n scrollToSelected(duration = 0) {\n const { activeIndex, step } = this.props;\n const targetIndex = Math.floor((activeIndex || 0) / step);\n const firstItem = this.menu.children[targetIndex];\n const offsetTo = firstItem.offsetTop;\n scrollTo(this.menu, offsetTo, duration);\n }\n\n _menuRefHandler = ref => {\n this.menu = ref;\n };\n\n render() {\n const {\n prefix,\n title,\n mode,\n activeIndex,\n step,\n disabled,\n disabledItems,\n onSelect,\n } = this.props;\n const total = mode === 'hour' ? 24 : 60;\n const list = [];\n for (let i = 0; i < total; i++) {\n if (i % step === 0) {\n const isDisabled = disabled || disabledItems(i);\n const itemCls = classnames({\n [`${prefix}time-picker-menu-item`]: true,\n [`${prefix}disabled`]: isDisabled,\n [`${prefix}selected`]: i === activeIndex,\n });\n const onClick = isDisabled ? noop : () => onSelect(i, mode);\n list.push(\n <li\n role=\"option\"\n aria-selected={String(i === activeIndex)}\n key={i}\n title={i}\n className={itemCls}\n onClick={onClick}\n >\n {i}\n </li>,\n );\n }\n }\n\n const menuTitle = title ? (\n <div className={`${prefix}time-picker-menu-title`}>{title}</div>\n ) : null;\n\n return (\n <div className={`${prefix}time-picker-menu`}>\n {menuTitle}\n <ul\n role=\"listbox\"\n className={`${prefix}time-picker-menu-${mode}`}\n ref={this._menuRefHandler}\n >\n {list}\n </ul>\n </div>\n );\n }\n}\n\nexport default TimeMenu;\n","import moment from 'moment';\n\n// 检查传入值是否为 moment 对象\nexport function checkMomentObj(props, propName, componentName) {\n if (props[propName] && !moment.isMoment(props[propName])) {\n return new Error(\n `Invalid prop ${propName} supplied to ${componentName}. Required a moment object`,\n );\n }\n}\n\n// 检查传入值是否为 moment 对象或时间字符串,字符串不检测是否为日期字符串\nexport function checkDateValue(props, propName, componentName) {\n if (props[propName] && !moment.isMoment(props[propName]) && typeof props[propName] !== 'string') {\n return new Error(\n `Invalid prop ${propName} supplied to ${componentName}. Required a moment object or format date string!`,\n );\n }\n}\n\nexport function formatDateValue(value, format) {\n const val = typeof value === 'string' ? moment(value, format, true) : value;\n if (val && moment.isMoment(val) && val.isValid()) {\n return val;\n }\n return null;\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport nextLocale from '../locale/zh-cn';\nimport { func } from '../util';\nimport TimeMenu from './module/time-menu';\nimport { checkMomentObj } from './utils';\n\nconst { noop } = func;\n\nclass TimePickerPanel extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 时间值(moment 对象)\n */\n value: checkMomentObj,\n /**\n * 是否显示小时\n */\n showHour: PropTypes.bool,\n /**\n * 是否显示秒\n */\n showSecond: PropTypes.bool,\n /**\n * 小时选项步长\n */\n hourStep: PropTypes.number,\n /**\n * 分钟选项步长\n */\n minuteStep: PropTypes.number,\n /**\n * 秒钟选项步长\n */\n secondStep: PropTypes.number,\n /**\n * 禁用小时函数\n * @param {Number} index 时 0 - 23\n * @return {Boolean} 是否禁用\n */\n disabledHours: PropTypes.func,\n /**\n * 禁用分钟函数\n * @param {Number} index 分 0 - 59\n * @return {Boolean} 是否禁用\n */\n disabledMinutes: PropTypes.func,\n /**\n * 禁用秒函数\n * @param {Number} index 秒 0 - 59\n * @return {Boolean} 是否禁用\n */\n disabledSeconds: PropTypes.func,\n /**\n * 选择某个日期值时的回调\n * @param {Object} 选中后的日期值\n */\n onSelect: PropTypes.func,\n locale: PropTypes.object,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n showHour: true,\n showSecond: true,\n disabledHours: noop,\n disabledMinutes: noop,\n disabledSeconds: noop,\n onSelect: noop,\n disabled: false,\n locale: nextLocale.TimePicker,\n };\n\n onSelectMenuItem = (index, type) => {\n const { value } = this.props;\n const clonedValue = value ? value.clone() : moment('00:00:00', 'HH:mm:ss', true);\n switch (type) {\n case 'hour':\n clonedValue.hour(index);\n break;\n case 'minute':\n clonedValue.minute(index);\n break;\n case 'second':\n clonedValue.second(index);\n break;\n }\n this.props.onSelect(clonedValue);\n };\n\n render() {\n const {\n prefix,\n value,\n locale,\n className,\n disabled,\n showHour,\n showSecond,\n hourStep,\n minuteStep,\n secondStep,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n ...others\n } = this.props;\n\n const classNames = classnames(\n {\n [`${prefix}time-picker-panel`]: true,\n [`${prefix}time-picker-panel-col-3`]: showHour && showSecond,\n [`${prefix}time-picker-panel-col-2`]: !showHour || !showSecond,\n },\n className,\n );\n\n const commonProps = {\n prefix,\n disabled,\n onSelect: this.onSelectMenuItem,\n };\n\n let activeHour;\n let activeMinute;\n let activeSecond;\n\n if (value && moment.isMoment(value)) {\n activeHour = value.hour();\n activeMinute = value.minute();\n activeSecond = value.second();\n }\n\n return (\n <div {...others} className={classNames}>\n {showHour ? (\n <TimeMenu\n {...commonProps}\n activeIndex={activeHour}\n title={locale.hour}\n mode=\"hour\"\n step={hourStep}\n disabledItems={disabledHours}\n />\n ) : null}\n <TimeMenu\n {...commonProps}\n activeIndex={activeMinute}\n title={locale.minute}\n mode=\"minute\"\n step={minuteStep}\n disabledItems={disabledMinutes}\n />\n {showSecond ? (\n <TimeMenu\n {...commonProps}\n activeIndex={activeSecond}\n title={locale.second}\n step={secondStep}\n mode=\"second\"\n disabledItems={disabledSeconds}\n />\n ) : null}\n </div>\n );\n }\n}\n\nexport default TimePickerPanel;\n","import moment from 'moment';\nimport { KEYCODE } from '../../util';\n\nexport const PANEL = {\n TIME: 'time-panel',\n DATE: 'date-panel',\n};\n\nexport const DEFAULT_TIME_FORMAT = 'HH:mm:ss';\n\nexport function isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n}\n\n/**\n * 将 source 的 time 替换为 target 的 time\n * @param {Object} source 输入值\n * @param {Object} target 目标值\n */\nexport function resetValueTime(source, target) {\n if (!moment.isMoment(source) || !moment.isMoment(target)) {\n return source;\n }\n return source\n .clone()\n .hour(target.hour())\n .minute(target.minute())\n .second(target.second());\n}\n\nexport function formatDateValue(value, format) {\n const val = typeof value === 'string' ? moment(value, format, false) : value;\n if (val && moment.isMoment(val) && val.isValid()) {\n return val;\n }\n\n return null;\n}\n\nexport function checkDateValue(props, propName, componentName) {\n // 支持传入 moment 对象或字符串,字符串不检测是否为日期字符串\n if (props[propName] && !moment.isMoment(props[propName]) && typeof props[propName] !== 'string') {\n return new Error(\n `Invalid prop ${propName} supplied to ${componentName}. Required a moment object or format date string!`,\n );\n }\n}\n\nexport function getDateTimeFormat(format, showTime) {\n const timeFormat = showTime ? showTime.format || DEFAULT_TIME_FORMAT : '';\n const dateTimeFormat = timeFormat ? `${format} ${timeFormat}` : format;\n return {\n format,\n timeFormat,\n dateTimeFormat,\n };\n}\n\nexport function extend(source, target) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n return target;\n}\n\n/**\n * 监听键盘事件,操作日期字符串\n * @param {KeyboardEvent} e 事件对象\n * @param {Object} param1\n * @param {String} type 类型 year month day\n */\nexport function onDateKeydown(e, { format, dateInputStr, value }, type) {\n if ([KEYCODE.UP, KEYCODE.DOWN, KEYCODE.PAGE_UP, KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1) {\n return;\n }\n\n if (\n (e.altKey && [KEYCODE.PAGE_UP, KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1) ||\n e.controlKey ||\n e.shiftKey\n ) {\n return;\n }\n\n let date = moment(dateInputStr, format, true);\n\n if (date.isValid()) {\n const stepUnit = e.altKey ? 'year' : 'month';\n switch (e.keyCode) {\n case KEYCODE.UP:\n date.subtract(1, type);\n break;\n case KEYCODE.DOWN:\n date.add(1, type);\n break;\n case KEYCODE.PAGE_UP:\n date.subtract(1, stepUnit);\n break;\n case KEYCODE.PAGE_DOWN:\n date.add(1, stepUnit);\n break;\n }\n } else if (value) {\n date = value.clone();\n } else {\n date = moment();\n }\n\n e.preventDefault();\n return date.format(format);\n}\n\n/**\n * 监听键盘事件,操作时间\n * @param {KeyboardEvent} e\n * @param {Object} param1\n * @param {String} type second hour minute\n */\nexport function onTimeKeydown(e, { format, timeInputStr, steps, value }, type) {\n if ([KEYCODE.UP, KEYCODE.DOWN, KEYCODE.PAGE_UP, KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1)\n return;\n if (\n (e.altKey && [KEYCODE.PAGE_UP, KEYCODE.PAGE_DOWN].indexOf(e.keyCode) === -1) ||\n e.controlKey ||\n e.shiftKey\n )\n return;\n\n let time = moment(timeInputStr, format, true);\n\n if (time.isValid()) {\n const stepUnit = e.altKey ? 'hour' : 'minute';\n switch (e.keyCode) {\n case KEYCODE.UP:\n time.subtract(steps[type], type);\n break;\n case KEYCODE.DOWN:\n time.add(steps[type], type);\n break;\n case KEYCODE.PAGE_UP:\n time.subtract(steps[stepUnit], stepUnit);\n break;\n case KEYCODE.PAGE_DOWN:\n time.add(steps[stepUnit], stepUnit);\n break;\n }\n } else if (value) {\n time = value.clone();\n } else {\n time = moment()\n .hours(0)\n .minutes(0)\n .seconds(0);\n }\n\n e.preventDefault();\n return time.format(format);\n}\n","import React from 'react';\nimport moment from 'moment';\nimport Button from '../../button';\nimport { func } from '../../util';\nimport { PANEL } from '../util';\n\nclass PanelFooter extends React.PureComponent {\n static defaultProps = {\n // onPanelChange: func.noop,\n onOk: func.noop,\n };\n\n changePanel = () => {\n const targetPanel = {\n [PANEL.DATE]: PANEL.TIME,\n [PANEL.TIME]: PANEL.DATE,\n }[this.props.panel];\n this.props.onPanelChange(targetPanel);\n };\n\n createRanges = ranges => {\n if (!ranges || ranges.length === 0) return null;\n const { onOk, prefix } = this.props;\n\n return (\n <div className={`${prefix}date-picker-panel-tools`}>\n {ranges.map(({ label, value = [], onChange }) => {\n const handleClick = () => {\n onChange(value.map(v => moment(v)));\n onOk();\n };\n return (\n <Button key={label} text size=\"small\" type=\"primary\" onClick={handleClick}>\n {label}\n </Button>\n );\n })}\n </div>\n );\n };\n\n render() {\n const {\n prefix,\n locale,\n panel,\n value,\n ranges, // 兼容0.x range 属性\n disabledOk,\n onPanelChange,\n onOk,\n } = this.props;\n const panelBtnLabel = {\n [PANEL.DATE]: locale.selectTime,\n [PANEL.TIME]: locale.selectDate,\n }[panel];\n\n const sharedBtnProps = {\n size: 'small',\n type: 'primary',\n disabled: !value,\n };\n\n return (\n <div className={`${prefix}date-picker-panel-footer`}>\n {this.createRanges(ranges)}\n {onPanelChange ? (\n <Button {...sharedBtnProps} text onClick={this.changePanel}>\n {panelBtnLabel}\n </Button>\n ) : null}\n <Button {...sharedBtnProps} disabled={disabledOk || !value} onClick={onOk}>\n {locale.ok}\n </Button>\n </div>\n );\n }\n}\n\nexport default PanelFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport Overlay from '../overlay';\nimport Input from '../input';\nimport Calendar from '../calendar';\nimport TimePickerPanel from '../time-picker/panel';\nimport nextLocale from '../locale/zh-cn';\nimport { func, obj } from '../util';\nimport {\n PANEL,\n resetValueTime,\n checkDateValue,\n formatDateValue,\n getDateTimeFormat,\n extend,\n onDateKeydown,\n onTimeKeydown,\n} from './util';\nimport PanelFooter from './module/panel-footer';\n\nconst { Popup } = Overlay;\n\n/**\n * DatePicker\n */\nexport default class DatePicker extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 输入框内置标签\n */\n label: PropTypes.node,\n /**\n * 输入框状态\n */\n state: PropTypes.oneOf(['success', 'loading', 'error']),\n /**\n * 输入提示\n */\n placeholder: PropTypes.string,\n /**\n * 默认展现的月\n * @return {MomentObject} 返回包含指定月份的 moment 对象实例\n */\n defaultVisibleMonth: PropTypes.func,\n onVisibleMonthChange: PropTypes.func,\n /**\n * 日期值(受控)moment 对象\n */\n value: checkDateValue,\n /**\n * 初始日期值,moment 对象\n */\n defaultValue: checkDateValue,\n /**\n * 日期值的格式(用于限定用户输入和展示)\n */\n format: PropTypes.string,\n /**\n * 是否使用时间控件,传入 TimePicker 的属性 { defaultValue, format, ... }\n */\n showTime: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n /**\n * 每次选择日期时是否重置时间(仅在 showTime 开启时有效)\n */\n resetTime: PropTypes.bool,\n /**\n * 禁用日期函数\n * @param {MomentObject} 日期值\n * @param {String} view 当前视图类型,year: 年, month: 月, date: 日\n * @return {Boolean} 是否禁用\n */\n disabledDate: PropTypes.func,\n /**\n * 自定义面板页脚\n * @return {Node} 自定义的面板页脚组件\n */\n footerRender: PropTypes.func,\n /**\n * 日期值改变时的回调\n * @param {MomentObject|String} value 日期值\n */\n onChange: PropTypes.func,\n /**\n * 点击确认按钮时的回调\n * @return {MomentObject|String} 日期值\n */\n onOk: PropTypes.func,\n /**\n * 输入框尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 是否显示清空按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 弹层显示状态\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层展示状态变化时的回调\n * @param {Boolean} visible 弹层是否显示\n * @param {String} type 触发弹层显示和隐藏的来源 calendarSelect 表示由日期表盘的选择触发; okBtnClick 表示由确认按钮触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 弹层触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层对齐方式,具体含义见 OverLay文档\n */\n popupAlign: PropTypes.string,\n /**\n * 弹层容器\n * @param {Element} target 目标元素\n * @return {Element} 弹层的容器元素\n */\n popupContainer: PropTypes.func,\n /**\n * 弹层自定义样式\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层其他属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 输入框其他属性\n */\n inputProps: PropTypes.object,\n /**\n * 是否开启行内模式\n */\n inline: PropTypes.bool,\n /**\n * 自定义触发器\n * @param {Object} value 日期值(moment对象)\n * @param {Object} state 附加状态\n * @returns {ReactNode}\n */\n triggerRender: PropTypes.func,\n /**\n * 自定义日期渲染函数\n * @param {Object} value 日期值(moment对象)\n * @returns {ReactNode}\n */\n dateCellRender: PropTypes.func,\n /**\n * 自定义月份渲染函数\n * @param {Object} calendarDate 对应 Calendar 返回的自定义日期对象\n * @returns {ReactNode}\n */\n monthCellRender: PropTypes.func,\n yearCellRender: PropTypes.func, // 兼容 0.x yearCellRender\n /**\n * 日期输入框的 aria-label 属性\n */\n dateInputAriaLabel: PropTypes.string,\n /**\n * 时间输入框的 aria-label 属性\n */\n timeInputAriaLabel: PropTypes.string,\n locale: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n format: 'YYYY/MM/DD',\n size: 'medium',\n showTime: false,\n resetTime: false,\n disabledDate: () => false,\n footerRender: () => null,\n hasClear: true,\n popupTriggerType: 'click',\n popupAlign: 'tl bl',\n locale: nextLocale.DatePicker,\n defaultVisible: false,\n onChange: func.noop,\n onVisibleChange: func.noop,\n onOk: func.noop,\n };\n\n constructor(props, context) {\n super(props, context);\n const dateTimeFormat = getDateTimeFormat(props.format, props.showTime);\n extend(dateTimeFormat, this);\n\n const value = formatDateValue(props.value || props.defaultValue, this.dateTimeFormat);\n this.inputAsString = typeof (props.value || props.defaultValue) === 'string'; // 判断用户输入是否是字符串\n this.state = {\n mode: 'date',\n value,\n dateInputStr: '',\n timeInputStr: '',\n inputing: false, // 当前是否处于输入状态\n visible: props.visible || props.defaultVisible,\n panel: PANEL.DATE,\n };\n this.popup = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('showTime' in nextProps) {\n const dateTimeFormat = getDateTimeFormat(\n nextProps.format || this.props.format,\n nextProps.showTime,\n );\n extend(dateTimeFormat, this);\n }\n\n if ('value' in nextProps) {\n const value = formatDateValue(nextProps.value, this.dateTimeFormat);\n this.setState({\n value,\n });\n this.inputAsString = typeof nextProps.value === 'string';\n }\n\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n // 获取底层的overlay实例\n getOverlay = () => {\n return this.popup && this.popup.getInstance() && this.popup.getInstance().getOverlay();\n }\n\n onModeChange = (mode) => {\n this.setState({\n mode,\n });\n }\n\n onValueChange = (newValue, handler = 'onChange') => {\n const ret = this.inputAsString && newValue ? newValue.format(this.dateTimeFormat) : newValue;\n this.props[handler](ret);\n };\n\n onSelectCalendarPanel = value => {\n const { showTime, resetTime } = this.props;\n\n const prevValue = this.state.value;\n let newValue = value;\n if (showTime) {\n if (!prevValue) {\n // 第一次选择日期值时,如果设置了默认时间,则使用该默认时间\n if (showTime.defaultValue) {\n const defaultTimeValue = formatDateValue(showTime.defaultValue, this.timeFormat);\n newValue = resetValueTime(value, defaultTimeValue);\n }\n } else if (!resetTime) {\n // 非第一选择日期,如果开启了 resetTime 属性,则记住之前选择的时间值\n newValue = resetValueTime(value, prevValue);\n }\n }\n\n this.handleChange(newValue, prevValue, { inputing: false });\n\n if (!showTime) {\n this.onVisibleChange(false, 'calendarSelect');\n }\n };\n\n onSelectTimePanel = value => {\n this.handleChange(value, this.state.value, { inputing: false });\n };\n\n clearValue = () => {\n this.setState({\n dateInputStr: '',\n timeInputStr: '',\n });\n\n this.handleChange(null, this.state.value, { inputing: false });\n };\n\n onDateInputChange = (inputStr, e, eventType) => {\n if (eventType === 'clear' || !inputStr) {\n e.stopPropagation();\n this.clearValue();\n } else {\n this.setState({\n dateInputStr: inputStr,\n inputing: 'date',\n });\n }\n };\n\n onTimeInputChange = inputStr => {\n this.setState({\n timeInputStr: inputStr,\n inputing: 'time',\n });\n };\n\n onDateInputBlur = () => {\n const { dateInputStr } = this.state;\n if (dateInputStr) {\n const { disabledDate } = this.props;\n const parsed = moment(dateInputStr, this.format, true);\n\n this.setState({\n dateInputStr: '',\n inputing: false,\n });\n\n if (parsed.isValid() && !disabledDate(parsed, 'date')) {\n this.handleChange(parsed, this.state.value);\n }\n }\n };\n\n onTimeInputBlur = () => {\n const { value, timeInputStr } = this.state;\n if (timeInputStr) {\n const parsed = moment(timeInputStr, this.timeFormat, true);\n\n this.setState({\n timeInputStr: '',\n inputing: false,\n });\n\n if (parsed.isValid()) {\n const hour = parsed.hour();\n const minute = parsed.minute();\n const second = parsed.second();\n const newValue = value\n .clone()\n .hour(hour)\n .minute(minute)\n .second(second);\n\n this.handleChange(newValue, this.state.value);\n }\n }\n };\n\n onKeyDown = e => {\n const { format } = this.props;\n const { dateInputStr, value } = this.state;\n const dateStr = onDateKeydown(e, { format, dateInputStr, value }, 'day');\n if (!dateStr) return;\n this.onDateInputChange(dateStr);\n };\n\n onTimeKeyDown = e => {\n const { showTime } = this.props;\n const { timeInputStr, value } = this.state;\n const { disabledMinutes, disabledSeconds, hourStep = 1, minuteStep = 1, secondStep = 1 } =\n typeof showTime === 'object' ? showTime : {};\n let unit = 'second';\n\n if (disabledSeconds) {\n unit = disabledMinutes ? 'hour' : 'minute';\n }\n\n const timeStr = onTimeKeydown(\n e,\n {\n format: this.timeFormat,\n timeInputStr,\n value,\n steps: {\n hour: hourStep,\n minute: minuteStep,\n second: secondStep,\n },\n },\n unit,\n );\n\n if (!timeStr) return;\n\n this.onTimeInputChange(timeStr);\n };\n\n handleChange = (newValue, prevValue, others = {}) => {\n if (!('value' in this.props)) {\n this.setState({\n value: newValue,\n ...others,\n });\n } else {\n this.setState({\n ...others,\n });\n }\n\n const newValueOf = newValue ? newValue.valueOf() : null;\n const preValueOf = prevValue ? prevValue.valueOf() : null;\n\n if (newValueOf !== preValueOf) {\n this.onValueChange(newValue);\n }\n };\n\n onFocusDateInput = () => {\n if (this.state.panel !== PANEL.DATE) {\n this.setState({\n panel: PANEL.DATE,\n });\n }\n };\n\n onFoucsTimeInput = () => {\n if (this.state.panel !== PANEL.TIME) {\n this.setState({\n panel: PANEL.TIME,\n });\n }\n };\n\n onVisibleChange = (visible, type) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, type);\n };\n\n changePanel = panel => {\n this.setState({\n panel,\n });\n };\n\n onOk = () => {\n this.onVisibleChange(false, 'okBtnClick');\n this.onValueChange(this.state.value, 'onOk');\n };\n\n render() {\n const {\n prefix,\n rtl,\n locale,\n label,\n state,\n defaultVisibleMonth,\n onVisibleMonthChange,\n showTime,\n disabledDate,\n footerRender,\n placeholder,\n size,\n disabled,\n hasClear,\n popupTriggerType,\n popupAlign,\n popupContainer,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n className,\n inputProps,\n triggerRender,\n dateCellRender,\n monthCellRender,\n yearCellRender,\n dateInputAriaLabel,\n timeInputAriaLabel,\n inline,\n ...others\n } = this.props;\n\n const { mode, visible, value, dateInputStr, timeInputStr, panel, inputing } = this.state;\n\n const datePickerCls = classnames(\n {\n [`${prefix}date-picker`]: true,\n },\n className,\n );\n\n const triggerInputCls = classnames({\n [`${prefix}date-picker-input`]: true,\n [`${prefix}error`]: false,\n });\n\n const panelBodyClassName = classnames({\n [`${prefix}${mode}-picker-body`]: true,\n [`${prefix}date-picker-body-show-time`]: showTime,\n [`${prefix}${mode}-picker-inline`]: inline,\n [`${prefix}${mode}-picker-disabled`]: disabled,\n });\n\n const panelDateInputCls = classnames({\n [`${prefix}date-picker-panel-input`]: true,\n [`${prefix}focus`]: panel === PANEL.DATE,\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const sharedInputProps = {\n ...inputProps,\n size,\n disabled,\n onChange: this.onDateInputChange,\n onBlur: this.onDateInputBlur,\n onPressEnter: this.onDateInputBlur,\n onKeyDown: this.onKeyDown,\n };\n\n const dateInputValue =\n inputing === 'date' ? dateInputStr : (value && value.format(this.format)) || '';\n let triggerInputValue = dateInputValue;\n\n const dateInput = (\n <Input\n {...sharedInputProps}\n hasClear\n size=\"xs\"\n aria-label={dateInputAriaLabel}\n value={dateInputValue}\n onFocus={this.onFocusDateInput}\n placeholder={this.format}\n className={panelDateInputCls}\n />\n );\n\n const datePanel = (\n <Calendar\n shape=\"panel\"\n mode={mode}\n value={value}\n format={this.format}\n dateCellRender={dateCellRender}\n monthCellRender={monthCellRender}\n yearCellRender={yearCellRender}\n onModeChange={this.onModeChange}\n onSelect={this.onSelectCalendarPanel}\n defaultVisibleMonth={defaultVisibleMonth}\n onVisibleMonthChange={onVisibleMonthChange}\n disabledDate={disabledDate}\n />\n );\n\n let panelFooter = footerRender();\n\n let timeInput = null;\n let timePanel = null;\n\n if (showTime) {\n const timeInputValue =\n inputing === 'time' ? timeInputStr : (value && value.format(this.timeFormat)) || '';\n triggerInputValue = (value && value.format(this.dateTimeFormat)) || '';\n\n const timePanelProps = typeof showTime === 'object' ? showTime : {};\n\n const showSecond = this.timeFormat.indexOf('s') > -1;\n\n const panelTimeInputCls = classnames({\n [`${prefix}date-picker-panel-input`]: true,\n [`${prefix}focus`]: panel === PANEL.TIME,\n });\n\n timeInput = (\n <Input\n placeholder={this.timeFormat}\n value={timeInputValue}\n size=\"xs\"\n aria-label={timeInputAriaLabel}\n disabled={disabled || !value}\n onChange={this.onTimeInputChange}\n onFocus={this.onFoucsTimeInput}\n onBlur={this.onTimeInputBlur}\n onPressEnter={this.onTimeInputBlur}\n onKeyDown={this.onTimeKeyDown}\n className={panelTimeInputCls}\n />\n );\n\n timePanel = (\n <TimePickerPanel\n {...timePanelProps}\n locale={locale}\n className={`${prefix}date-picker-panel-time`}\n showSecond={showSecond}\n disabled={disabled}\n prefix={prefix}\n value={value}\n onSelect={this.onSelectTimePanel}\n />\n );\n\n panelFooter = panelFooter || (\n <PanelFooter\n prefix={prefix}\n locale={locale}\n value={value}\n panel={panel}\n onPanelChange={this.changePanel}\n onOk={this.onOk}\n />\n );\n }\n\n const panelBody = {\n [PANEL.DATE]: datePanel,\n [PANEL.TIME]: timePanel,\n }[panel];\n\n const allowClear = value && hasClear;\n const trigger = triggerRender\n ? triggerRender(value, {popupVisible: visible})\n : (\n <div className={`${prefix}date-picker-trigger`}>\n <Input\n {...sharedInputProps}\n label={label}\n state={state}\n value={triggerInputValue}\n role=\"combobox\"\n aria-expanded={visible}\n readOnly\n placeholder={placeholder || (showTime ? locale.datetimePlaceholder : locale.placeholder)}\n hint=\"calendar\"\n hasClear={allowClear}\n className={triggerInputCls}\n />\n </div>\n );\n const body = (\n <div dir={others.dir} className={panelBodyClassName}>\n <div className={`${prefix}date-picker-panel-header`}>\n {dateInput}\n {timeInput}\n </div>\n {panelBody}\n {panelFooter}\n </div>\n )\n const content = inline ? body : (\n <Popup\n offset={[0, 4]}\n {...popupProps}\n ref={popup => { this.popup = popup; }}\n followTrigger={followTrigger}\n autoFocus\n disabled={disabled}\n visible={visible}\n onVisibleChange={this.onVisibleChange}\n align={popupAlign}\n triggerType={popupTriggerType}\n container={popupContainer}\n style={popupStyle}\n className={popupClassName}\n trigger={trigger}\n >\n { body }\n </Popup>\n )\n return (\n <div {...obj.pickOthers(DatePicker.propTypes, others)} className={datePickerCls}>\n { content }\n </div>\n );\n }\n}\n","import React from 'react';\nimport Icon from '../../icon';\n\nclass RangePanelHeader extends React.PureComponent {\n render() {\n const {\n prefix,\n startVisibleMonth,\n endVisibleMonth,\n momentLocale,\n locale,\n changeMode,\n goNextMonth,\n goNextYear,\n goPrevMonth,\n goPrevYear,\n } = this.props;\n\n const localedMonths = momentLocale.months();\n const startMonthLabel = localedMonths[startVisibleMonth.month()];\n const endMonthLabel = localedMonths[endVisibleMonth.month()];\n const startYearLabel = startVisibleMonth.year();\n const endYearLabel = endVisibleMonth.year();\n const btnCls = `${prefix}calendar-btn`;\n\n return (\n <div className={`${prefix}calendar-panel-header`}>\n <button\n role=\"button\"\n title={locale.prevYear}\n className={`${btnCls} ${btnCls}-prev-year`}\n onClick={goPrevYear}\n >\n <Icon type=\"chevrons-left\" />\n </button>\n <button\n role=\"button\"\n title={locale.prevMonth}\n className={`${btnCls} ${btnCls}-prev-month`}\n onClick={goPrevMonth}\n >\n <Icon type=\"chevron-left-s\" />\n </button>\n <div className={`${prefix}calendar-panel-header-left`}>\n {startYearLabel}\n {' '}\n {startMonthLabel}\n </div>\n <div className={`${prefix}calendar-panel-header-right`}>\n {endYearLabel}\n {' '}\n {endMonthLabel}\n </div>\n <button\n role=\"button\"\n title={locale.nextMonth}\n className={`${btnCls} ${btnCls}-next-month`}\n onClick={goNextMonth}\n >\n <Icon type=\"chevron-right-s\" />\n </button>\n <button\n role=\"button\"\n title={locale.nextYear}\n className={`${btnCls} ${btnCls}-next-year`}\n onClick={goNextYear}\n >\n <Icon type=\"chevrons-right\" />\n </button>\n </div>\n );\n }\n}\n\nexport default RangePanelHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport ConfigProvider from '../config-provider';\nimport nextLocale from '../locale/zh-cn';\nimport { obj, func } from '../util';\nimport RangePanelHeader from './head/range-panel-header';\nimport MonthPanelHeader from './head/month-panel-header';\nimport YearPanelHeader from './head/year-panel-header';\nimport DateTable from './table/date-table';\nimport MonthTable from './table/month-table';\nimport YearTable from './table/year-table';\nimport {\n checkMomentObj,\n formatDateValue,\n getVisibleMonth,\n isSameYearMonth,\n CALENDAR_MODES,\n CALENDAR_MODE_DATE,\n CALENDAR_MODE_MONTH,\n CALENDAR_MODE_YEAR,\n getLocaleData,\n} from './utils';\n\nclass RangeCalendar extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 默认的开始日期\n */\n defaultStartValue: checkMomentObj,\n /**\n * 默认的结束日期\n */\n defaultEndValue: checkMomentObj,\n /**\n * 开始日期(moment 对象)\n */\n startValue: checkMomentObj,\n /**\n * 结束日期(moment 对象)\n */\n endValue: checkMomentObj,\n // 面板模式\n mode: PropTypes.oneOf(CALENDAR_MODES),\n // 日期值的格式(用于日期title显示的格式)\n format: PropTypes.string,\n /**\n * 是否显示非本月的日期\n */\n showOtherMonth: PropTypes.bool,\n /**\n * 模板展示的月份(起始月份)\n */\n defaultVisibleMonth: PropTypes.func,\n /**\n * 展现的月份变化时的回调\n * @param {Object} value 显示的月份 (moment 对象)\n * @param {String} reason 触发月份改变原因\n */\n onVisibleMonthChange: PropTypes.func,\n /**\n * 不可选择的日期\n * @param {Object} calendarDate 对应 Calendar 返回的自定义日期对象\n * @param {String} view 当前视图类型,year: 年, month: 月, date: 日\n * @returns {Boolean}\n */\n disabledDate: PropTypes.func,\n /**\n * 选择日期单元格时的回调\n * @param {Object} value 对应的日期值 (moment 对象)\n */\n onSelect: PropTypes.func,\n /**\n * 自定义日期单元格渲染\n */\n dateCellRender: PropTypes.func,\n /**\n * 自定义月份渲染函数\n * @param {Object} calendarDate 对应 Calendar 返回的自定义日期对象\n * @returns {ReactNode}\n */\n monthCellRender: PropTypes.func,\n yearCellRender: PropTypes.func, // 兼容 0.x yearCellRender\n locale: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n mode: CALENDAR_MODE_DATE,\n format: 'YYYY-MM-DD',\n dateCellRender: value => value.date(),\n onSelect: func.noop,\n onVisibleMonthChange: func.noop,\n locale: nextLocale.Calendar,\n showOtherMonth: false,\n };\n\n constructor(props, context) {\n super(props, context);\n\n const startValue = formatDateValue(props.startValue || props.defaultStartValue);\n const endValue = formatDateValue(props.endValue || props.defaultEndValue);\n const visibleMonth = getVisibleMonth(props.defaultVisibleMonth, startValue);\n\n this.state = {\n startValue,\n endValue,\n mode: props.mode,\n startVisibleMonth: visibleMonth,\n activePanel: undefined,\n };\n this.today = moment();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('startValue' in nextProps) {\n const startValue = formatDateValue(nextProps.startValue);\n this.setState({\n startValue,\n });\n\n if (startValue && !startValue.isSame(this.state.startValue, 'day')) {\n this.setState({\n startVisibleMonth: startValue,\n });\n }\n }\n\n if ('endValue' in nextProps) {\n const endValue = formatDateValue(nextProps.endValue);\n this.setState({\n endValue,\n });\n }\n\n if ('mode' in nextProps) {\n this.setState({\n mode: nextProps.mode,\n });\n }\n }\n\n onSelectCell = (date, nextMode) => {\n // this.changeVisibleMonth(date, 'cellClick');\n\n if (this.state.mode === CALENDAR_MODE_DATE) {\n this.props.onSelect(date);\n }\n this.changeMode(nextMode);\n };\n\n changeMode = (mode, activePanel) => {\n if (typeof mode === 'string' && mode !== this.state.mode) {\n this.setState({ mode });\n }\n if (activePanel && activePanel !== this.state.activePanel) {\n this.setState({ activePanel });\n }\n };\n\n changeVisibleMonth = (date, reason) => {\n if (!isSameYearMonth(date, this.state.startVisibleMonth)) {\n this.setState({ startVisibleMonth: date });\n this.props.onVisibleMonthChange(date, reason);\n }\n };\n\n /**\n * 根据日期偏移量设置当前展示的月份\n * @param {Number} offset 日期偏移量\n * @param {String} type 日期偏移类型 days, months, years\n */\n changeVisibleMonthByOffset = (offset, type) => {\n const offsetDate = this.state.startVisibleMonth.clone().add(offset, type);\n this.changeVisibleMonth(offsetDate, 'buttonClick');\n };\n\n goPrevDecade = () => {\n this.changeVisibleMonthByOffset(-10, 'years');\n };\n\n goNextDecade = () => {\n this.changeVisibleMonthByOffset(10, 'years');\n };\n\n goPrevYear = () => {\n this.changeVisibleMonthByOffset(-1, 'years');\n };\n\n goNextYear = () => {\n this.changeVisibleMonthByOffset(1, 'years');\n };\n\n goPrevMonth = () => {\n this.changeVisibleMonthByOffset(-1, 'months');\n };\n\n goNextMonth = () => {\n this.changeVisibleMonthByOffset(1, 'months');\n };\n\n render() {\n const {\n prefix,\n rtl,\n dateCellRender,\n monthCellRender,\n yearCellRender,\n className,\n format,\n locale,\n showOtherMonth,\n disabledDate,\n ...others\n } = this.props;\n const { startValue, endValue, mode, startVisibleMonth, activePanel } = this.state;\n\n // reset moment locale\n if (locale.momentLocale) {\n startValue && startValue.locale(nextLocale.momentLocale);\n endValue && endValue.locale(nextLocale.momentLocale);\n startVisibleMonth.locale(nextLocale.momentLocale);\n }\n\n if (rtl) {\n others.dir = 'rtl';\n }\n const localeData = getLocaleData(locale.format || {}, startVisibleMonth.localeData());\n\n const endVisibleMonth = startVisibleMonth.clone().add(1, 'months');\n\n const headerProps = {\n prefix,\n rtl,\n mode,\n locale,\n momentLocale: localeData,\n startVisibleMonth,\n endVisibleMonth,\n changeMode: this.changeMode,\n };\n\n const tableProps = {\n prefix,\n value: startValue,\n startValue,\n endValue,\n mode,\n locale,\n momentLocale: localeData,\n showOtherMonth,\n today: this.today,\n disabledDate,\n dateCellRender,\n monthCellRender,\n yearCellRender,\n changeMode: this.changeMode,\n changeVisibleMonth: this.changeVisibleMonth,\n };\n\n const visibleMonths = {\n start: startVisibleMonth,\n end: endVisibleMonth,\n };\n\n const visibleMonth = visibleMonths[activePanel];\n\n let header;\n let table;\n\n switch (mode) {\n case CALENDAR_MODE_DATE: {\n table = [\n <div className={`${prefix}calendar-body-left`} key=\"left-panel\">\n <DateTable\n format={format}\n {...tableProps}\n visibleMonth={startVisibleMonth}\n onSelectDate={this.onSelectCell}\n />\n </div>,\n <div className={`${prefix}calendar-body-right`} key=\"right-panel\">\n <DateTable\n format={format}\n {...tableProps}\n visibleMonth={endVisibleMonth}\n onSelectDate={this.onSelectCell}\n />\n </div>,\n ];\n header = (\n <RangePanelHeader\n {...headerProps}\n goPrevYear={this.goPrevYear}\n goPrevMonth={this.goPrevMonth}\n goNextYear={this.goNextYear}\n goNextMonth={this.goNextMonth}\n />\n );\n break;\n }\n case CALENDAR_MODE_MONTH: {\n table = (\n <MonthTable\n {...tableProps}\n visibleMonth={visibleMonth}\n onSelectMonth={this.onSelectCell}\n />\n );\n header = (\n <MonthPanelHeader\n {...headerProps}\n visibleMonth={visibleMonth}\n goPrevYear={this.goPrevYear}\n goNextYear={this.goNextYear}\n />\n );\n break;\n }\n case CALENDAR_MODE_YEAR: {\n table = (\n <YearTable\n {...tableProps}\n rtl={rtl}\n visibleMonth={visibleMonth}\n onSelectYear={this.onSelectCell}\n goPrevDecade={this.goPrevDecade}\n goNextDecade={this.goNextDecade}\n />\n );\n header = (\n <YearPanelHeader\n {...headerProps}\n visibleMonth={visibleMonth}\n goPrevDecade={this.goPrevDecade}\n goNextDecade={this.goNextDecade}\n />\n );\n break;\n }\n }\n\n const classNames = classnames(\n {\n [`${prefix}calendar`]: true,\n [`${prefix}calendar-range`]: true,\n },\n className,\n );\n\n return (\n <div {...obj.pickOthers(RangeCalendar.propTypes, others)} className={classNames}>\n {header}\n <div className={`${prefix}calendar-body`}>{table}</div>\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(RangeCalendar, {\n componentName: 'Calendar',\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport Overlay from '../overlay';\nimport Input from '../input';\nimport Icon from '../icon';\nimport RangeCalendar from '../calendar/range-calendar';\nimport TimePickerPanel from '../time-picker/panel';\nimport nextLocale from '../locale/zh-cn';\nimport { func, obj } from '../util';\nimport {\n PANEL,\n resetValueTime,\n formatDateValue,\n extend,\n getDateTimeFormat,\n isFunction,\n onDateKeydown,\n onTimeKeydown,\n} from './util';\nimport PanelFooter from './module/panel-footer';\n\nconst { Popup } = Overlay;\n\nfunction mapInputStateName(name) {\n return {\n startValue: 'startDateInputStr',\n endValue: 'endDateInputStr',\n startTime: 'startTimeInputStr',\n endTime: 'endTimeInputStr',\n }[name];\n}\n\nfunction mapTimeToValue(name) {\n return {\n startTime: 'startValue',\n endTime: 'endValue',\n }[name];\n}\n\nfunction getFormatValues(values, format) {\n if (!Array.isArray(values)) {\n return [null, null];\n }\n return [formatDateValue(values[0], format), formatDateValue(values[1], format)];\n}\n\n/**\n * DatePicker.RangePicker\n */\nexport default class RangePicker extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 默认展示的起始月份\n * @return {MomentObject} 返回包含指定月份的 moment 对象实例\n */\n defaultVisibleMonth: PropTypes.func,\n onVisibleMonthChange: PropTypes.func,\n /**\n * 日期范围值数组 [moment, moment]\n */\n value: PropTypes.array,\n /**\n * 初始的日期范围值数组 [moment, moment]\n */\n defaultValue: PropTypes.array,\n /**\n * 日期格式\n */\n format: PropTypes.string,\n /**\n * 是否使用时间控件,支持传入 TimePicker 的属性\n */\n showTime: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n /**\n * 每次选择是否重置时间(仅在 showTime 开启时有效)\n */\n resetTime: PropTypes.bool,\n /**\n * 禁用日期函数\n * @param {MomentObject} 日期值\n * @param {String} view 当前视图类型,year: 年, month: 月, date: 日\n * @return {Boolean} 是否禁用\n */\n disabledDate: PropTypes.func,\n /**\n * 自定义面板页脚\n * @return {Node} 自定义的面板页脚组件\n */\n footerRender: PropTypes.func,\n /**\n * 日期范围值改变时的回调 [ MomentObject|String, MomentObject|String ]\n * @param {Array<MomentObject|String>} value 日期值\n */\n onChange: PropTypes.func,\n /**\n * 点击确认按钮时的回调 返回开始时间和结束时间`[ MomentObject|String, MomentObject|String ]`\n * @return {Array} 日期范围\n */\n onOk: PropTypes.func,\n /**\n * 输入框内置标签\n */\n label: PropTypes.node,\n /**\n * 输入框状态\n */\n state: PropTypes.oneOf(['error', 'loading', 'success']),\n /**\n * 输入框尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 是否显示清空按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 弹层显示状态\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层展示状态变化时的回调\n * @param {Boolean} visible 弹层是否显示\n * @param {String} type 触发弹层显示和隐藏的来源 okBtnClick 表示由确认按钮触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 弹层触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层对齐方式, 具体含义见 OverLay文档\n */\n popupAlign: PropTypes.string,\n /**\n * 弹层容器\n * @param {Element} target 目标元素\n * @return {Element} 弹层的容器元素\n */\n popupContainer: PropTypes.func,\n /**\n * 弹层自定义样式\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层其他属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 输入框其他属性\n */\n inputProps: PropTypes.object,\n /**\n * 自定义触发器\n * @param {Array} value 日期值(moment对象)数组\n * @param {Object} state 附加状态\n * @returns {ReactNode}\n */\n triggerRender: PropTypes.func,\n /**\n * 自定义日期单元格渲染\n */\n dateCellRender: PropTypes.func,\n /**\n * 自定义月份渲染函数\n * @param {Object} calendarDate 对应 Calendar 返回的自定义日期对象\n * @returns {ReactNode}\n */\n monthCellRender: PropTypes.func,\n yearCellRender: PropTypes.func, // 兼容 0.x yearCellRender\n /**\n * 开始日期输入框的 aria-label 属性\n */\n startDateInputAriaLabel: PropTypes.string,\n /**\n * 开始时间输入框的 aria-label 属性\n */\n startTimeInputAriaLabel: PropTypes.string,\n /**\n * 结束日期输入框的 aria-label 属性\n */\n endDateInputAriaLabel: PropTypes.string,\n /**\n * 结束时间输入框的 aria-label 属性\n */\n endTimeInputAriaLabel: PropTypes.string,\n ranges: PropTypes.object,\n locale: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n format: 'YYYY/MM/DD',\n size: 'medium',\n showTime: false,\n resetTime: false,\n disabledDate: () => false,\n footerRender: () => null,\n hasClear: true,\n defaultVisible: false,\n popupTriggerType: 'click',\n popupAlign: 'tl bl',\n locale: nextLocale.DatePicker,\n onChange: func.noop,\n onOk: func.noop,\n onVisibleChange: func.noop,\n };\n\n constructor(props, context) {\n super(props, context);\n const dateTimeFormat = getDateTimeFormat(props.format, props.showTime);\n extend(dateTimeFormat, this);\n\n const val = props.value || props.defaultValue;\n const values = getFormatValues(val, this.dateTimeFormat);\n this.inputAsString = val && (typeof val[0] === 'string' || typeof val[1] === 'string');\n this.state = {\n visible: props.visible || props.defaultVisible,\n startValue: values[0],\n endValue: values[1],\n startDateInputStr: '',\n endDateInputStr: '',\n activeDateInput: 'startValue',\n startTimeInputStr: '',\n endTimeInputStr: '',\n inputing: false, // 当前是否处于输入状态\n panel: PANEL.DATE,\n };\n this.popup = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('showTime' in nextProps) {\n const dateTimeFormat = getDateTimeFormat(\n nextProps.format || this.props.format,\n nextProps.showTime,\n );\n extend(dateTimeFormat, this);\n }\n\n if ('value' in nextProps) {\n const values = getFormatValues(nextProps.value, this.dateTimeFormat);\n this.setState({\n startValue: values[0],\n endValue: values[1],\n });\n this.inputAsString =\n nextProps.value &&\n (typeof nextProps.value[0] === 'string' || typeof nextProps.value[1] === 'string');\n }\n\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n // 获取底层的overlay实例\n getOverlay = () => {\n return this.popup && this.popup.getInstance() && this.popup.getInstance().getOverlay();\n }\n\n onValueChange = (values, handler = 'onChange') => {\n let ret;\n if (!values.length || !this.inputAsString) {\n ret = values;\n } else {\n ret = [\n values[0] ? values[0].format(this.dateTimeFormat) : null,\n values[1] ? values[1].format(this.dateTimeFormat) : null,\n ];\n }\n this.props[handler](ret);\n };\n\n onSelectCalendarPanel = value => {\n const { showTime, resetTime } = this.props;\n const {\n activeDateInput: prevActiveDateInput,\n startValue: prevStartValue,\n endValue: prevEndValue,\n } = this.state;\n const newState = {\n activeDateInput: prevActiveDateInput,\n inputing: false,\n };\n\n let newValue = value;\n switch (prevActiveDateInput) {\n case 'startValue': {\n if (!prevEndValue || value.valueOf() <= prevEndValue.valueOf()) {\n newState.activeDateInput = 'endValue';\n }\n\n if (showTime) {\n if (!prevStartValue) {\n // 第一次选择,如果设置了时间默认值,则使用该默认时间\n if (showTime.defaultValue) {\n const defaultTimeValue = formatDateValue(showTime.defaultValue, this.timeFormat);\n newValue = resetValueTime(value, defaultTimeValue);\n }\n } else if (!resetTime) {\n // 非第一次选择,如果开启了 resetTime ,则记住之前选择的时间值\n newValue = resetValueTime(value, prevStartValue);\n }\n }\n\n newState.startValue = newValue;\n\n if (prevEndValue && value.valueOf() > prevEndValue.valueOf()) {\n newState.endValue = null;\n newState.activeDateInput = 'endValue';\n }\n break;\n }\n\n case 'endValue':\n if (!prevStartValue) {\n newState.activeDateInput = 'startValue';\n }\n\n if (showTime) {\n if (!prevEndValue) {\n // 第一次选择,如果设置了时间默认值,则使用该默认时间\n if (showTime.defaultValue) {\n const defaultTimeValue = formatDateValue(showTime.defaultValue, this.timeFormat);\n newValue = resetValueTime(value, defaultTimeValue);\n }\n } else if (!resetTime) {\n // 非第一次选择,如果开启了 resetTime ,则记住之前选择的时间值\n newValue = resetValueTime(value, prevEndValue);\n }\n }\n\n newState.endValue = newValue;\n\n // 选择了一个比开始日期更小的结束日期,此时表示用户重新选择了\n if (prevStartValue && value.valueOf() < prevStartValue.valueOf()) {\n newState.startValue = value;\n newState.endValue = null;\n }\n break;\n }\n\n const newStartValue = 'startValue' in newState ? newState.startValue : prevStartValue;\n const newEndValue = 'endValue' in newState ? newState.endValue : prevEndValue;\n\n // 受控状态选择不更新值\n if ('value' in this.props) {\n delete newState.startValue;\n delete newState.endValue;\n }\n\n this.setState(newState);\n\n this.onValueChange([newStartValue, newEndValue]);\n };\n\n clearRange = () => {\n this.setState({\n startDateInputStr: '',\n endDateInputStr: '',\n startTimeInputStr: '',\n endTimeInputStr: '',\n });\n\n if (!('value' in this.props)) {\n this.setState({\n startValue: null,\n endValue: null,\n });\n }\n\n this.onValueChange([]);\n };\n\n onDateInputChange = (inputStr, e, eventType) => {\n if (eventType === 'clear' || !inputStr) {\n e.stopPropagation();\n this.clearRange();\n } else {\n const stateName = mapInputStateName(this.state.activeDateInput);\n this.setState({\n [stateName]: inputStr,\n inputing: this.state.activeDateInput,\n });\n }\n };\n\n onDateInputBlur = () => {\n const stateName = mapInputStateName(this.state.activeDateInput);\n const dateInputStr = this.state[stateName];\n if (dateInputStr) {\n const { format, disabledDate } = this.props;\n const parsed = moment(dateInputStr, format, true);\n\n this.setState({\n [stateName]: '',\n inputing: false,\n });\n\n if (parsed.isValid() && !disabledDate(parsed, 'date')) {\n const valueName = this.state.activeDateInput;\n const newValue = parsed;\n\n this.handleChange(valueName, newValue);\n }\n }\n };\n\n onDateInputKeyDown = e => {\n const { activeDateInput } = this.state;\n const stateName = mapInputStateName(activeDateInput);\n const dateInputStr = this.state[stateName];\n const { format } = this.props;\n const dateStr = onDateKeydown(\n e,\n { format, value: this.state[activeDateInput], dateInputStr },\n 'day',\n );\n if (!dateStr) return;\n\n return this.onDateInputChange(dateStr);\n };\n\n onFocusDateInput = type => {\n if (type !== this.state.activeDateInput) {\n this.setState({\n activeDateInput: type,\n });\n }\n if (this.state.panel !== PANEL.DATE) {\n this.setState({\n panel: PANEL.DATE,\n });\n }\n };\n\n onFocusTimeInput = type => {\n if (type !== this.state.activeDateInput) {\n this.setState({\n activeDateInput: type,\n });\n }\n\n if (this.state.panel !== PANEL.TIME) {\n this.setState({\n panel: PANEL.TIME,\n });\n }\n };\n\n onSelectStartTime = value => {\n if (!('value' in this.props)) {\n this.setState({\n startValue: value,\n inputing: false,\n activeDateInput: 'startTime',\n });\n }\n if (value.valueOf() !== this.state.startValue.valueOf()) {\n this.onValueChange([value, this.state.endValue]);\n }\n };\n\n onSelectEndTime = value => {\n if (!('value' in this.props)) {\n this.setState({\n endValue: value,\n inputing: false,\n activeDateInput: 'endTime',\n });\n }\n if (value.valueOf() !== this.state.endValue.valueOf()) {\n this.onValueChange([this.state.startValue, value]);\n }\n };\n\n onTimeInputChange = inputStr => {\n const stateName = mapInputStateName(this.state.activeDateInput);\n this.setState({\n [stateName]: inputStr,\n inputing: this.state.activeDateInput,\n });\n };\n\n onTimeInputBlur = () => {\n const stateName = mapInputStateName(this.state.activeDateInput);\n const timeInputStr = this.state[stateName];\n if (timeInputStr) {\n const parsed = moment(timeInputStr, this.timeFormat, true);\n\n this.setState({\n [stateName]: '',\n inputing: false,\n });\n\n if (parsed.isValid()) {\n const hour = parsed.hour();\n const minute = parsed.minute();\n const second = parsed.second();\n const valueName = mapTimeToValue(this.state.activeDateInput);\n const newValue = this.state[valueName]\n .clone()\n .hour(hour)\n .minute(minute)\n .second(second);\n\n this.handleChange(valueName, newValue);\n }\n }\n };\n\n onTimeInputKeyDown = e => {\n const { showTime } = this.props;\n const { activeDateInput } = this.state;\n const stateName = mapInputStateName(activeDateInput);\n const timeInputStr = this.state[stateName];\n const { disabledMinutes, disabledSeconds, hourStep = 1, minuteStep = 1, secondStep = 1 } =\n typeof showTime === 'object' ? showTime : {};\n let unit = 'second';\n\n if (disabledSeconds) {\n unit = disabledMinutes ? 'hour' : 'minute';\n }\n\n const timeStr = onTimeKeydown(\n e,\n {\n format: this.timeFormat,\n timeInputStr,\n value: this.state[activeDateInput.indexOf('start') ? 'startValue' : 'endValue'],\n steps: {\n hour: hourStep,\n minute: minuteStep,\n second: secondStep,\n },\n },\n unit,\n );\n\n if (!timeStr) return;\n\n this.onTimeInputChange(timeStr);\n };\n\n handleChange = (valueName, newValue) => {\n if (!('value' in this.props)) {\n this.setState({\n [valueName]: newValue,\n });\n }\n\n const startValue = valueName === 'startValue' ? newValue : this.state.startValue;\n const endValue = valueName === 'endValue' ? newValue : this.state.endValue;\n\n this.onValueChange([startValue, endValue]);\n };\n\n onVisibleChange = (visible, type) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, type);\n };\n\n changePanel = panel => {\n this.setState({\n panel,\n activeDateInput: panel === PANEL.DATE ? 'startValue' : 'startTime',\n });\n };\n\n onOk = () => {\n this.onVisibleChange(false, 'okBtnClick');\n this.onValueChange([this.state.startValue, this.state.endValue], 'onOk');\n };\n\n // 如果用户没有给定时间禁用逻辑,则给默认到禁用逻辑,即如果是同一天,则时间不能是同样的\n getDisabledTime = ({ startValue, endValue }) => {\n const { disabledHours, disabledMinutes, disabledSeconds } = this.props.showTime || {};\n\n let disabledTime = {};\n\n if (startValue && endValue) {\n const isSameDay = startValue.format('L') === endValue.format('L');\n const newDisabledHours = isFunction(disabledHours)\n ? disabledHours\n : index => {\n if (isSameDay && index < startValue.hour()) {\n return true;\n }\n };\n\n const newDisabledMinutes = isFunction(disabledMinutes)\n ? disabledMinutes\n : index => {\n if (isSameDay && startValue.hour() === endValue.hour() && index < startValue.minute()) {\n return true;\n }\n };\n\n const newDisabledSeconds = isFunction(disabledSeconds)\n ? disabledSeconds\n : index => {\n if (\n isSameDay &&\n startValue.hour() === endValue.hour() &&\n startValue.minute() === endValue.minute() &&\n index <= startValue.second()\n ) {\n return true;\n }\n };\n disabledTime = {\n disabledHours: newDisabledHours,\n disabledMinutes: newDisabledMinutes,\n disabledSeconds: newDisabledSeconds,\n };\n }\n\n return disabledTime;\n };\n\n render() {\n const {\n prefix,\n rtl,\n defaultVisibleMonth,\n onVisibleMonthChange,\n showTime,\n disabledDate,\n footerRender,\n label,\n ranges = {}, // 兼容0.x ranges 属性\n state: inputState,\n size,\n disabled,\n hasClear,\n popupTriggerType,\n popupAlign,\n popupContainer,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n className,\n locale,\n inputProps,\n triggerRender,\n dateCellRender,\n monthCellRender,\n yearCellRender,\n startDateInputAriaLabel,\n startTimeInputAriaLabel,\n endDateInputAriaLabel,\n endTimeInputAriaLabel,\n ...others\n } = this.props;\n\n const { state } = this;\n\n const classNames = classnames(\n {\n [`${prefix}range-picker`]: true,\n [`${prefix}${size}`]: size,\n [`${prefix}disabled`]: disabled,\n },\n className,\n );\n\n const panelBodyClassName = classnames({\n [`${prefix}range-picker-body`]: true,\n [`${prefix}range-picker-body-show-time`]: showTime,\n });\n\n const triggerCls = classnames({\n [`${prefix}range-picker-trigger`]: true,\n [`${prefix}error`]: inputState === 'error',\n });\n\n const startDateInputCls = classnames({\n [`${prefix}range-picker-panel-input-start-date`]: true,\n [`${prefix}focus`]: state.activeDateInput === 'startValue',\n });\n\n const endDateInputCls = classnames({\n [`${prefix}range-picker-panel-input-end-date`]: true,\n [`${prefix}focus`]: state.activeDateInput === 'endValue',\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const startDateInputValue =\n state.inputing === 'startValue'\n ? state.startDateInputStr\n : (state.startValue && state.startValue.format(this.format)) || '';\n const endDateInputValue =\n state.inputing === 'endValue'\n ? state.endDateInputStr\n : (state.endValue && state.endValue.format(this.format)) || '';\n\n let startTriggerValue = startDateInputValue;\n let endTriggerValue = endDateInputValue;\n\n const sharedInputProps = {\n ...inputProps,\n size,\n disabled,\n onChange: this.onDateInputChange,\n onBlur: this.onDateInputBlur,\n onPressEnter: this.onDateInputBlur,\n onKeyDown: this.onDateInputKeyDown,\n };\n\n const startDateInput = (\n <Input\n {...sharedInputProps}\n hasClear\n size=\"xs\"\n aria-label={startDateInputAriaLabel}\n placeholder={this.format}\n value={startDateInputValue}\n onFocus={() => this.onFocusDateInput('startValue')}\n className={startDateInputCls}\n />\n );\n\n const endDateInput = (\n <Input\n {...sharedInputProps}\n hasClear\n size=\"xs\"\n aria-label={endDateInputAriaLabel}\n placeholder={this.format}\n value={endDateInputValue}\n onFocus={() => this.onFocusDateInput('endValue')}\n className={endDateInputCls}\n />\n );\n\n const datePanel = (\n <RangeCalendar\n showOtherMonth\n dateCellRender={dateCellRender}\n monthCellRender={monthCellRender}\n yearCellRender={yearCellRender}\n format={this.format}\n defaultVisibleMonth={defaultVisibleMonth}\n onVisibleMonthChange={onVisibleMonthChange}\n disabledDate={disabledDate}\n onSelect={this.onSelectCalendarPanel}\n startValue={state.startValue}\n endValue={state.endValue}\n />\n );\n\n let startTimeInput = null;\n let endTimeInput = null;\n let timePanel = null;\n let panelFooter = footerRender();\n\n if (showTime) {\n const startTimeInputValue =\n state.inputing === 'startTime'\n ? state.startTimeInputStr\n : (state.startValue && state.startValue.format(this.timeFormat)) || '';\n const endTimeInputValue =\n state.inputing === 'endTime'\n ? state.endTimeInputStr\n : (state.endValue && state.endValue.format(this.timeFormat)) || '';\n\n startTriggerValue = (state.startValue && state.startValue.format(this.dateTimeFormat)) || '';\n endTriggerValue = (state.endValue && state.endValue.format(this.dateTimeFormat)) || '';\n\n const sharedTimeInputProps = {\n size,\n placeholder: this.timeFormat,\n onFocus: this.onFocusTimeInput,\n onBlur: this.onTimeInputBlur,\n onPressEnter: this.onTimeInputBlur,\n onChange: this.onTimeInputChange,\n onKeyDown: this.onTimeInputKeyDown,\n };\n\n const startTimeInputCls = classnames({\n [`${prefix}range-picker-panel-input-start-time`]: true,\n [`${prefix}focus`]: state.activeDateInput === 'startTime',\n });\n\n startTimeInput = (\n <Input\n {...sharedTimeInputProps}\n size=\"xs\"\n value={startTimeInputValue}\n aria-label={startTimeInputAriaLabel}\n disabled={disabled || !state.startValue || !state.endValue}\n onFocus={() => this.onFocusTimeInput('startTime')}\n className={startTimeInputCls}\n />\n );\n\n const endTimeInputCls = classnames({\n [`${prefix}range-picker-panel-input-end-time`]: true,\n [`${prefix}focus`]: state.activeDateInput === 'endTime',\n });\n\n endTimeInput = (\n <Input\n {...sharedTimeInputProps}\n size=\"xs\"\n value={endTimeInputValue}\n aria-label={endTimeInputAriaLabel}\n disabled={disabled || !state.endValue || !state.startValue}\n onFocus={() => this.onFocusTimeInput('endTime')}\n className={endTimeInputCls}\n />\n );\n\n const showSecond = this.timeFormat.indexOf('s') > -1;\n\n const sharedTimePickerProps = {\n ...showTime,\n prefix,\n locale,\n disabled,\n showSecond,\n };\n\n const disabledTime = this.getDisabledTime(state);\n\n timePanel = (\n <div className={`${prefix}range-picker-panel-time`}>\n <TimePickerPanel\n {...sharedTimePickerProps}\n className={`${prefix}range-picker-panel-time-start`}\n value={state.startValue}\n onSelect={this.onSelectStartTime}\n />\n <TimePickerPanel\n {...sharedTimePickerProps}\n {...disabledTime}\n className={`${prefix}range-picker-panel-time-end`}\n value={state.endValue}\n onSelect={this.onSelectEndTime}\n />\n </div>\n );\n }\n\n panelFooter = panelFooter || (\n <PanelFooter\n prefix={prefix}\n value={state.startValue && state.endValue}\n ranges={Object.keys(ranges).map(key => ({\n label: key,\n value: ranges[key],\n onChange: values => {\n this.setState({\n startValue: values[0],\n endValue: values[1],\n });\n this.onValueChange(values);\n },\n }))}\n disabledOk={\n !state.startValue ||\n !state.endValue ||\n state.startValue.valueOf() > state.endValue.valueOf()\n }\n locale={locale}\n panel={state.panel}\n onPanelChange={showTime ? this.changePanel : null}\n onOk={this.onOk}\n />\n );\n\n const panelBody = {\n [PANEL.DATE]: datePanel,\n [PANEL.TIME]: timePanel,\n }[state.panel];\n\n const allowClear = state.startValue && state.endValue && hasClear;\n const trigger = triggerRender\n ? triggerRender([state.startValue, state.endValue], {popupVisible: state.visible})\n : (\n <div className={triggerCls}>\n <Input\n {...sharedInputProps}\n readOnly\n role=\"combobox\"\n aria-expanded={state.visible}\n label={label}\n placeholder={locale.startPlaceholder}\n value={startTriggerValue}\n hasBorder={false}\n className={`${prefix}range-picker-trigger-input`}\n onFocus={() => this.onFocusDateInput('startValue')}\n />\n <span className={`${prefix}range-picker-trigger-separator`}>~</span>\n <Input\n {...sharedInputProps}\n readOnly\n role=\"combobox\"\n aria-expanded={state.visible}\n placeholder={locale.endPlaceholder}\n value={endTriggerValue}\n hasBorder={false}\n className={`${prefix}range-picker-trigger-input`}\n onFocus={() => this.onFocusDateInput('endValue')}\n hasClear={allowClear}\n />\n <Icon type=\"calendar\" className={`${prefix}range-picker-trigger-icon`} />\n </div>\n );\n\n return (\n <div {...obj.pickOthers(RangePicker.propTypes, others)} className={classNames}>\n <Popup\n offset={[0, 4]}\n {...popupProps}\n followTrigger={followTrigger}\n autoFocus\n ref={popup => { this.popup = popup; }}\n disabled={disabled}\n visible={state.visible}\n onVisibleChange={this.onVisibleChange}\n align={popupAlign}\n triggerType={popupTriggerType}\n container={popupContainer}\n style={popupStyle}\n className={popupClassName}\n trigger={trigger}\n >\n <div dir={others.dir} className={panelBodyClassName}>\n <div className={`${prefix}range-picker-panel-header`}>\n <div className={`${prefix}range-picker-panel-input`}>\n {startDateInput}\n {startTimeInput}\n <span className={`${prefix}range-picker-panel-input-separator`}>~</span>\n {endDateInput}\n {endTimeInput}\n </div>\n </div>\n {panelBody}\n {panelFooter}\n </div>\n </Popup>\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport Overlay from '../overlay';\nimport Input from '../input';\nimport Calendar from '../calendar';\nimport nextLocale from '../locale/zh-cn';\nimport { func, obj } from '../util';\nimport { checkDateValue, formatDateValue, onDateKeydown } from './util';\n\nconst { Popup } = Overlay;\n\n/**\n * DatePicker.MonthPicker\n */\nclass MonthPicker extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 输入框内置标签\n */\n label: PropTypes.node,\n /**\n * 输入框状态\n */\n state: PropTypes.oneOf(['success', 'loading', 'error']),\n /**\n * 输入提示\n */\n placeholder: PropTypes.string,\n /**\n * 默认展现的年\n * @return {MomentObject} 返回包含指定年份的 moment 对象实例\n */\n defaultVisibleYear: PropTypes.func,\n /**\n * 日期值(受控)moment 对象\n */\n value: checkDateValue,\n /**\n * 初始日期值,moment 对象\n */\n defaultValue: checkDateValue,\n /**\n * 日期值的格式(用于限定用户输入和展示)\n */\n format: PropTypes.string,\n /**\n * 禁用日期函数\n * @param {MomentObject} 日期值\n * @param {String} view 当前视图类型,year: 年, month: 月, date: 日\n * @return {Boolean} 是否禁用\n */\n disabledDate: PropTypes.func,\n /**\n * 自定义面板页脚\n * @return {Node} 自定义的面板页脚组件\n */\n footerRender: PropTypes.func,\n /**\n * 日期值改变时的回调\n * @param {MomentObject|String} value 日期值\n */\n onChange: PropTypes.func,\n /**\n * 输入框尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 是否显示清空按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 弹层显示状态\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层展示状态变化时的回调\n * @param {Boolean} visible 弹层是否显示\n * @param {String} type 触发弹层显示和隐藏的来源 calendarSelect 表示由日期表盘的选择触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 弹层触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层对齐方式, 具体含义见 OverLay文档\n */\n popupAlign: PropTypes.string,\n /**\n * 弹层容器\n * @param {Element} target 目标元素\n * @return {Element} 弹层的容器元素\n */\n popupContainer: PropTypes.func,\n /**\n * 弹层自定义样式\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层其他属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 输入框其他属性\n */\n inputProps: PropTypes.object,\n /**\n * 自定义月份渲染函数\n * @param {Object} calendarDate 对应 Calendar 返回的自定义日期对象\n * @returns {ReactNode}\n */\n monthCellRender: PropTypes.func,\n yearCellRender: PropTypes.func, // 兼容 0.x yearCellRender\n /**\n * 日期输入框的 aria-label 属性\n */\n dateInputAriaLabel: PropTypes.string,\n locale: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n format: 'YYYY/MM',\n size: 'medium',\n disabledDate: () => false,\n footerRender: () => null,\n hasClear: true,\n popupTriggerType: 'click',\n popupAlign: 'tl bl',\n locale: nextLocale.DatePicker,\n onChange: func.noop,\n onVisibleChange: func.noop,\n };\n\n constructor(props, context) {\n super(props, context);\n\n const value = formatDateValue(props.value || props.defaultValue, props.format);\n\n this.inputAsString = typeof (props.value || props.defaultValue) === 'string'; // 判断用户输入是否是字符串\n this.state = {\n value,\n dateInputStr: '',\n inputing: false,\n visible: props.visible || props.defaultVisible,\n };\n this.popup = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n const value = formatDateValue(nextProps.value, nextProps.format || this.props.format);\n this.setState({\n value,\n });\n this.inputAsString = typeof nextProps.value === 'string';\n }\n\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n // 获取底层的overlay实例\n getOverlay = () => {\n return this.popup && this.popup.getInstance() && this.popup.getInstance().getOverlay();\n }\n\n onValueChange = newValue => {\n const ret = this.inputAsString && newValue ? newValue.format(this.props.format) : newValue;\n this.props.onChange(ret);\n };\n\n onSelectCalendarPanel = value => {\n // const { format } = this.props;\n const prevSelectedMonth = this.state.value;\n const selectedMonth = value\n .clone()\n .date(1)\n .hour(0)\n .minute(0)\n .second(0);\n\n this.handleChange(selectedMonth, prevSelectedMonth, { inputing: false }, () => {\n this.onVisibleChange(false, 'calendarSelect');\n });\n };\n\n clearValue = () => {\n this.setState({\n dateInputStr: '',\n });\n\n this.handleChange(null, this.state.value);\n };\n\n onDateInputChange = (inputStr, e, eventType) => {\n if (eventType === 'clear' || !inputStr) {\n e.stopPropagation();\n this.clearValue();\n } else {\n this.setState({\n dateInputStr: inputStr,\n inputing: true,\n });\n }\n };\n\n onDateInputBlur = () => {\n const { dateInputStr } = this.state;\n if (dateInputStr) {\n const { disabledDate, format } = this.props;\n const parsed = moment(dateInputStr, format, true);\n\n this.setState({\n dateInputStr: '',\n inputing: false,\n });\n\n if (parsed.isValid() && !disabledDate(parsed, 'month')) {\n this.handleChange(parsed, this.state.value);\n }\n }\n };\n\n onKeyDown = e => {\n const { format } = this.props;\n const { dateInputStr, value } = this.state;\n const dateStr = onDateKeydown(e, { format, dateInputStr, value }, 'month');\n if (!dateStr) return;\n this.onDateInputChange(dateStr);\n };\n\n handleChange = (newValue, prevValue, others = {}, callback) => {\n if (!('value' in this.props)) {\n this.setState({\n value: newValue,\n ...others,\n });\n } else {\n this.setState({\n ...others,\n });\n }\n\n const { format } = this.props;\n\n const newValueOf = newValue ? newValue.format(format) : null;\n const preValueOf = prevValue ? prevValue.format(format) : null;\n\n if (newValueOf !== preValueOf) {\n this.onValueChange(newValue);\n if (typeof callback === 'function') {\n return callback();\n }\n }\n };\n\n onVisibleChange = (visible, type) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, type);\n };\n\n render() {\n const {\n prefix,\n rtl,\n locale,\n label,\n state,\n format,\n defaultVisibleYear,\n disabledDate,\n footerRender,\n placeholder,\n size,\n disabled,\n hasClear,\n popupTriggerType,\n popupAlign,\n popupContainer,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n className,\n inputProps,\n monthCellRender,\n yearCellRender,\n dateInputAriaLabel,\n ...others\n } = this.props;\n\n const { visible, value, dateInputStr, inputing } = this.state;\n\n const monthPickerCls = classnames(\n {\n [`${prefix}month-picker`]: true,\n },\n className,\n );\n\n const triggerInputCls = classnames({\n [`${prefix}month-picker-input`]: true,\n [`${prefix}error`]: false,\n });\n\n const panelBodyClassName = classnames({\n [`${prefix}month-picker-body`]: true,\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const panelInputCls = `${prefix}month-picker-panel-input`;\n\n const sharedInputProps = {\n ...inputProps,\n size,\n disabled,\n onChange: this.onDateInputChange,\n onBlur: this.onDateInputBlur,\n onPressEnter: this.onDateInputBlur,\n onKeyDown: this.onKeyDown,\n };\n\n const dateInputValue = inputing ? dateInputStr : (value && value.format(format)) || '';\n const triggerInputValue = dateInputValue;\n\n const dateInput = (\n <Input\n {...sharedInputProps}\n hasClear\n size=\"xs\"\n value={dateInputValue}\n aria-label={dateInputAriaLabel}\n onFocus={this.onFoucsDateInput}\n placeholder={format}\n className={panelInputCls}\n />\n );\n\n const datePanel = (\n <Calendar\n shape=\"panel\"\n modes={['month', 'year']}\n monthCellRender={monthCellRender}\n yearCellRender={yearCellRender}\n value={value}\n onSelect={this.onSelectCalendarPanel}\n defaultVisibleMonth={defaultVisibleYear}\n disabledDate={disabledDate}\n />\n );\n\n const panelBody = datePanel;\n const panelFooter = footerRender();\n\n const allowClear = value && hasClear;\n const trigger = (\n <div className={`${prefix}month-picker-trigger`}>\n <Input\n {...sharedInputProps}\n label={label}\n state={state}\n readOnly\n value={triggerInputValue}\n placeholder={placeholder || locale.monthPlaceholder}\n hint=\"calendar\"\n hasClear={allowClear}\n className={triggerInputCls}\n />\n </div>\n );\n return (\n <div {...obj.pickOthers(MonthPicker.propTypes, others)} className={monthPickerCls}>\n <Popup\n offset={[0, 4]}\n {...popupProps}\n followTrigger={followTrigger}\n autoFocus\n ref={popup => { this.popup = popup; }}\n role=\"combobox\"\n aria-expanded={visible}\n disabled={disabled}\n visible={visible}\n onVisibleChange={this.onVisibleChange}\n align={popupAlign}\n triggerType={popupTriggerType}\n container={popupContainer}\n style={popupStyle}\n className={popupClassName}\n trigger={trigger}\n >\n <div className={panelBodyClassName} dir={others.dir}>\n <div className={`${prefix}month-picker-panel-header`}>{dateInput}</div>\n {panelBody}\n {panelFooter}\n </div>\n </Popup>\n </div>\n );\n }\n}\n\nexport default MonthPicker;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport Overlay from '../overlay';\nimport Input from '../input';\nimport Calendar from '../calendar';\nimport nextLocale from '../locale/zh-cn';\nimport { func, obj } from '../util';\nimport { checkDateValue, formatDateValue, onDateKeydown } from './util';\n\nconst { Popup } = Overlay;\n\n/**\n * DatePicker.YearPicker\n */\nclass YearPicker extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 输入框内置标签\n */\n label: PropTypes.node,\n /**\n * 输入框状态\n */\n state: PropTypes.oneOf(['success', 'loading', 'error']),\n /**\n * 输入提示\n */\n placeholder: PropTypes.string,\n /**\n * 日期值(受控)moment 对象\n */\n value: checkDateValue,\n /**\n * 初始日期值,moment 对象\n */\n defaultValue: checkDateValue,\n /**\n * 日期值的格式(用于限定用户输入和展示)\n */\n format: PropTypes.string,\n /**\n * 禁用日期函数\n * @param {MomentObject} 日期值\n * @param {String} view 当前视图类型,year: 年, month: 月, date: 日\n * @return {Boolean} 是否禁用\n */\n disabledDate: PropTypes.func,\n /**\n * 自定义面板页脚\n * @return {Node} 自定义的面板页脚组件\n */\n footerRender: PropTypes.func,\n /**\n * 日期值改变时的回调\n * @param {MomentObject|String} value 日期值\n */\n onChange: PropTypes.func,\n /**\n * 输入框尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 是否显示清空按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 弹层显示状态\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层展示状态变化时的回调\n * @param {Boolean} visible 弹层是否显示\n * @param {String} reason 触发弹层显示和隐藏的来源 calendarSelect 表示由日期表盘的选择触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 弹层触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层对齐方式, 具体含义见 OverLay文档\n */\n popupAlign: PropTypes.string,\n /**\n * 弹层容器\n * @param {Element} target 目标元素\n * @return {Element} 弹层的容器元素\n */\n popupContainer: PropTypes.func,\n /**\n * 弹层自定义样式\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层其他属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 输入框其他属性\n */\n inputProps: PropTypes.object,\n yearCellRender: PropTypes.func, // 兼容 0.x yearCellRender\n /**\n * 日期输入框的 aria-label 属性\n */\n dateInputAriaLabel: PropTypes.string,\n locale: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n format: 'YYYY',\n size: 'medium',\n disabledDate: () => false,\n footerRender: () => null,\n hasClear: true,\n popupTriggerType: 'click',\n popupAlign: 'tl bl',\n locale: nextLocale.DatePicker,\n onChange: func.noop,\n onVisibleChange: func.noop,\n };\n\n constructor(props, context) {\n super(props, context);\n\n const value = formatDateValue(props.value || props.defaultValue, props.format);\n\n this.inputAsString = typeof (props.value || props.defaultValue) === 'string'; // 判断用户输入是否是字符串\n this.state = {\n value,\n dateInputStr: '',\n inputing: false,\n visible: props.visible || props.defaultVisible,\n };\n this.popup = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n const value = formatDateValue(nextProps.value, nextProps.format || this.props.format);\n this.setState({\n value,\n });\n this.inputAsString = typeof nextProps.value === 'string';\n }\n\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n // 获取底层的overlay实例\n getOverlay = () => {\n return this.popup && this.popup.getInstance() && this.popup.getInstance().getOverlay();\n }\n\n onValueChange = newValue => {\n const ret = this.inputAsString && newValue ? newValue.format(this.props.format) : newValue;\n this.props.onChange(ret);\n };\n\n onSelectCalendarPanel = value => {\n // const { format } = this.props;\n const prevSelectedMonth = this.state.value;\n const selectedMonth = value\n .clone()\n .month(0)\n .date(1)\n .hour(0)\n .minute(0)\n .second(0);\n\n this.handleChange(selectedMonth, prevSelectedMonth, { inputing: false }, () => {\n this.onVisibleChange(false, 'calendarSelect');\n });\n };\n\n clearValue = () => {\n this.setState({\n dateInputStr: '',\n });\n\n this.handleChange(null, this.state.value);\n };\n\n onDateInputChange = (inputStr, e, eventType) => {\n if (eventType === 'clear' || !inputStr) {\n e.stopPropagation();\n this.clearValue();\n } else {\n this.setState({\n dateInputStr: inputStr,\n inputing: true,\n });\n }\n };\n\n onDateInputBlur = () => {\n const { dateInputStr } = this.state;\n if (dateInputStr) {\n const { disabledDate, format } = this.props;\n const parsed = moment(dateInputStr, format, true);\n\n this.setState({\n dateInputStr: '',\n inputing: false,\n });\n\n if (parsed.isValid() && !disabledDate(parsed, 'year')) {\n this.handleChange(parsed, this.state.value);\n }\n }\n };\n\n onKeyDown = e => {\n const { format } = this.props;\n const { dateInputStr, value } = this.state;\n const dateStr = onDateKeydown(e, { format, dateInputStr, value }, 'year');\n if (!dateStr) return;\n this.onDateInputChange(dateStr);\n };\n\n handleChange = (newValue, prevValue, others = {}, callback) => {\n if (!('value' in this.props)) {\n this.setState({\n value: newValue,\n ...others,\n });\n } else {\n this.setState({\n ...others,\n });\n }\n\n const { format } = this.props;\n\n const newValueOf = newValue ? newValue.format(format) : null;\n const preValueOf = prevValue ? prevValue.format(format) : null;\n\n if (newValueOf !== preValueOf) {\n this.onValueChange(newValue);\n if (typeof callback === 'function') {\n return callback();\n }\n }\n };\n\n onVisibleChange = (visible, reason) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, reason);\n };\n\n render() {\n const {\n prefix,\n rtl,\n locale,\n label,\n state,\n format,\n disabledDate,\n footerRender,\n placeholder,\n size,\n disabled,\n hasClear,\n popupTriggerType,\n popupAlign,\n popupContainer,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n className,\n inputProps,\n dateInputAriaLabel,\n yearCellRender,\n ...others\n } = this.props;\n\n const { visible, value, dateInputStr, inputing } = this.state;\n\n const yearPickerCls = classnames(\n {\n [`${prefix}year-picker`]: true,\n },\n className,\n );\n\n const triggerInputCls = classnames({\n [`${prefix}year-picker-input`]: true,\n [`${prefix}error`]: false,\n });\n\n const panelBodyClassName = classnames({\n [`${prefix}year-picker-body`]: true,\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const panelInputCls = `${prefix}year-picker-panel-input`;\n\n const sharedInputProps = {\n ...inputProps,\n size,\n disabled,\n onChange: this.onDateInputChange,\n onBlur: this.onDateInputBlur,\n onPressEnter: this.onDateInputBlur,\n onKeyDown: this.onKeyDown,\n };\n\n const dateInputValue = inputing ? dateInputStr : (value && value.format(format)) || '';\n const triggerInputValue = dateInputValue;\n\n const dateInput = (\n <Input\n {...sharedInputProps}\n hasClear\n size=\"xs\"\n aria-label={dateInputAriaLabel}\n value={dateInputValue}\n placeholder={format}\n className={panelInputCls}\n />\n );\n\n const datePanel = (\n <Calendar\n shape=\"panel\"\n modes={['year']}\n value={value}\n yearCellRender={yearCellRender}\n onSelect={this.onSelectCalendarPanel}\n disabledDate={disabledDate}\n />\n );\n\n const panelBody = datePanel;\n const panelFooter = footerRender();\n\n const allowClear = value && hasClear;\n const trigger = (\n <div className={`${prefix}year-picker-trigger`}>\n <Input\n {...sharedInputProps}\n label={label}\n state={state}\n value={triggerInputValue}\n role=\"combobox\"\n aria-expanded={visible}\n readOnly\n placeholder={placeholder || locale.yearPlaceholder}\n hint=\"calendar\"\n hasClear={allowClear}\n className={triggerInputCls}\n />\n </div>\n );\n\n return (\n <div {...obj.pickOthers(YearPicker.propTypes, others)} className={yearPickerCls}>\n <Popup\n offset={[0, 4]}\n {...popupProps}\n followTrigger={followTrigger}\n autoFocus\n ref={popup => { this.popup = popup; }}\n disabled={disabled}\n visible={visible}\n onVisibleChange={this.onVisibleChange}\n align={popupAlign}\n triggerType={popupTriggerType}\n container={popupContainer}\n style={popupStyle}\n className={popupClassName}\n trigger={trigger}\n >\n <div dir={others.dir} className={panelBodyClassName}>\n <div className={`${prefix}year-picker-panel-header`}>{dateInput}</div>\n {panelBody}\n {panelFooter}\n </div>\n </Popup>\n </div>\n );\n }\n}\n\nexport default YearPicker;\n","import ConfigProvider from '../config-provider';\nimport DatePicker from './date-picker';\nimport RangePicker from './range-picker';\nimport MonthPicker from './month-picker';\nimport YearPicker from './year-picker';\n\n/* istanbul ignore next */\nconst transform = (props, deprecated) => {\n const { open, defaultOpen, onOpenChange, ...others } = props;\n const newProps = others;\n\n delete newProps.formater;\n\n if ('open' in props) {\n deprecated('open', 'visible', 'DatePicker');\n\n newProps.visible = open;\n\n if ('visible' in props) {\n newProps.visible = props.visible;\n }\n }\n\n if ('defaultOpen' in props) {\n deprecated('defaultOpen', 'defaultVisible', 'DatePicker');\n\n newProps.defaultVisible = defaultOpen;\n\n if ('defaultVisible' in props) {\n newProps.defaultVisible = props.defaultVisible;\n }\n }\n\n if ('onOpenChange' in props && typeof onOpenChange === 'function') {\n deprecated('onOpenChange', 'onVisibleChange', 'DatePicker');\n\n newProps.onVisibleChange = onOpenChange;\n\n if ('onVisibleChange' in props) {\n newProps.onVisibleChange = props.onVisibleChange;\n }\n }\n\n if ('formater' in props) {\n deprecated('formater', 'format showTime.format', 'DatePicker');\n }\n\n if ('format' in props && typeof props.format !== 'string') {\n deprecated('format', 'format: PropTypes.string,', 'DatePicker');\n }\n\n if ('ranges' in props) {\n deprecated('ranges', 'footerRender: PropTypes.func', 'RangePicker');\n }\n\n return newProps;\n};\n\nDatePicker.RangePicker = ConfigProvider.config(RangePicker, {\n componentName: 'DatePicker',\n transform,\n});\nDatePicker.MonthPicker = ConfigProvider.config(MonthPicker, {\n componentName: 'DatePicker',\n transform,\n});\nDatePicker.YearPicker = ConfigProvider.config(YearPicker, {\n componentName: 'DatePicker',\n transform,\n});\n\nexport default ConfigProvider.config(DatePicker, {\n transform,\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Button from '../button';\nimport Loading from '../loading';\nimport zhCN from '../locale/zh-cn';\nimport { func, obj, guid } from '../util';\n\nconst { makeChain } = func;\nconst { pickAttrs } = obj;\nconst noop = () => {};\n\nexport default class Inner extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n size: PropTypes.oneOf(['small', 'medium']),\n title: PropTypes.node,\n children: PropTypes.node,\n footer: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n footerAlign: PropTypes.oneOf(['left', 'center', 'right']),\n footerActions: PropTypes.array,\n onOk: PropTypes.func,\n onCancel: PropTypes.func,\n okProps: PropTypes.object,\n cancelProps: PropTypes.object,\n closeable: PropTypes.bool,\n onClose: PropTypes.func,\n locale: PropTypes.object,\n role: PropTypes.string,\n rtl: PropTypes.bool,\n // set value for a fixed height dialog. Passing a value will absolutely position the footer to the bottom.\n height: PropTypes.string,\n /**\n * 没有内容区的padding\n */\n noBodyPadding: PropTypes.bool,\n /**\n * 是否处于加载状态\n */\n loading: PropTypes.bool,\n /**\n * 加载提示\n */\n loadingTip: PropTypes.node,\n };\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n footerAlign: 'right',\n footerActions: ['ok', 'cancel'],\n onOk: noop,\n onCancel: noop,\n okProps: {},\n cancelProps: {},\n closeable: true,\n onClose: noop,\n locale: zhCN.Dialog,\n role: 'dialog',\n noBodyPadding: false,\n loading: false,\n };\n\n getNode = (name, ref) => {\n this[name] = ref;\n }\n\n renderHeader = () => {\n const { prefix, title } = this.props;\n const closeLink = this.renderCloseLink();\n if (title) {\n this.titleId = guid('dialog-title-');\n return (\n <div\n className={`${prefix}dialog-header`}\n id={this.titleId}\n ref={this.getNode.bind(this, 'headerNode')}\n role=\"heading\"\n aria-level=\"1\"\n >\n {title}\n {closeLink}\n </div>\n );\n }\n return null;\n }\n\n renderBody = () => {\n const { prefix, children, noBodyPadding } = this.props;\n if (children) {\n return (\n <div\n className={cx({\n [`${prefix}dialog-body`]: true,\n [`${prefix}dialog-body-no-padding`]: noBodyPadding,\n })}\n ref={this.getNode.bind(this, 'bodyNode')}\n >\n {children}\n </div>\n );\n }\n return null;\n }\n\n renderFooter = () => {\n const { prefix, footer, footerAlign, footerActions, locale, height } = this.props;\n\n if (footer === false) {\n return null;\n }\n\n const newClassName = cx({\n [`${prefix}dialog-footer`]: true,\n [`${prefix}align-${footerAlign}`]: true,\n [`${prefix}dialog-footer-fixed-height`]: !!height,\n });\n const footerContent =\n footer === true || !footer\n ? footerActions.map(action => {\n const btnProps = this.props[`${action}Props`];\n const newBtnProps = {\n ...btnProps,\n prefix,\n className: cx(`${prefix}dialog-btn`, btnProps.className),\n onClick: makeChain(\n this.props[`on${action[0].toUpperCase() + action.slice(1)}`],\n btnProps.onClick,\n ),\n children: btnProps.children || locale[action],\n };\n if (action === 'ok') {\n newBtnProps.type = 'primary';\n }\n\n return <Button key={action} {...newBtnProps} />;\n })\n : footer;\n\n return (\n <div className={newClassName} ref={this.getNode.bind(this, 'footerNode')}>\n {footerContent}\n </div>\n );\n }\n\n renderCloseLink = () => {\n const { prefix, closeable, onClose, locale } = this.props;\n\n if (closeable) {\n return (\n <a\n role=\"button\"\n aria-label={locale.close}\n href=\"javascript:;\"\n className={`${prefix}dialog-close`}\n onClick={onClose}\n >\n <Button.Icon\n type=\"primary\"\n color=\"gray\"\n className={`${prefix}dialog-close-icon`}\n name=\"remove\"\n />\n </a>\n );\n }\n\n return null;\n }\n\n render() {\n const {\n prefix,\n className,\n size,\n closeable,\n title,\n role,\n rtl,\n height,\n loading,\n loadingTip,\n ...others\n } = this.props;\n const newClassName = cx({\n [`${prefix}dialog`]: true,\n [`${prefix}dialog-${size}`]: true,\n [`${prefix}closeable`]: closeable,\n [className]: !!className,\n });\n\n const header = this.renderHeader();\n const body = this.renderBody();\n const footer = this.renderFooter();\n\n const ariaProps = {\n role,\n 'aria-modal': 'true',\n };\n if (title) {\n ariaProps['aria-labelledby'] = this.titleId;\n }\n\n others.style = Object.assign({}, others.style, { height });\n\n return (\n <div {...ariaProps} className={newClassName} {...pickAttrs(others)} dir={rtl ? 'rtl' : undefined}>\n <Loading visible={loading} tip={loadingTip} inline={false}>\n {header}\n {body}\n {footer}\n </Loading>\n </div>\n );\n }\n}\n\n","export const Region = {\n LeftTop: 'LeftTop',\n Top: 'Top',\n RightTop: 'RightTop',\n LeftBottom: 'LeftBottom',\n Bottom: 'Bottom',\n RightBottom: 'RightBottom',\n};\n\nconst RegionMap = [\n [Region.LeftTop, Region.Top, Region.RightTop],\n [Region.LeftBottom, Region.Bottom, Region.RightBottom],\n];\n\nconst getRelativePos = absPos => {\n const { scrollLeft, scrollTop } = document.documentElement;\n return {\n x: absPos.x - scrollLeft,\n y: absPos.y - scrollTop,\n };\n};\n\n/**\n * 获取坐标所在区域\n * @param {object} absPos\n * @param {number} absPos.x\n * @param {number} absPos.y\n * @returns {string} Region\n */\nexport const getPosRegion = absPos => {\n const { clientWidth, clientHeight } = document.body;\n const pos = getRelativePos(absPos);\n const rows = RegionMap.length;\n const cols = RegionMap[0].length;\n const uw = clientWidth / cols;\n const uh = clientHeight / rows;\n\n let rowIdx = 0;\n let colIdx = 0;\n\n for (let i = 0; i < cols; i++) {\n if (pos.x >= uw * i) {\n colIdx = i;\n }\n }\n\n for (let j = 0; j < rows; j++) {\n if (pos.y >= uh * j) {\n rowIdx = j;\n }\n }\n\n return RegionMap[rowIdx][colIdx];\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from '../overlay';\nimport zhCN from '../locale/zh-cn';\nimport { focus, obj, events, dom } from '../util';\nimport Inner from './inner';\nimport { getPosRegion } from './util';\n\nconst noop = () => {};\nconst { limitTabRange } = focus;\nconst { pickOthers } = obj;\nconst { getStyle, setStyle } = dom;\nlet mousePosition = {};\n\nconst getClickPosition = e => {\n mousePosition = {\n x: e.pageX,\n y: e.pageY,\n };\n // 100ms 内发生过点击事件,则从点击位置动画展示\n // 否则直接 zoom 展示\n // 这样可以兼容非点击方式展开\n // setTimeout(() => {\n // mousePosition = null;\n // }, 100);\n};\n\n// 只有点击事件支持从鼠标位置动画展开\nif (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n document.documentElement.addEventListener('click', getClickPosition);\n}\n/**\n * Dialog\n */\nexport default class Dialog extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 是否显示\n */\n visible: PropTypes.bool,\n /**\n * 标题\n */\n title: PropTypes.node,\n /**\n * 内容\n */\n children: PropTypes.node,\n /**\n * 底部内容,设置为 false,则不进行显示\n * @default [<Button type=\"primary\">确定</Button>, <Button>取消</Button>]\n */\n footer: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n /**\n * 底部按钮的对齐方式\n */\n footerAlign: PropTypes.oneOf(['left', 'center', 'right']),\n /**\n * 指定确定按钮和取消按钮是否存在以及如何排列,<br><br>**可选值**:\n * ['ok', 'cancel'](确认取消按钮同时存在,确认按钮在左)\n * ['cancel', 'ok'](确认取消按钮同时存在,确认按钮在右)\n * ['ok'](只存在确认按钮)\n * ['cancel'](只存在取消按钮)\n */\n footerActions: PropTypes.array,\n /**\n * 在点击确定按钮时触发的回调函数\n * @param {Object} event 点击事件对象\n */\n onOk: PropTypes.func,\n /**\n * 在点击取消按钮时触发的回调函数\n * @param {Object} event 点击事件对象\n */\n onCancel: PropTypes.func,\n /**\n * 应用于确定按钮的属性对象\n */\n okProps: PropTypes.object,\n /**\n * 应用于取消按钮的属性对象\n */\n cancelProps: PropTypes.object,\n /**\n * 控制对话框关闭的方式,值可以为字符串或者布尔值,其中字符串是由以下值组成:\n * **close** 表示点击关闭按钮可以关闭对话框\n * **mask** 表示点击遮罩区域可以关闭对话框\n * **esc** 表示按下 esc 键可以关闭对话框\n * 如 'close' 或 'close,esc,mask'\n * 如果设置为 true,则以上关闭方式全部生效\n * 如果设置为 false,则以上关闭方式全部失效\n */\n closeable: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n /**\n * 对话框关闭时触发的回调函数\n * @param {String} trigger 关闭触发行为的描述字符串\n * @param {Object} event 关闭时事件对象\n */\n onClose: PropTypes.func,\n /**\n * 对话框关闭后触发的回调函数, 如果有动画,则在动画结束后触发\n */\n afterClose: PropTypes.func,\n /**\n * 是否显示遮罩\n */\n hasMask: PropTypes.bool,\n /**\n * 显示隐藏时动画的播放方式\n * @property {String} in 进场动画\n * @property {String} out 出场动画\n */\n animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n /**\n * 对话框弹出时是否自动获得焦点\n */\n autoFocus: PropTypes.bool,\n /**\n * 对话框距离浏览器顶部和底部的最小间距\n */\n minMargin: PropTypes.number,\n /**\n * 透传到弹层组件的属性对象\n */\n overlayProps: PropTypes.object,\n /**\n * 自定义国际化文案对象\n * @property {String} ok 确认按钮文案\n * @property {String} cancel 取消按钮文案\n */\n locale: PropTypes.object,\n /**\n * 对话框的高度样式属性\n */\n height: PropTypes.string,\n /**\n * 没有内容区的padding\n */\n noBodyPadding: PropTypes.bool,\n /**\n * 是否处于加载状态\n */\n loading: PropTypes.bool,\n /**\n * 加载提示\n */\n loadingTip: PropTypes.node,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n size: 'medium',\n visible: false,\n footerAlign: 'right',\n footerActions: ['cancel', 'ok'],\n onOk: noop,\n onCancel: noop,\n okProps: {},\n cancelProps: {},\n closeable: 'esc,close,mask',\n onClose: noop,\n afterClose: noop,\n hasMask: true,\n autoFocus: false,\n minMargin: 56,\n overlayProps: {},\n locale: zhCN.Dialog,\n noBodyPadding: false,\n loading: false,\n };\n\n static fallbackAnimation = {\n in: 'fadeInDown',\n out: 'fadeOutUp',\n };\n\n constructor(props) {\n super(props);\n this.resizeTimeout = null;\n this.lastBodyHeight = 0;\n this.mousePosition = { ...mousePosition };\n }\n\n componentDidMount() {\n events.on(document, 'keydown', this.onKeyDown);\n events.on(window, 'resize', this.handleResize);\n this.resizeTimeout = setTimeout(() => {\n this.adjustPosition();\n this.lastBodyHeight = this.getBodyHeight();\n });\n this.mousePosition = { ...mousePosition };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n // 显式置零this.lastBodyHeight,否则如果显式设置bodyHeight(通过height属性或者样式)\n // 那么在重新显示时,会因为componentDidUpdate中定位触发条件不满足而不进行定位调整\n if (!nextProps.visible) {\n this.lastBodyHeight = 0;\n }\n\n if (nextProps.visible && !this.props.visible) {\n this.mousePosition = { ...mousePosition };\n }\n }\n\n componentDidUpdate(preProps) {\n // 如何让可滚动内容滚动到顶部:滚动一段距离,设置overflow使其不滚动,正常展开,再设置可滚动(下面adjustPosition逻辑),即可滚动到顶部(双刃剑)\n // 加层判断,防止重新渲染时滚到页面顶部\n const bodyHeight = this.getBodyHeight();\n if (\n this.props.visible &&\n (preProps.minMargin !== this.props.minMargin || bodyHeight !== this.lastBodyHeight)\n ) {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.adjustPosition();\n // const node = this.getInnerNode();\n // const elOffset = offset(node);\n // setTransformOrigin(\n // node,\n // `${mousePosition.x - elOffset.left}px ${mousePosition.y - elOffset.top + 100}px`,\n // );\n this.lastBodyHeight = this.getBodyHeight();\n });\n }\n }\n\n componentWillUnmount() {\n events.off(document, 'keydown', this.onKeyDown);\n events.off(window, 'resize', this.handleResize);\n\n clearTimeout(this.resizeTimeout);\n }\n\n getBodyMinHeight = () => {\n const { size } = this.props;\n if (size === 'small') {\n return 168;\n }\n return 224;\n };\n\n getBodyHeight = () => {\n const { visible } = this.props;\n const inner = this.getInner();\n if (visible && inner) {\n const { bodyNode } = inner;\n const bodyHeight = bodyNode ? bodyNode.offsetHeight : 0;\n return bodyHeight;\n }\n return 0;\n };\n\n handleResize = () => {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.adjustPosition();\n }, 200);\n };\n\n onKeyDown = e => {\n const node = this.getInnerNode();\n if (node) {\n limitTabRange(node, e);\n }\n };\n\n adjustPosition = () => {\n const { minMargin, visible, className, prefix } = this.props;\n const inner = this.getInner();\n const isQuick = className && className.includes(`${prefix}dialog-quick`);\n if (visible && inner) {\n const innerNode = this.getInnerNode();\n const { headerNode, bodyNode, footerNode } = inner;\n // 先去除掉高度限制,重置补偿外边距\n bodyNode &&\n setStyle(bodyNode, {\n 'min-height': 'none',\n 'max-height': 'none',\n 'margin-right': 0,\n });\n setStyle(innerNode, {\n left: `calc(50% - ${getStyle(innerNode, 'width') / 2}px)`,\n top: `${minMargin}px`,\n });\n // 快捷调用不适用该规则\n if (!isQuick) {\n bodyNode &&\n setStyle(bodyNode, {\n 'min-height': `${this.getBodyMinHeight()}px`,\n });\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const headerHeight = headerNode ? getStyle(headerNode, 'height') : 0;\n const bodyHeight = bodyNode ? getStyle(bodyNode, 'height') : 0;\n const footerHeight = footerNode ? getStyle(footerNode, 'height') : 0;\n if (viewportHeight - headerHeight - bodyHeight - footerHeight < 2 * minMargin) {\n bodyNode &&\n setStyle(bodyNode, {\n 'max-height': `${Math.max(\n viewportHeight - headerHeight - 2 * minMargin - footerHeight,\n 0,\n )}px`,\n });\n }\n // 添加滚动条宽度补偿\n if (\n bodyHeight > viewportHeight - headerHeight - 2 * minMargin - footerHeight &&\n bodyHeight > this.getBodyMinHeight()\n ) {\n bodyNode &&\n setStyle(bodyNode, {\n 'overflow-y': 'auto',\n 'margin-right': `-${dom.scrollbar().width}px`,\n });\n }\n }\n }\n };\n\n mapcloseableToConfig = closeable => {\n return ['esc', 'close', 'mask'].reduce((ret, option) => {\n const key = option.charAt(0).toUpperCase() + option.substr(1);\n const value =\n typeof closeable === 'boolean' ? closeable : closeable.split(',').indexOf(option) > -1;\n\n if (option === 'esc' || option === 'mask') {\n ret[`canCloseBy${key}`] = value;\n } else {\n ret[`canCloseBy${key}Click`] = value;\n }\n\n return ret;\n }, {});\n };\n\n getOverlayRef = ref => {\n this.overlay = ref;\n };\n\n getInner = () => {\n if (this.overlay && this.overlay.getInstance()) {\n return this.overlay.getInstance().getContent();\n }\n };\n\n getInnerNode = () => {\n if (this.overlay && this.overlay.getInstance()) {\n return this.overlay.getInstance().getContentNode();\n }\n };\n\n renderInner = closeable => {\n const {\n prefix,\n className,\n size,\n title,\n children,\n footer,\n footerAlign,\n footerActions,\n onOk,\n onCancel,\n okProps,\n cancelProps,\n onClose,\n locale,\n visible,\n rtl,\n height,\n noBodyPadding,\n loading,\n loadingTip,\n } = this.props;\n const others = pickOthers(Object.keys(Dialog.propTypes), this.props);\n\n return (\n <Inner\n prefix={prefix}\n className={className}\n size={size}\n title={title}\n footer={footer}\n footerAlign={footerAlign}\n footerActions={footerActions}\n onOk={visible ? onOk : noop}\n onCancel={visible ? onCancel : noop}\n okProps={okProps}\n cancelProps={cancelProps}\n locale={locale}\n closeable={closeable}\n rtl={rtl}\n onClose={onClose.bind(this, 'closeClick')}\n height={height}\n noBodyPadding={noBodyPadding}\n loading={loading}\n loadingTip={loadingTip}\n {...others}\n >\n {children}\n </Inner>\n );\n };\n\n getAnimation = () => {\n if (this.props.animation !== undefined) {\n return this.props.animation;\n }\n\n if (this.mousePosition.x === undefined || this.mousePosition.y === undefined) {\n return Dialog.fallbackAnimation;\n }\n\n const regin = getPosRegion(this.mousePosition);\n\n return {\n in: `${this.props.prefix}dialog-zoomIn${regin}`,\n out: `${this.props.prefix}dialog-zoomOut${regin}`,\n };\n };\n\n render() {\n const {\n prefix,\n visible,\n hasMask,\n autoFocus,\n closeable,\n onClose,\n afterClose,\n overlayProps,\n rtl,\n } = this.props;\n\n const animation = this.getAnimation();\n const { canCloseByCloseClick, ...closeConfig } = this.mapcloseableToConfig(closeable);\n const newOverlayProps = {\n ...overlayProps,\n prefix,\n visible,\n animation,\n hasMask,\n autoFocus,\n afterClose,\n ...closeConfig,\n align: false,\n canCloseByOutSideClick: false,\n onRequestClose: onClose,\n needAdjust: false,\n needListenResize: false,\n disableScroll: true,\n ref: this.getOverlayRef,\n rtl,\n };\n\n const inner = this.renderInner(canCloseByCloseClick);\n // setTransformOrigin(inner, `${mousePosition.x}px ${mousePosition.y}px`);\n return <Overlay {...newOverlayProps}>{inner}</Overlay>;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Dialog from './dialog';\nimport ConfigProvider from '../config-provider';\nimport Button from '../button';\n\nconst noop = () => {};\n\nclass StepDialog extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 是否显示\n */\n visible: PropTypes.bool,\n /**\n * 内容\n */\n children: PropTypes.node,\n /**\n * 应用于取消按钮的属性对象\n */\n cancelProps: PropTypes.object,\n /**\n * 控制对话框关闭的方式,值可以为字符串或者布尔值,其中字符串是由以下值组成:\n * **close** 表示点击关闭按钮可以关闭对话框\n * **mask** 表示点击遮罩区域可以关闭对话框\n * **esc** 表示按下 esc 键可以关闭对话框\n * 如 'close' 或 'close,esc,mask'\n * 如果设置为 true,则以上关闭方式全部生效\n * 如果设置为 false,则以上关闭方式全部失效\n */\n closeable: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n /**\n * 对话框关闭时触发的回调函数\n * @param {String} trigger 关闭触发行为的描述字符串\n * @param {Object} event 关闭时事件对象\n */\n onClose: PropTypes.func,\n /**\n * 对话框关闭后触发的回调函数, 如果有动画,则在动画结束后触发\n */\n afterClose: PropTypes.func,\n /**\n * 是否显示遮罩\n */\n hasMask: PropTypes.bool,\n /**\n * 显示隐藏时动画的播放方式\n * @property {String} in 进场动画\n * @property {String} out 出场动画\n */\n animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n /**\n * 对话框弹出时是否自动获得焦点\n */\n autoFocus: PropTypes.bool,\n /**\n * 对话框对齐方式, 具体见Overlay文档\n */\n align: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n /**\n * 当对话框高度超过浏览器视口高度时,是否显示所有内容而不是出现滚动条以保证对话框完整显示在浏览器视口内,该属性仅在对话框垂直水平居中时生效,即 align 被设置为 'cc cc' 时\n */\n isFullScreen: PropTypes.bool,\n /**\n * 是否在对话框重新渲染时及时更新对话框位置,一般用于对话框高度变化后依然能保证原来的对齐方式\n */\n shouldUpdatePosition: PropTypes.bool,\n /**\n * 对话框距离浏览器顶部和底部的最小间距,align 被设置为 'cc cc' 并且 isFullScreen 被设置为 true 时不生效\n */\n minMargin: PropTypes.number,\n /**\n * 透传到弹层组件的属性对象\n */\n overlayProps: PropTypes.object,\n /**\n * 对话框的高度样式属性\n */\n height: PropTypes.string,\n /**\n * 没有内容区的padding\n */\n noBodyPadding: PropTypes.bool,\n /**\n * 当前步骤屏id,受控\n */\n current: PropTypes.string,\n /**\n * 默认步骤屏id,非受控\n */\n defaultCurrent: PropTypes.string,\n /**\n * 步骤屏发生变化时的回调\n */\n onStepChange: PropTypes.func,\n /**\n * 是否处于加载状态\n */\n loading: PropTypes.bool,\n /**\n * 加载内容\n */\n loadingTip: PropTypes.node,\n };\n\n static defaultProps = {\n prefix: 'next-',\n visible: false,\n closeable: 'esc,close',\n onClose: noop,\n afterClose: noop,\n hasMask: true,\n animation: {\n in: 'fadeInDown',\n out: 'fadeOutUp',\n },\n autoFocus: false,\n align: 'cc cc',\n isFullScreen: false,\n shouldUpdatePosition: false,\n minMargin: 40,\n overlayProps: {},\n noBodyPadding: false,\n onStepChange: noop,\n loading: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n current: props.current || props.defaultCurrent,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.current !== this.props.current) {\n this.setState({\n current: nextProps.current,\n });\n }\n }\n\n onStepChange = current => {\n if (!('current' in this.props)) {\n this.setState({\n current,\n });\n }\n this.props.onStepChange(current);\n };\n\n getViewMeta = () => {\n const { children } = this.props;\n const meta = [];\n React.Children.forEach(children, c => {\n if (c) {\n meta.push({\n id: c.props.id,\n title: c.props.title,\n footer: c.props.footer,\n });\n }\n });\n return meta;\n };\n\n checkView = () => {\n const { children } = this.props;\n let isView = true;\n if (children === null) {\n return false;\n }\n React.Children.forEach(children, c => {\n if (c && c.type && c.type.displayName !== 'StepView') {\n isView = false;\n }\n });\n return isView;\n };\n\n render() {\n if (!this.checkView()) {\n return null;\n }\n const { children, prefix } = this.props;\n const metas = this.getViewMeta();\n const { current } = this.state;\n const meta = metas.find(m => m.id === current) || {};\n const index = metas.findIndex(m => m.id === current);\n const child = React.Children.toArray(children).find(c => c.props.id === current);\n const title =\n index === 0 ? (\n <span>{meta.title}</span>\n ) : (\n /* eslint no-script-url: 1 */\n <span>\n <a role=\"button\" href=\"javascript:;\" className={`${prefix}dialog-prev`}>\n <Button.Icon\n name=\"chevron-left\"\n type=\"primary\"\n color=\"gray\"\n onClick={this.onStepChange.bind(this, metas[index - 1].id)}\n />\n </a>\n <span>{meta.title}</span>\n </span>\n );\n return (\n <Dialog {...this.props} title={title} footer={meta.footer}>\n {child}\n </Dialog>\n );\n }\n}\n\nexport default ConfigProvider.config(StepDialog);\n","/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ConfigProvider from '../config-provider';\n\nclass StepView extends React.Component {\n render() {\n const { prefix, children } = this.props;\n return (\n <div\n className={`${prefix}step-dialog-view`}\n >\n {children}\n </div>\n );\n }\n}\n\nStepView.propTypes = {\n prefix: PropTypes.string,\n id: PropTypes.string.isRequired,\n title: PropTypes.node.isRequired,\n footer: PropTypes.node,\n children: PropTypes.node,\n};\n\nStepView.defaultProps = {\n prefix: 'next-',\n};\n\nconst Configed = ConfigProvider.config(StepView);\nConfiged.displayName = 'StepView';\n\nexport default Configed;\n","/* eslint-disable no-script-url */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport nextLocale from '../locale/zh-cn';\nimport Icon from '../icon';\nimport Animate from '../animate';\nimport Button from '../button';\nimport ConfigProvider from '../config-provider';\n\nconst noop = () => {};\nconst shapeToIcon = {\n success: 'tick-o-fill',\n warning: 'warning-o-fill',\n notice: 'info-o-fill',\n loading: 'loading',\n error: 'remove-o-fill',\n};\n\n/**\n * Message\n */\nclass Message extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.object,\n /**\n * 反馈类型\n */\n type: PropTypes.oneOf(['success', 'warning', 'error', 'notice', 'help', 'loading']),\n /**\n * 反馈外观\n */\n shape: PropTypes.oneOf(['inline', 'addon', 'toast', 'global']),\n /**\n * 反馈大小\n */\n size: PropTypes.oneOf(['medium', 'large']),\n /**\n * 标题\n */\n title: PropTypes.node,\n /**\n * 内容\n */\n children: PropTypes.node,\n /**\n * 默认是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 当前是否显示\n */\n visible: PropTypes.bool,\n /**\n * 显示的图标类型,会覆盖内部设置的IconType\n */\n iconType: PropTypes.string,\n /**\n * 操作行动点,文字或者 JSX.Element\n */\n handler: PropTypes.string,\n /**\n * 显示关闭按钮\n */\n closeable: PropTypes.bool,\n /**\n * 关闭按钮的回调\n */\n onClose: PropTypes.func,\n /**\n * 关闭之后调用的函数\n */\n afterClose: PropTypes.func,\n /**\n * 点击行动点的回掉\n */\n onClickHandler: PropTypes.func,\n /**\n * 是否开启展开收起动画\n */\n animation: PropTypes.bool,\n locale: PropTypes.object,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n type: 'success',\n shape: 'inline',\n size: 'medium',\n defaultVisible: true,\n closeable: false,\n onClose: noop,\n afterClose: noop,\n animation: true,\n locale: nextLocale.Message,\n };\n\n state = {\n visible:\n typeof this.props.visible === 'undefined' ? this.props.defaultVisible : this.props.visible,\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n onClose = () => {\n if (!('visible' in this.props)) {\n this.setState({\n visible: false,\n });\n }\n this.props.onClose(false);\n };\n\n globalButton = (messagePrefix) => {\n const { type, onClickHandler, handler } = this.props;\n const cls = `${messagePrefix}-handler`;\n\n switch (type) {\n case 'error':\n return <Button className={cls} type=\"normal\" size=\"xs\" warning onClick={onClickHandler}>{handler}</Button>;\n case 'help':\n return <Button className={cls} type=\"primary\" size=\"xs\" onClick={onClickHandler}>{handler}</Button>;\n default:\n return <Button className={cls} type=\"normal\" size=\"xs\" onClick={onClickHandler}>{handler}</Button>;\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n prefix,\n pure,\n className,\n type,\n shape,\n size,\n title,\n children,\n defaultVisible,\n visible: propsVisible,\n iconType: icon,\n handler,\n closeable,\n onClose,\n afterClose,\n onClickHandler,\n animation,\n rtl,\n locale,\n ...others\n } = this.props;\n /* eslint-enable */\n const { visible } = this.state;\n const messagePrefix = `${prefix}message`;\n\n const classes = classNames({\n [messagePrefix]: true,\n [`${prefix}message-${type}`]: type,\n [`${prefix}${shape}`]: shape,\n [`${prefix}${size}`]: size && shape !== 'global',\n [`${prefix}title-content`]: !!title,\n [`${prefix}only-content`]: !title && !!children && shape !== 'global',\n [className]: className,\n });\n\n const content = shape === 'global'\n ? (\n <div className={`${messagePrefix}-content-wrapper`}>\n {children ? <div className={`${messagePrefix}-content`}>{children}</div> : null}\n {handler ? this.globalButton(messagePrefix) : null }\n </div>\n )\n : (\n <div className={`${messagePrefix}-content-wrapper`}>\n <div className={`${messagePrefix}-title-wrapper`}>\n {title ? <div className={`${messagePrefix}-title`}>{title}</div> : null}\n {handler ? <Button className={`${messagePrefix}-handler`} text type=\"primary\" onClick={onClickHandler}>{handler}</Button> : null }\n </div>\n {children ? <div className={`${messagePrefix}-content`}>{children}</div> : null}\n </div>\n );\n\n const newChildren = visible ? (\n <div role=\"alert\" {...others} className={classes} dir={rtl ? 'rtl' : undefined}>\n {shape !== 'global' ? <Icon className={`${messagePrefix}-symbol ${!icon && `${messagePrefix}-symbol-icon`}`} type={icon || shapeToIcon[type] || 'info-o-fill'} /> : null}\n {content}\n {closeable ? (\n <a\n role=\"button\"\n aria-label={locale.closeAriaLabel}\n href=\"javascript:;\"\n className={`${messagePrefix}-close`}\n onClick={this.onClose}\n >\n <Icon type=\"remove\" />\n </a>\n ) : null}\n </div>\n ) : null;\n\n if (animation) {\n return (\n <Animate.Expand animationAppear={false} afterLeave={afterClose}>\n {newChildren}\n </Animate.Expand>\n );\n }\n\n return newChildren;\n }\n}\n\nexport default ConfigProvider.config(Message);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport Overlay from '../overlay';\nimport ConfigProvider from '../config-provider';\nimport { guid } from '../util';\nimport Message from './message';\n\nconst { config } = ConfigProvider;\n\nlet instance;\nconst timeouts = {};\n\nclass Mask extends React.Component {\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n static propTypes = {\n prefix: PropTypes.string,\n type: PropTypes.string,\n title: PropTypes.node,\n content: PropTypes.node,\n align: PropTypes.string,\n offset: PropTypes.array,\n hasMask: PropTypes.bool,\n afterClose: PropTypes.func,\n animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n overlayProps: PropTypes.object,\n onClose: PropTypes.func,\n timeoutId: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n align: 'tc tc',\n offset: [0, 30],\n hasMask: false,\n animation: {\n in: 'pulse',\n out: 'zoomOut',\n },\n };\n\n state = {\n visible: true,\n };\n\n componentWillUnmount() {\n const { timeoutId } = this.props;\n\n if (timeoutId in timeouts) {\n const timeout = timeouts[timeoutId];\n clearTimeout(timeout);\n delete timeouts[timeoutId];\n }\n }\n\n handleClose = (silent = false) => {\n this.setState({\n visible: false,\n });\n\n if (!silent) {\n this.props.onClose && this.props.onClose();\n }\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n prefix,\n type,\n title,\n content,\n align,\n offset,\n hasMask,\n afterClose,\n animation,\n overlayProps,\n timeoutId,\n ...others\n } = this.props;\n /* eslint-enable */\n const { visible } = this.state;\n return (\n <Overlay\n {...overlayProps}\n prefix={prefix}\n animation={animation}\n visible={visible}\n align={align}\n offset={offset}\n hasMask={hasMask}\n afterClose={afterClose}\n >\n <Message\n {...others}\n prefix={prefix}\n visible\n type={type}\n shape=\"toast\"\n title={title}\n className={`${prefix}message-wrapper`}\n onClose={this.handleClose}\n >\n {content}\n </Message>\n </Overlay>\n );\n }\n}\n\nconst NewMask = config(Mask);\n\nconst create = props => {\n /* eslint-disable no-unused-vars */\n const { duration, afterClose, ...others } = props;\n /* eslint-enable no-unused-vars */\n\n const div = document.createElement('div');\n document.body.appendChild(div);\n const closeChain = function() {\n ReactDOM.unmountComponentAtNode(div);\n document.body.removeChild(div);\n afterClose && afterClose();\n };\n\n const newContext = ConfigProvider.getContext();\n\n let mask,\n myRef,\n destroyed = false;\n const destroy = () => {\n const inc = mask && mask.getInstance();\n inc && inc.handleClose(true);\n destroyed = true;\n };\n\n ReactDOM.render(\n <ConfigProvider {...newContext}>\n <NewMask\n afterClose={closeChain}\n {...others}\n ref={ref => {\n myRef = ref;\n }}\n />\n </ConfigProvider>,\n div,\n function() {\n mask = myRef;\n if (mask && destroyed) {\n destroy();\n }\n },\n );\n\n return {\n component: mask,\n destroy,\n };\n};\n\nfunction handleConfig(config, type) {\n let newConfig = {};\n\n if (typeof config === 'string' || React.isValidElement(config)) {\n newConfig.title = config;\n } else if (isObject(config)) {\n newConfig = { ...config };\n }\n if (typeof newConfig.duration !== 'number') {\n newConfig.duration = 3000;\n }\n if (type) {\n newConfig.type = type;\n }\n\n return newConfig;\n}\n\nfunction isObject(obj) {\n return {}.toString.call(obj) === '[object Object]';\n}\n\nfunction open(config, type) {\n close();\n config = handleConfig(config, type);\n const timeoutId = guid();\n instance = create({ ...config, timeoutId });\n\n if (config.duration > 0) {\n const timeout = setTimeout(close, config.duration);\n timeouts[timeoutId] = timeout;\n }\n}\n\nfunction close() {\n if (instance) {\n instance.destroy();\n instance = null;\n }\n}\n\n/**\n * 创建提示弹层\n * @exportName show\n * @param {Object} props 属性对象\n */\nfunction show(config) {\n open(config);\n}\n\n/**\n * 关闭提示弹层\n * @exportName hide\n */\nfunction hide() {\n close();\n}\n\n/**\n * 创建成功提示弹层\n * @exportName success\n * @param {Object} props 属性对象\n */\nfunction success(config) {\n open(config, 'success');\n}\n\n/**\n * 创建警告提示弹层\n * @exportName warning\n * @param {Object} props 属性对象\n */\nfunction warning(config) {\n open(config, 'warning');\n}\n\n/**\n * 创建错误提示弹层\n * @exportName error\n * @param {Object} props 属性对象\n */\nfunction error(config) {\n open(config, 'error');\n}\n\n/**\n * 创建帮助提示弹层\n * @exportName help\n * @param {Object} props 属性对象\n */\nfunction help(config) {\n open(config, 'help');\n}\n\n/**\n * 创建加载中提示弹层\n * @exportName loading\n * @param {Object} props 属性对象\n */\nfunction loading(config) {\n open(config, 'loading');\n}\n\n/**\n * 创建通知提示弹层\n * @exportName notice\n * @param {Object} props 属性对象\n */\nfunction notice(config) {\n open(config, 'notice');\n}\n\nexport default {\n show,\n hide,\n success,\n warning,\n error,\n help,\n loading,\n notice,\n};\n","import ConfigProvider from '../config-provider';\nimport Message from './message';\nimport toast from './toast';\n\nMessage.show = toast.show;\nMessage.success = toast.success;\nMessage.warning = toast.warning;\nMessage.error = toast.error;\nMessage.notice = toast.notice;\nMessage.help = toast.help;\nMessage.loading = toast.loading;\nMessage.hide = toast.hide;\n\nexport default ConfigProvider.config(Message, {\n componentName: 'Message',\n});\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport Message from '../message';\nimport Button from '../button';\nimport zhCN from '../locale/zh-cn';\nimport dialog from './dialog';\n\nconst Dialog = ConfigProvider.config(dialog);\n\nconst noop = () => {};\n\nexport const ModalInner = function ({\n type,\n messageProps = {},\n title,\n rtl,\n prefix = 'next-',\n content,\n}) {\n return (\n <Message\n {...messageProps}\n closeable={false}\n shape=\"addon\"\n size=\"large\"\n type={type}\n title={title}\n rtl={rtl}\n className={cx(`${prefix}dialog-message`, messageProps.className)}\n >\n {content}\n </Message>\n );\n};\n\nclass Modal extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n type: PropTypes.string,\n title: PropTypes.node,\n content: PropTypes.node,\n messageProps: PropTypes.object,\n footerActions: PropTypes.array,\n /**\n * Callback function triggered when Ok button is clicked\n * @param {Object} event click event object\n * @returns {Promise} Optionally handles a Promise return object\n */\n onOk: PropTypes.func,\n /**\n * Callback function triggered when Cancel button is clicked\n * @param {Object} event click event object\n * @returns {Promise} Optionally handles a Promise return object\n */\n onCancel: PropTypes.func,\n /**\n * Callback function triggered when Close button is clicked\n * @param {Object} event click event object\n * @returns {Promise} Optionally handles a Promise return object\n */\n onClose: PropTypes.func,\n okProps: PropTypes.object,\n locale: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n type: 'notice',\n pure: false,\n messageProps: {},\n onOk: noop,\n onCancel: noop,\n onClose: noop,\n okProps: {},\n locale: zhCN.Dialog,\n };\n\n state = {\n visible: true,\n loading: false,\n };\n\n close = () => {\n this.setState({\n visible: false,\n });\n };\n\n loading = loading => {\n this.setState({\n loading,\n });\n };\n\n wrapper(fn, callback) {\n return () => {\n const res = fn();\n if (res && res.then) {\n this.loading(true);\n\n res\n .then(result => {\n this.loading(false);\n\n if (result !== false) {\n return callback();\n }\n })\n .catch(e => {\n this.loading(false);\n throw e;\n });\n } else if (res !== false) {\n return callback();\n }\n };\n }\n\n render() {\n const {\n prefix,\n type,\n title,\n content,\n messageProps,\n footerActions,\n onOk,\n onCancel,\n onClose,\n okProps,\n rtl,\n className,\n ...others\n } = this.props;\n\n const newFooterActions = footerActions || ['cancel', 'ok'];\n const newOnOk = this.wrapper(onOk, this.close);\n const newOnCancel = this.wrapper(onCancel, this.close);\n const newOnClose = this.wrapper(onClose, this.close);\n const newTitle = (\n <div className={`${prefix}dialog-quick-header`}>\n <span className={`${prefix}dialog-quick-title`}>{title}</span>\n <Button.Icon type=\"primary\" name=\"remove\" onClick={newOnClose} color=\"gray\" />\n </div>\n );\n const newContent =\n type ? (\n <ModalInner\n messageProps={messageProps}\n type={type}\n title={newTitle}\n rtl={rtl}\n prefix={prefix}\n content={content}\n closeable={false}\n />\n ) : (\n content\n );\n\n const { visible, loading } = this.state;\n okProps.loading = loading;\n\n const classNames = cx(`${prefix}dialog-quick`, className);\n\n return (\n <Dialog\n role=\"alertdialog\"\n {...others}\n visible={visible}\n rtl={rtl}\n footerActions={newFooterActions}\n onOk={this.state.loading ? noop : newOnOk}\n onCancel={newOnCancel}\n onClose={newOnClose}\n okProps={okProps}\n className={classNames}\n >\n {newContent}\n </Dialog>\n );\n }\n}\n\nconst ConfigModal = ConfigProvider.config(Modal, { componentName: 'Dialog' });\n\n/**\n * 创建对话框\n * @exportName show\n * @param {Object} config 配置项\n * @returns {Object} 包含有 hide 方法,可用来关闭对话框\n */\nexport const show = (config = {}) => {\n const container = document.createElement('div');\n const unmount = () => {\n if (config.afterClose) {\n config.afterClose();\n }\n ReactDOM.unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n };\n\n document.body.appendChild(container);\n const newContext = ConfigProvider.getContext();\n\n let instance;\n\n ReactDOM.render(\n <ConfigProvider {...newContext}>\n <ConfigModal\n {...config}\n afterClose={unmount}\n ref={ref => {\n instance = ref;\n }}\n />\n </ConfigProvider>,\n container,\n );\n return {\n hide: () => {\n const inc = instance && instance.getInstance();\n inc && inc.close();\n },\n };\n};\n\nconst methodFactory = type => (config = {}) => {\n config.type = type;\n return show(config);\n};\n\n/**\n * 创建提示对话框\n * @exportName notice\n * @param {Object} config 配置项\n * @returns {Object} 包含有 hide 方法,可用来关闭对话框\n */\nexport const notice = methodFactory('notice');\n\n/**\n * 创建警告对话框\n * @exportName warning\n * @param {Object} config 配置项\n * @returns {Object} 包含有 hide 方法,可用来关闭对话框\n */\nexport const warning = methodFactory('warning');\n\n/**\n * 创建错误对话框\n * @exportName error\n * @param {Object} config 配置项\n * @returns {Object} 包含有 hide 方法,可用来关闭对话框\n */\nexport const error = methodFactory('error');\n\n/**\n * 创建成功对话框\n * @exportName success\n * @param {Object} config 配置项\n * @returns {Object} 包含有 hide 方法,可用来关闭对话框\n */\nexport const success = methodFactory('success');\n","import ConfigProvider from '../config-provider';\nimport { log } from '../util';\nimport Dialog from './dialog';\nimport StepDialog from './step-dialog';\nimport StepView from './step-view';\nimport Inner from './inner';\nimport { show, notice, warning, error, success } from './show';\n\nDialog.Inner = ConfigProvider.config(Inner);\nDialog.StepDialog = StepDialog;\nDialog.StepView = StepView;\nDialog.show = config => {\n const { warning: ctxWarning } = ConfigProvider.getContextProps(config, 'Dialog');\n if (ctxWarning !== false) {\n config = processProps(config, log.deprecated);\n }\n return show(config);\n};\nDialog.notice = config => {\n const { warning: ctxWarning } = ConfigProvider.getContextProps(config, 'Dialog');\n if (ctxWarning !== false) {\n config = processProps(config, log.deprecated);\n }\n return notice(config);\n};\nDialog.warning = config => {\n const { warning: ctxWarning } = ConfigProvider.getContextProps(config, 'Dialog');\n if (ctxWarning !== false) {\n config = processProps(config, log.deprecated);\n }\n return warning(config);\n};\nDialog.error = config => {\n const { warning: ctxWarning } = ConfigProvider.getContextProps(config, 'Dialog');\n if (ctxWarning !== false) {\n config = processProps(config, log.deprecated);\n }\n return error(config);\n};\nDialog.success = config => {\n const { warning: ctxWarning } = ConfigProvider.getContextProps(config, 'Dialog');\n if (ctxWarning !== false) {\n config = processProps(config, log.deprecated);\n }\n return success(config);\n};\n\n/* istanbul ignore next */\nfunction processProps(props, deprecated) {\n if ('closable' in props) {\n deprecated('closable', 'closeable', 'Dialog');\n const { closable, ...others } = props;\n props = { closeable: closable, ...others };\n }\n\n const overlayPropNames = [\n 'target',\n 'offset',\n 'beforeOpen',\n 'onOpen',\n 'afterOpen',\n 'beforePosition',\n 'onPosition',\n 'cache',\n 'safeNode',\n 'wrapperClassName',\n 'container',\n ];\n overlayPropNames.forEach(name => {\n if (name in props) {\n deprecated(name, `overlayProps.${name}`, 'Dialog');\n const { overlayProps, ...others } = props;\n const newOverlayProps = {\n [name]: props[name],\n ...(overlayProps || {}),\n };\n delete others[name];\n props = { overlayProps: newOverlayProps, ...others };\n }\n });\n\n return props;\n}\n\nexport default ConfigProvider.config(Dialog, {\n transform: (props, deprecated) => {\n return processProps(props, deprecated);\n },\n});\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nvar ContainerRender = /*#__PURE__*/function (_React$Component) {\n _inherits(ContainerRender, _React$Component);\n\n var _super = _createSuper(ContainerRender);\n\n function ContainerRender() {\n var _this;\n\n _classCallCheck(this, ContainerRender);\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 = _super.call.apply(_super, [this].concat(args));\n\n _this.removeContainer = function () {\n if (_this.container) {\n ReactDOM.unmountComponentAtNode(_this.container);\n\n _this.container.parentNode.removeChild(_this.container);\n\n _this.container = null;\n }\n };\n\n _this.renderComponent = function (props, ready) {\n var _this$props = _this.props,\n visible = _this$props.visible,\n getComponent = _this$props.getComponent,\n forceRender = _this$props.forceRender,\n getContainer = _this$props.getContainer,\n parent = _this$props.parent;\n\n if (visible || parent._component || forceRender) {\n if (!_this.container) {\n _this.container = getContainer();\n }\n\n ReactDOM.unstable_renderSubtreeIntoContainer(parent, getComponent(props), _this.container, function callback() {\n if (ready) {\n ready.call(this);\n }\n });\n }\n };\n\n return _this;\n }\n\n _createClass(ContainerRender, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.autoMount) {\n this.renderComponent();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.props.autoMount) {\n this.renderComponent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.props.autoDestroy) {\n this.removeContainer();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children({\n renderComponent: this.renderComponent,\n removeContainer: this.removeContainer\n });\n }\n }]);\n\n return ContainerRender;\n}(React.Component);\n\nContainerRender.propTypes = {\n autoMount: PropTypes.bool,\n autoDestroy: PropTypes.bool,\n visible: PropTypes.bool,\n forceRender: PropTypes.bool,\n parent: PropTypes.any,\n getComponent: PropTypes.func.isRequired,\n getContainer: PropTypes.func.isRequired,\n children: PropTypes.func.isRequired\n};\nContainerRender.defaultProps = {\n autoMount: true,\n autoDestroy: true,\n forceRender: false\n};\nexport { ContainerRender as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nvar Portal = /*#__PURE__*/function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n var _super = _createSuper(Portal);\n\n function Portal() {\n _classCallCheck(this, Portal);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Portal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.createContainer();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var didUpdate = this.props.didUpdate;\n\n if (didUpdate) {\n didUpdate(prevProps);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeContainer();\n }\n }, {\n key: \"createContainer\",\n value: function createContainer() {\n this._container = this.props.getContainer();\n this.forceUpdate();\n }\n }, {\n key: \"removeContainer\",\n value: function removeContainer() {\n if (this._container) {\n this._container.parentNode.removeChild(this._container);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this._container) {\n return ReactDOM.createPortal(this.props.children, this._container);\n }\n\n return null;\n }\n }]);\n\n return Portal;\n}(React.Component);\n\nPortal.propTypes = {\n getContainer: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n didUpdate: PropTypes.func\n};\nexport { Portal as default };","var cached;\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n\n if (fresh || cached === undefined) {\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n var outer = document.createElement('div');\n var outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.top = 0;\n outerStyle.left = 0;\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n\n document.body.removeChild(outer);\n cached = widthContained - widthScroll;\n }\n\n return cached;\n}","/**\n * Easy to set element style, return previous style\n * IE browser compatible(IE browser doesn't merge overflow style, need to set it separately)\n * https://github.com/ant-design/ant-design/issues/19393\n *\n */\nfunction setStyle(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$element = options.element,\n element = _options$element === void 0 ? document.body : _options$element;\n var oldStyle = {};\n var styleKeys = Object.keys(style); // IE browser compatible\n\n styleKeys.forEach(function (key) {\n oldStyle[key] = element.style[key];\n });\n styleKeys.forEach(function (key) {\n element.style[key] = style[key];\n });\n return oldStyle;\n}\n\nexport default setStyle;","import getScrollBarSize from './getScrollBarSize';\nimport setStyle from './setStyle';\n\nfunction isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}\n\nvar cacheStyle = {};\nexport default (function (close) {\n if (!isBodyOverflowing() && !close) {\n return;\n } // https://github.com/ant-design/ant-design/issues/19729\n\n\n var scrollingEffectClassName = 'ant-scrolling-effect';\n var scrollingEffectClassNameReg = new RegExp(\"\".concat(scrollingEffectClassName), 'g');\n var bodyClassName = document.body.className;\n\n if (close) {\n if (!scrollingEffectClassNameReg.test(bodyClassName)) return;\n setStyle(cacheStyle);\n cacheStyle = {};\n document.body.className = bodyClassName.replace(scrollingEffectClassNameReg, '').trim();\n return;\n }\n\n var scrollBarSize = getScrollBarSize();\n\n if (scrollBarSize) {\n cacheStyle = setStyle({\n position: 'relative',\n width: \"calc(100% - \".concat(scrollBarSize, \"px)\")\n });\n\n if (!scrollingEffectClassNameReg.test(bodyClassName)) {\n var addClassName = \"\".concat(bodyClassName, \" \").concat(scrollingEffectClassName);\n document.body.className = addClassName.trim();\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/* eslint-disable no-underscore-dangle,react/require-default-props */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { polyfill } from 'react-lifecycles-compat';\nimport ContainerRender from './ContainerRender';\nimport Portal from './Portal';\nimport switchScrollingEffect from './switchScrollingEffect';\nimport setStyle from './setStyle';\nvar openCount = 0;\nvar windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar IS_REACT_16 = ('createPortal' in ReactDOM); // https://github.com/ant-design/ant-design/issues/19340\n// https://github.com/ant-design/ant-design/issues/19332\n\nvar cacheOverflow = {};\n\nvar PortalWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(PortalWrapper, _React$Component);\n\n var _super = _createSuper(PortalWrapper);\n\n function PortalWrapper(props) {\n var _this;\n\n _classCallCheck(this, PortalWrapper);\n\n _this = _super.call(this, props);\n\n _this.getParent = function () {\n var getContainer = _this.props.getContainer;\n\n if (getContainer) {\n if (typeof getContainer === 'string') {\n return document.querySelectorAll(getContainer)[0];\n }\n\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n\n if (_typeof(getContainer) === 'object' && getContainer instanceof window.HTMLElement) {\n return getContainer;\n }\n }\n\n return document.body;\n };\n\n _this.getContainer = function () {\n if (windowIsUndefined) {\n return null;\n }\n\n if (!_this.container) {\n _this.container = document.createElement('div');\n\n var parent = _this.getParent();\n\n if (parent) {\n parent.appendChild(_this.container);\n }\n }\n\n _this.setWrapperClassName();\n\n return _this.container;\n };\n\n _this.setWrapperClassName = function () {\n var wrapperClassName = _this.props.wrapperClassName;\n\n if (_this.container && wrapperClassName && wrapperClassName !== _this.container.className) {\n _this.container.className = wrapperClassName;\n }\n };\n\n _this.savePortal = function (c) {\n // Warning: don't rename _component\n // https://github.com/react-component/util/pull/65#discussion_r352407916\n _this._component = c;\n };\n\n _this.removeCurrentContainer = function (visible) {\n _this.container = null;\n _this._component = null;\n\n if (!IS_REACT_16) {\n if (visible) {\n _this.renderComponent({\n afterClose: _this.removeContainer,\n onClose: function onClose() {},\n visible: false\n });\n } else {\n _this.removeContainer();\n }\n }\n };\n\n _this.switchScrollingEffect = function () {\n if (openCount === 1 && !Object.keys(cacheOverflow).length) {\n switchScrollingEffect(); // Must be set after switchScrollingEffect\n\n cacheOverflow = setStyle({\n overflow: 'hidden',\n overflowX: 'hidden',\n overflowY: 'hidden'\n });\n } else if (!openCount) {\n setStyle(cacheOverflow);\n cacheOverflow = {};\n switchScrollingEffect(true);\n }\n };\n\n var _visible = props.visible;\n openCount = _visible ? openCount + 1 : openCount;\n _this.state = {\n _self: _assertThisInitialized(_this)\n };\n return _this;\n }\n\n _createClass(PortalWrapper, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.setWrapperClassName();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var visible = this.props.visible; // 离开时不会 render, 导到离开时数值不变,改用 func 。。\n\n openCount = visible && openCount ? openCount - 1 : openCount;\n this.removeCurrentContainer(visible);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n forceRender = _this$props.forceRender,\n visible = _this$props.visible;\n var portal = null;\n var childProps = {\n getOpenCount: function getOpenCount() {\n return openCount;\n },\n getContainer: this.getContainer,\n switchScrollingEffect: this.switchScrollingEffect\n }; // suppport react15\n\n if (!IS_REACT_16) {\n return /*#__PURE__*/React.createElement(ContainerRender, {\n parent: this,\n visible: visible,\n autoDestroy: false,\n getComponent: function getComponent() {\n var extra = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return children(_objectSpread({}, extra, {}, childProps, {\n ref: _this2.savePortal\n }));\n },\n getContainer: this.getContainer,\n forceRender: forceRender\n }, function (_ref) {\n var renderComponent = _ref.renderComponent,\n removeContainer = _ref.removeContainer;\n _this2.renderComponent = renderComponent;\n _this2.removeContainer = removeContainer;\n return null;\n });\n }\n\n if (forceRender || visible || this._component) {\n portal = /*#__PURE__*/React.createElement(Portal, {\n getContainer: this.getContainer,\n ref: this.savePortal\n }, children(childProps));\n }\n\n return portal;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, _ref2) {\n var prevProps = _ref2.prevProps,\n _self = _ref2._self;\n var visible = props.visible,\n getContainer = props.getContainer;\n\n if (prevProps) {\n var prevVisible = prevProps.visible,\n prevGetContainer = prevProps.getContainer;\n\n if (visible !== prevVisible) {\n openCount = visible && !prevVisible ? openCount + 1 : openCount - 1;\n }\n\n var getContainerIsFunc = typeof getContainer === 'function' && typeof prevGetContainer === 'function';\n\n if (getContainerIsFunc ? getContainer.toString() !== prevGetContainer.toString() : getContainer !== prevGetContainer) {\n _self.removeCurrentContainer(false);\n }\n }\n\n return {\n prevProps: props\n };\n }\n }]);\n\n return PortalWrapper;\n}(React.Component);\n\nPortalWrapper.propTypes = {\n wrapperClassName: PropTypes.string,\n forceRender: PropTypes.bool,\n getContainer: PropTypes.any,\n children: PropTypes.func,\n visible: PropTypes.bool\n};\nexport default polyfill(PortalWrapper);","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n\n /**\n * TAB\n */\n TAB: 9,\n\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n\n /**\n * ENTER\n */\n ENTER: 13,\n\n /**\n * SHIFT\n */\n SHIFT: 16,\n\n /**\n * CTRL\n */\n CTRL: 17,\n\n /**\n * ALT\n */\n ALT: 18,\n\n /**\n * PAUSE\n */\n PAUSE: 19,\n\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n\n /**\n * ESC\n */\n ESC: 27,\n\n /**\n * SPACE\n */\n SPACE: 32,\n\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n\n /**\n * END\n */\n END: 35,\n\n /**\n * HOME\n */\n HOME: 36,\n\n /**\n * LEFT\n */\n LEFT: 37,\n\n /**\n * UP\n */\n UP: 38,\n\n /**\n * RIGHT\n */\n RIGHT: 39,\n\n /**\n * DOWN\n */\n DOWN: 40,\n\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n\n /**\n * INSERT\n */\n INSERT: 45,\n\n /**\n * DELETE\n */\n DELETE: 46,\n\n /**\n * ZERO\n */\n ZERO: 48,\n\n /**\n * ONE\n */\n ONE: 49,\n\n /**\n * TWO\n */\n TWO: 50,\n\n /**\n * THREE\n */\n THREE: 51,\n\n /**\n * FOUR\n */\n FOUR: 52,\n\n /**\n * FIVE\n */\n FIVE: 53,\n\n /**\n * SIX\n */\n SIX: 54,\n\n /**\n * SEVEN\n */\n SEVEN: 55,\n\n /**\n * EIGHT\n */\n EIGHT: 56,\n\n /**\n * NINE\n */\n NINE: 57,\n\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n\n /**\n * A\n */\n A: 65,\n\n /**\n * B\n */\n B: 66,\n\n /**\n * C\n */\n C: 67,\n\n /**\n * D\n */\n D: 68,\n\n /**\n * E\n */\n E: 69,\n\n /**\n * F\n */\n F: 70,\n\n /**\n * G\n */\n G: 71,\n\n /**\n * H\n */\n H: 72,\n\n /**\n * I\n */\n I: 73,\n\n /**\n * J\n */\n J: 74,\n\n /**\n * K\n */\n K: 75,\n\n /**\n * L\n */\n L: 76,\n\n /**\n * M\n */\n M: 77,\n\n /**\n * N\n */\n N: 78,\n\n /**\n * O\n */\n O: 79,\n\n /**\n * P\n */\n P: 80,\n\n /**\n * Q\n */\n Q: 81,\n\n /**\n * R\n */\n R: 82,\n\n /**\n * S\n */\n S: 83,\n\n /**\n * T\n */\n T: 84,\n\n /**\n * U\n */\n U: 85,\n\n /**\n * V\n */\n V: 86,\n\n /**\n * W\n */\n W: 87,\n\n /**\n * X\n */\n X: 88,\n\n /**\n * Y\n */\n Y: 89,\n\n /**\n * Z\n */\n Z: 90,\n\n /**\n * META\n */\n META: 91,\n\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n\n /**\n * F1\n */\n F1: 112,\n\n /**\n * F2\n */\n F2: 113,\n\n /**\n * F3\n */\n F3: 114,\n\n /**\n * F4\n */\n F4: 115,\n\n /**\n * F5\n */\n F5: 116,\n\n /**\n * F6\n */\n F6: 117,\n\n /**\n * F7\n */\n F7: 118,\n\n /**\n * F8\n */\n F8: 119,\n\n /**\n * F9\n */\n F9: 120,\n\n /**\n * F10\n */\n F10: 121,\n\n /**\n * F11\n */\n F11: 122,\n\n /**\n * F12\n */\n F12: 123,\n\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n\n /**\n * DASH\n */\n DASH: 189,\n\n /**\n * EQUALS\n */\n EQUALS: 187,\n\n /**\n * COMMA\n */\n COMMA: 188,\n\n /**\n * PERIOD\n */\n PERIOD: 190,\n\n /**\n * SLASH\n */\n SLASH: 191,\n\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n\n if (e.altKey && !e.ctrlKey || e.metaKey || // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n } // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n\n\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n\n default:\n return true;\n }\n },\n\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n } // Safari sends zero key code for non-latin characters.\n\n\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","export function dataToArray(vars) {\n if (Array.isArray(vars)) {\n return vars;\n }\n\n return [vars];\n}\nvar transitionEndObject = {\n transition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend'\n};\nexport var transitionStr = Object.keys(transitionEndObject).filter(function (key) {\n if (typeof document === 'undefined') {\n return false;\n }\n\n var html = document.getElementsByTagName('html')[0];\n return key in (html ? html.style : {});\n})[0];\nexport var transitionEnd = transitionEndObject[transitionStr];\nexport function addEventListener(target, eventType, callback, options) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, options);\n } else if (target.attachEvent) {\n // tslint:disable-line\n target.attachEvent(\"on\".concat(eventType), callback); // tslint:disable-line\n }\n}\nexport function removeEventListener(target, eventType, callback, options) {\n if (target.removeEventListener) {\n target.removeEventListener(eventType, callback, options);\n } else if (target.attachEvent) {\n // tslint:disable-line\n target.detachEvent(\"on\".concat(eventType), callback); // tslint:disable-line\n }\n}\nexport function transformArguments(arg, cb) {\n var result = typeof arg === 'function' ? arg(cb) : arg;\n\n if (Array.isArray(result)) {\n if (result.length === 2) {\n return result;\n }\n\n return [result[0], result[1]];\n }\n\n return [result];\n}\nexport var isNumeric = function isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n};\nexport var windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport var getTouchParentScroll = function getTouchParentScroll(root, currentTarget, differX, differY) {\n if (!currentTarget || currentTarget === document || currentTarget instanceof Document) {\n return false;\n } // root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动;\n\n\n if (currentTarget === root.parentNode) {\n return true;\n }\n\n var isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);\n var isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);\n var scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;\n var scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;\n var style = document.defaultView.getComputedStyle(currentTarget);\n var overflowY = style.overflowY === 'auto' || style.overflowY === 'scroll';\n var overflowX = style.overflowX === 'auto' || style.overflowX === 'scroll';\n var y = scrollY && overflowY;\n var x = scrollX && overflowX;\n\n if (isY && (!y || y && (currentTarget.scrollTop >= scrollY && differY < 0 || currentTarget.scrollTop <= 0 && differY > 0)) || isX && (!x || x && (currentTarget.scrollLeft >= scrollX && scrollX < 0 || currentTarget.scrollLeft <= 0 && scrollX > 0))) {\n return getTouchParentScroll(root, currentTarget.parentNode, differX, differY);\n }\n\n return false;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function () { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport classnames from 'classnames';\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { addEventListener, dataToArray, getTouchParentScroll, isNumeric, removeEventListener, transformArguments, transitionEnd, transitionStr, windowIsUndefined } from './utils';\nvar currentDrawer = {};\n\nvar DrawerChild = /*#__PURE__*/function (_React$Component) {\n _inherits(DrawerChild, _React$Component);\n\n var _super = _createSuper(DrawerChild);\n\n function DrawerChild(props) {\n var _this;\n\n _classCallCheck(this, DrawerChild);\n\n _this = _super.call(this, props);\n\n _this.domFocus = function () {\n if (_this.dom) {\n _this.dom.focus();\n }\n };\n\n _this.removeStartHandler = function (e) {\n if (e.touches.length > 1) {\n return;\n }\n\n _this.startPos = {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY\n };\n };\n\n _this.removeMoveHandler = function (e) {\n if (e.changedTouches.length > 1) {\n return;\n }\n\n var currentTarget = e.currentTarget;\n var differX = e.changedTouches[0].clientX - _this.startPos.x;\n var differY = e.changedTouches[0].clientY - _this.startPos.y;\n\n if (currentTarget === _this.maskDom || currentTarget === _this.handlerDom || currentTarget === _this.contentDom && getTouchParentScroll(currentTarget, e.target, differX, differY)) {\n e.preventDefault();\n }\n };\n\n _this.transitionEnd = function (e) {\n var dom = e.target;\n removeEventListener(dom, transitionEnd, _this.transitionEnd);\n dom.style.transition = '';\n };\n\n _this.onKeyDown = function (e) {\n if (e.keyCode === KeyCode.ESC) {\n var onClose = _this.props.onClose;\n e.stopPropagation();\n\n if (onClose) {\n onClose(e);\n }\n }\n };\n\n _this.onWrapperTransitionEnd = function (e) {\n var _this$props = _this.props,\n open = _this$props.open,\n afterVisibleChange = _this$props.afterVisibleChange;\n\n if (e.target === _this.contentWrapper && e.propertyName.match(/transform$/)) {\n _this.dom.style.transition = '';\n\n if (!open && _this.getCurrentDrawerSome()) {\n document.body.style.overflowX = '';\n\n if (_this.maskDom) {\n _this.maskDom.style.left = '';\n _this.maskDom.style.width = '';\n }\n }\n\n if (afterVisibleChange) {\n afterVisibleChange(!!open);\n }\n }\n };\n\n _this.openLevelTransition = function () {\n var _this$props2 = _this.props,\n open = _this$props2.open,\n width = _this$props2.width,\n height = _this$props2.height;\n\n var _this$getHorizontalBo = _this.getHorizontalBoolAndPlacementName(),\n isHorizontal = _this$getHorizontalBo.isHorizontal,\n placementName = _this$getHorizontalBo.placementName;\n\n var contentValue = _this.contentDom ? _this.contentDom.getBoundingClientRect()[isHorizontal ? 'width' : 'height'] : 0;\n var value = (isHorizontal ? width : height) || contentValue;\n\n _this.setLevelAndScrolling(open, placementName, value);\n };\n\n _this.setLevelTransform = function (open, placementName, value, right) {\n var _this$props3 = _this.props,\n placement = _this$props3.placement,\n levelMove = _this$props3.levelMove,\n duration = _this$props3.duration,\n ease = _this$props3.ease,\n showMask = _this$props3.showMask; // router 切换时可能会导至页面失去滚动条,所以需要时时获取。\n\n _this.levelDom.forEach(function (dom) {\n dom.style.transition = \"transform \".concat(duration, \" \").concat(ease);\n addEventListener(dom, transitionEnd, _this.transitionEnd);\n var levelValue = open ? value : 0;\n\n if (levelMove) {\n var $levelMove = transformArguments(levelMove, {\n target: dom,\n open: open\n });\n levelValue = open ? $levelMove[0] : $levelMove[1] || 0;\n }\n\n var $value = typeof levelValue === 'number' ? \"\".concat(levelValue, \"px\") : levelValue;\n var placementPos = placement === 'left' || placement === 'top' ? $value : \"-\".concat($value);\n placementPos = showMask && placement === 'right' && right ? \"calc(\".concat(placementPos, \" + \").concat(right, \"px)\") : placementPos;\n dom.style.transform = levelValue ? \"\".concat(placementName, \"(\").concat(placementPos, \")\") : '';\n });\n };\n\n _this.setLevelAndScrolling = function (open, placementName, value) {\n var onChange = _this.props.onChange;\n\n if (!windowIsUndefined) {\n var right = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth ? getScrollBarSize(true) : 0;\n\n _this.setLevelTransform(open, placementName, value, right);\n\n _this.toggleScrollingToDrawerAndBody(right);\n }\n\n if (onChange) {\n onChange(open);\n }\n };\n\n _this.toggleScrollingToDrawerAndBody = function (right) {\n var _this$props4 = _this.props,\n getOpenCount = _this$props4.getOpenCount,\n getContainer = _this$props4.getContainer,\n showMask = _this$props4.showMask,\n open = _this$props4.open;\n var container = getContainer && getContainer();\n var openCount = getOpenCount && getOpenCount(); // 处理 body 滚动\n\n if (container && container.parentNode === document.body && showMask) {\n var eventArray = ['touchstart'];\n var domArray = [document.body, _this.maskDom, _this.handlerDom, _this.contentDom];\n\n if (open && document.body.style.overflow !== 'hidden') {\n if (right) {\n _this.addScrollingEffect(right);\n }\n\n if (openCount === 1) {\n document.body.style.overflow = 'hidden';\n }\n\n document.body.style.touchAction = 'none'; // 手机禁滚\n\n domArray.forEach(function (item, i) {\n if (!item) {\n return;\n }\n\n addEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n });\n } else if (_this.getCurrentDrawerSome()) {\n // 没有弹框的状态下清除 overflow;\n if (!openCount) {\n document.body.style.overflow = '';\n }\n\n document.body.style.touchAction = '';\n\n if (right) {\n _this.remScrollingEffect(right);\n } // 恢复事件\n\n\n domArray.forEach(function (item, i) {\n if (!item) {\n return;\n }\n\n removeEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n });\n }\n }\n };\n\n _this.addScrollingEffect = function (right) {\n var _this$props5 = _this.props,\n placement = _this$props5.placement,\n duration = _this$props5.duration,\n ease = _this$props5.ease,\n getOpenCount = _this$props5.getOpenCount,\n switchScrollingEffect = _this$props5.switchScrollingEffect;\n var openCount = getOpenCount && getOpenCount();\n\n if (openCount === 1) {\n switchScrollingEffect();\n }\n\n var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n _this.dom.style.transition = 'none';\n\n switch (placement) {\n case 'right':\n _this.dom.style.transform = \"translateX(-\".concat(right, \"px)\");\n break;\n\n case 'top':\n case 'bottom':\n _this.dom.style.width = \"calc(100% - \".concat(right, \"px)\");\n _this.dom.style.transform = 'translateZ(0)';\n break;\n\n default:\n break;\n }\n\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function () {\n if (_this.dom) {\n _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(widthTransition);\n _this.dom.style.width = '';\n _this.dom.style.transform = '';\n }\n });\n };\n\n _this.remScrollingEffect = function (right) {\n var _this$props6 = _this.props,\n placement = _this$props6.placement,\n duration = _this$props6.duration,\n ease = _this$props6.ease,\n getOpenCount = _this$props6.getOpenCount,\n switchScrollingEffect = _this$props6.switchScrollingEffect;\n var openCount = getOpenCount && getOpenCount();\n\n if (!openCount) {\n switchScrollingEffect(true);\n }\n\n if (transitionStr) {\n document.body.style.overflowX = 'hidden';\n }\n\n _this.dom.style.transition = 'none';\n var heightTransition;\n var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n\n switch (placement) {\n case 'left':\n {\n _this.dom.style.width = '100%';\n widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n break;\n }\n\n case 'right':\n {\n _this.dom.style.transform = \"translateX(\".concat(right, \"px)\");\n _this.dom.style.width = '100%';\n widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n\n if (_this.maskDom) {\n _this.maskDom.style.left = \"-\".concat(right, \"px\");\n _this.maskDom.style.width = \"calc(100% + \".concat(right, \"px)\");\n }\n\n break;\n }\n\n case 'top':\n case 'bottom':\n {\n _this.dom.style.width = \"calc(100% + \".concat(right, \"px)\");\n _this.dom.style.height = '100%';\n _this.dom.style.transform = 'translateZ(0)';\n heightTransition = \"height 0s \".concat(ease, \" \").concat(duration);\n break;\n }\n\n default:\n break;\n }\n\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function () {\n if (_this.dom) {\n _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(heightTransition ? \"\".concat(heightTransition, \",\") : '').concat(widthTransition);\n _this.dom.style.transform = '';\n _this.dom.style.width = '';\n _this.dom.style.height = '';\n }\n });\n };\n\n _this.getCurrentDrawerSome = function () {\n return !Object.keys(currentDrawer).some(function (key) {\n return currentDrawer[key];\n });\n };\n\n _this.getLevelDom = function (_ref) {\n var level = _ref.level,\n getContainer = _ref.getContainer;\n\n if (windowIsUndefined) {\n return;\n }\n\n var container = getContainer && getContainer();\n var parent = container ? container.parentNode : null;\n _this.levelDom = [];\n\n if (level === 'all') {\n var children = parent ? Array.prototype.slice.call(parent.children) : [];\n children.forEach(function (child) {\n if (child.nodeName !== 'SCRIPT' && child.nodeName !== 'STYLE' && child.nodeName !== 'LINK' && child !== container) {\n _this.levelDom.push(child);\n }\n });\n } else if (level) {\n dataToArray(level).forEach(function (key) {\n document.querySelectorAll(key).forEach(function (item) {\n _this.levelDom.push(item);\n });\n });\n }\n };\n\n _this.getHorizontalBoolAndPlacementName = function () {\n var placement = _this.props.placement;\n var isHorizontal = placement === 'left' || placement === 'right';\n var placementName = \"translate\".concat(isHorizontal ? 'X' : 'Y');\n return {\n isHorizontal: isHorizontal,\n placementName: placementName\n };\n };\n\n _this.state = {\n _self: _assertThisInitialized(_this)\n };\n return _this;\n }\n\n _createClass(DrawerChild, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!windowIsUndefined) {\n var passiveSupported = false;\n\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: function get() {\n passiveSupported = true;\n return null;\n }\n }));\n } catch (err) {}\n\n this.passive = passiveSupported ? {\n passive: false\n } : false;\n }\n\n var open = this.props.open;\n this.drawerId = \"drawer_id_\".concat(Number((Date.now() + Math.random()).toString().replace('.', Math.round(Math.random() * 9).toString())).toString(16));\n this.getLevelDom(this.props);\n\n if (open) {\n currentDrawer[this.drawerId] = open; // 默认打开状态时推出 level;\n\n this.openLevelTransition();\n this.forceUpdate(function () {\n _this2.domFocus();\n });\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var open = this.props.open;\n\n if (open !== prevProps.open) {\n if (open) {\n this.domFocus();\n }\n\n currentDrawer[this.drawerId] = !!open;\n this.openLevelTransition();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$props7 = this.props,\n getOpenCount = _this$props7.getOpenCount,\n open = _this$props7.open,\n switchScrollingEffect = _this$props7.switchScrollingEffect;\n var openCount = typeof getOpenCount === 'function' && getOpenCount();\n delete currentDrawer[this.drawerId];\n\n if (open) {\n this.setLevelTransform(false);\n document.body.style.touchAction = '';\n }\n\n if (!openCount) {\n document.body.style.overflow = '';\n switchScrollingEffect(true);\n }\n } // tslint:disable-next-line:member-ordering\n\n }, {\n key: \"render\",\n value: function render() {\n var _classnames,\n _this3 = this;\n\n var _this$props8 = this.props,\n className = _this$props8.className,\n children = _this$props8.children,\n style = _this$props8.style,\n width = _this$props8.width,\n height = _this$props8.height,\n defaultOpen = _this$props8.defaultOpen,\n $open = _this$props8.open,\n prefixCls = _this$props8.prefixCls,\n placement = _this$props8.placement,\n level = _this$props8.level,\n levelMove = _this$props8.levelMove,\n ease = _this$props8.ease,\n duration = _this$props8.duration,\n getContainer = _this$props8.getContainer,\n handler = _this$props8.handler,\n onChange = _this$props8.onChange,\n afterVisibleChange = _this$props8.afterVisibleChange,\n showMask = _this$props8.showMask,\n maskClosable = _this$props8.maskClosable,\n maskStyle = _this$props8.maskStyle,\n onClose = _this$props8.onClose,\n onHandleClick = _this$props8.onHandleClick,\n keyboard = _this$props8.keyboard,\n getOpenCount = _this$props8.getOpenCount,\n switchScrollingEffect = _this$props8.switchScrollingEffect,\n props = _objectWithoutProperties(_this$props8, [\"className\", \"children\", \"style\", \"width\", \"height\", \"defaultOpen\", \"open\", \"prefixCls\", \"placement\", \"level\", \"levelMove\", \"ease\", \"duration\", \"getContainer\", \"handler\", \"onChange\", \"afterVisibleChange\", \"showMask\", \"maskClosable\", \"maskStyle\", \"onClose\", \"onHandleClick\", \"keyboard\", \"getOpenCount\", \"switchScrollingEffect\"]); // 首次渲染都将是关闭状态。\n\n\n var open = this.dom ? $open : false;\n var wrapperClassName = classnames(prefixCls, (_classnames = {}, _defineProperty(_classnames, \"\".concat(prefixCls, \"-\").concat(placement), true), _defineProperty(_classnames, \"\".concat(prefixCls, \"-open\"), open), _defineProperty(_classnames, className || '', !!className), _defineProperty(_classnames, 'no-mask', !showMask), _classnames));\n\n var _this$getHorizontalBo2 = this.getHorizontalBoolAndPlacementName(),\n placementName = _this$getHorizontalBo2.placementName; // 百分比与像素动画不同步,第一次打用后全用像素动画。\n // const defaultValue = !this.contentDom || !level ? '100%' : `${value}px`;\n\n\n var placementPos = placement === 'left' || placement === 'top' ? '-100%' : '100%';\n var transform = open ? '' : \"\".concat(placementName, \"(\").concat(placementPos, \")\");\n var handlerChildren = handler && React.cloneElement(handler, {\n onClick: function onClick(e) {\n if (handler.props.onClick) {\n handler.props.onClick();\n }\n\n if (onHandleClick) {\n onHandleClick(e);\n }\n },\n ref: function ref(c) {\n _this3.handlerDom = c;\n }\n });\n return React.createElement(\"div\", Object.assign({}, props, {\n tabIndex: -1,\n className: wrapperClassName,\n style: style,\n ref: function ref(c) {\n _this3.dom = c;\n },\n onKeyDown: open && keyboard ? this.onKeyDown : undefined,\n onTransitionEnd: this.onWrapperTransitionEnd\n }), showMask && React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-mask\"),\n onClick: maskClosable ? onClose : undefined,\n style: maskStyle,\n ref: function ref(c) {\n _this3.maskDom = c;\n }\n }), React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content-wrapper\"),\n style: {\n transform: transform,\n msTransform: transform,\n width: isNumeric(width) ? \"\".concat(width, \"px\") : width,\n height: isNumeric(height) ? \"\".concat(height, \"px\") : height\n },\n ref: function ref(c) {\n _this3.contentWrapper = c;\n }\n }, React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\"),\n ref: function ref(c) {\n _this3.contentDom = c;\n },\n onTouchStart: open && showMask ? this.removeStartHandler : undefined,\n onTouchMove: open && showMask ? this.removeMoveHandler : undefined\n }, children), handlerChildren));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, _ref2) {\n var prevProps = _ref2.prevProps,\n _self = _ref2._self;\n var nextState = {\n prevProps: props\n };\n\n if (prevProps !== undefined) {\n var placement = props.placement,\n level = props.level;\n\n if (placement !== prevProps.placement) {\n // test 的 bug, 有动画过场,删除 dom\n _self.contentDom = null;\n }\n\n if (level !== prevProps.level) {\n _self.getLevelDom(props);\n }\n }\n\n return nextState;\n }\n }]);\n\n return DrawerChild;\n}(React.Component);\n\nDrawerChild.defaultProps = {\n switchScrollingEffect: function switchScrollingEffect() {}\n};\nexport default DrawerChild;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function () { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Portal from \"rc-util/es/PortalWrapper\";\nimport * as React from 'react';\nimport Child from './DrawerChild';\n\nvar DrawerWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DrawerWrapper, _React$Component);\n\n var _super = _createSuper(DrawerWrapper);\n\n function DrawerWrapper(props) {\n var _this;\n\n _classCallCheck(this, DrawerWrapper);\n\n _this = _super.call(this, props);\n\n _this.onHandleClick = function (e) {\n var _this$props = _this.props,\n onHandleClick = _this$props.onHandleClick,\n $open = _this$props.open;\n\n if (onHandleClick) {\n onHandleClick(e);\n }\n\n if (typeof $open === 'undefined') {\n var _open = _this.state.open;\n\n _this.setState({\n open: !_open\n });\n }\n };\n\n _this.onClose = function (e) {\n var _this$props2 = _this.props,\n onClose = _this$props2.onClose,\n open = _this$props2.open;\n\n if (onClose) {\n onClose(e);\n }\n\n if (typeof open === 'undefined') {\n _this.setState({\n open: false\n });\n }\n };\n\n var open = typeof props.open !== 'undefined' ? props.open : !!props.defaultOpen;\n _this.state = {\n open: open\n };\n\n if ('onMaskClick' in props) {\n console.warn('`onMaskClick` are removed, please use `onClose` instead.');\n }\n\n return _this;\n }\n\n _createClass(DrawerWrapper, [{\n key: \"render\",\n // tslint:disable-next-line:member-ordering\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n defaultOpen = _this$props3.defaultOpen,\n getContainer = _this$props3.getContainer,\n wrapperClassName = _this$props3.wrapperClassName,\n forceRender = _this$props3.forceRender,\n handler = _this$props3.handler,\n props = _objectWithoutProperties(_this$props3, [\"defaultOpen\", \"getContainer\", \"wrapperClassName\", \"forceRender\", \"handler\"]);\n\n var open = this.state.open; // 渲染在当前 dom 里;\n\n if (!getContainer) {\n return React.createElement(\"div\", {\n className: wrapperClassName,\n ref: function ref(c) {\n _this2.dom = c;\n }\n }, React.createElement(Child, Object.assign({}, props, {\n open: open,\n handler: handler,\n getContainer: function getContainer() {\n return _this2.dom;\n },\n onClose: this.onClose,\n onHandleClick: this.onHandleClick\n })));\n } // 如果有 handler 为内置强制渲染;\n\n\n var $forceRender = !!handler || forceRender;\n return React.createElement(Portal, {\n visible: open,\n forceRender: $forceRender,\n getContainer: getContainer,\n wrapperClassName: wrapperClassName\n }, function (_ref) {\n var visible = _ref.visible,\n afterClose = _ref.afterClose,\n rest = _objectWithoutProperties(_ref, [\"visible\", \"afterClose\"]);\n\n return (// react 15,componentWillUnmount 时 Portal 返回 afterClose, visible.\n React.createElement(Child, Object.assign({}, props, rest, {\n open: visible !== undefined ? visible : open,\n afterVisibleChange: afterClose !== undefined ? afterClose : props.afterVisibleChange,\n handler: handler,\n onClose: _this2.onClose,\n onHandleClick: _this2.onHandleClick\n }))\n );\n });\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, _ref2) {\n var prevProps = _ref2.prevProps;\n var newState = {\n prevProps: props\n };\n\n if (typeof prevProps !== 'undefined' && props.open !== prevProps.open) {\n newState.open = props.open;\n }\n\n return newState;\n }\n }]);\n\n return DrawerWrapper;\n}(React.Component);\n\nDrawerWrapper.defaultProps = {\n prefixCls: 'drawer',\n placement: 'left',\n getContainer: 'body',\n defaultOpen: false,\n level: 'all',\n duration: '.3s',\n ease: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n onChange: function onChange() {},\n afterVisibleChange: function afterVisibleChange() {},\n handler: React.createElement(\"div\", {\n className: \"drawer-handle\"\n }, React.createElement(\"i\", {\n className: \"drawer-handle-icon\"\n })),\n showMask: true,\n maskClosable: true,\n maskStyle: {},\n wrapperClassName: '',\n className: '',\n keyboard: true,\n forceRender: false\n};\nexport default DrawerWrapper;","// export this package's api\nimport Drawer from './DrawerWrapper';\nexport default Drawer;","import _extends from \"babel-runtime/helpers/extends\";\nfunction omit(obj, fields) {\n var shallowCopy = _extends({}, obj);\n for (var i = 0; i < fields.length; i++) {\n var key = fields[i];\n delete shallowCopy[key];\n }\n return shallowCopy;\n}\n\nexport default omit;","/* eslint-disable react/forbid-prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport RcDrawer from 'rc-drawer';\nimport ConfigProvider from '../config-provider';\nimport Button from '../button';\nimport classNames from 'classnames';\nimport omit from 'omit.js';\nimport { dom } from '../util';\n\nconst DrawerContext = React.createContext(null);\n\nclass Drawer extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n closable: PropTypes.bool,\n destroyOnClose: PropTypes.bool,\n getContainer: PropTypes.any,\n maskClosable: PropTypes.bool,\n mask: PropTypes.bool,\n maskStyle: PropTypes.object,\n style: PropTypes.object,\n drawerStyle: PropTypes.object,\n headerStyle: PropTypes.object,\n bodyStyle: PropTypes.object,\n title: PropTypes.node,\n visible: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n zIndex: PropTypes.number,\n prefixCls: PropTypes.string,\n push: PropTypes.bool,\n placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n onClose: PropTypes.func,\n afterVisibleChange: PropTypes.func,\n className: PropTypes.object,\n handler: PropTypes.bool,\n footer: PropTypes.node,\n footerStyle: PropTypes.object,\n keyboard: PropTypes.bool,\n level: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n width: 256,\n height: 256,\n closable: true,\n placement: 'right',\n maskClosable: true,\n level: null,\n keyboard: true,\n mask: true,\n };\n\n constructor(props) {\n super(props);\n this.parentDrawer = this || null;\n this.destroyClose = false;\n this.state = {\n push: false,\n };\n }\n\n componentDidMount() {\n const { visible } = this.props;\n if (visible && this.parentDrawer) {\n this.parentDrawer.push();\n }\n }\n\n componentDidUpdate(preProps) {\n const { visible } = this.props;\n if (preProps.visible !== visible && this.parentDrawer) {\n if (visible) {\n this.parentDrawer.push();\n } else {\n this.parentDrawer.pull();\n }\n }\n }\n\n componentWillUnmount() {\n // unmount drawer in child, clear push.\n if (this.parentDrawer) {\n this.parentDrawer.pull();\n this.parentDrawer = null;\n }\n }\n\n push = () => {\n this.setState({\n push: true,\n });\n };\n\n pull = () => {\n this.setState({\n push: false,\n });\n };\n\n onDestroyTransitionEnd = () => {\n const isDestroyOnClose = this.getDestroyOnClose();\n if (!isDestroyOnClose) {\n return;\n }\n if (!this.props.visible) {\n this.destroyClose = true;\n this.forceUpdate();\n }\n };\n\n getDestroyOnClose = () => this.props.destroyOnClose && !this.props.visible;\n\n // get drawer push width or height\n getPushTransform = placement => {\n if (placement === 'left' || placement === 'right') {\n return `translateX(${placement === 'left' ? 180 : -180}px)`;\n }\n if (placement === 'top' || placement === 'bottom') {\n return `translateY(${placement === 'top' ? 180 : -180}px)`;\n }\n };\n\n getRcDrawerStyle = () => {\n const { zIndex, placement, style } = this.props;\n const { push } = this.state;\n return {\n zIndex,\n transform: push ? this.getPushTransform(placement) : undefined,\n ...style,\n };\n };\n\n renderHeader() {\n const { title, prefix, closable, headerStyle } = this.props;\n if (!title && !closable) {\n return null;\n }\n\n const headerClassName = title ? `${prefix}drawer-header` : `${prefix}drawer-header-no-title`;\n return (\n <div className={headerClassName} style={headerStyle}>\n {title && <div className={`${prefix}drawer-title`}>{title}</div>}\n {closable && this.renderCloseIcon()}\n </div>\n );\n }\n\n renderFooter() {\n const { footer, footerStyle, prefix } = this.props;\n if (!footer) {\n return null;\n }\n\n const footerClassName = `${prefix}drawer-footer`;\n return (\n <div className={footerClassName} style={footerStyle}>\n {footer}\n </div>\n );\n }\n\n renderCloseIcon() {\n const { closable, prefix, onClose } = this.props;\n return (\n closable && (\n <Button.Icon\n name=\"remove\"\n type=\"secondary\"\n color=\"gray\"\n className={`${prefix}drawer-close`}\n onClick={onClose}\n style={{\n '--scroll-bar': `${dom.scrollbar().width}px`,\n }}\n />\n )\n );\n }\n\n // render drawer body dom\n renderBody = () => {\n const { bodyStyle, drawerStyle, prefix, visible } = this.props;\n if (this.destroyClose && !visible) {\n return null;\n }\n this.destroyClose = false;\n\n const containerStyle = {};\n\n const isDestroyOnClose = this.getDestroyOnClose();\n\n if (isDestroyOnClose) {\n // Increase the opacity transition, delete children after closing.\n containerStyle.opacity = 0;\n containerStyle.transition = 'opacity .3s';\n }\n\n return (\n <div\n className={`${prefix}drawer-wrapper-body`}\n style={{ ...containerStyle, ...drawerStyle }}\n onTransitionEnd={this.onDestroyTransitionEnd}\n >\n {this.renderHeader()}\n <div className={`${prefix}drawer-body`} style={bodyStyle}>\n {this.props.children}\n </div>\n {this.renderFooter()}\n </div>\n );\n };\n\n renderProvider = value => {\n const { prefix, placement, className, width, height, mask, ...rest } = this.props;\n const haveMask = mask ? '' : 'no-mask';\n this.parentDrawer = value;\n const offsetStyle = {};\n if (placement === 'left' || placement === 'right') {\n offsetStyle.width = width;\n } else {\n offsetStyle.height = height;\n }\n\n const drawerClassName = classNames(className, haveMask);\n return (\n <DrawerContext.Provider value={this}>\n <RcDrawer\n handler={false}\n {...omit(rest, [\n 'zIndex',\n 'style',\n 'closable',\n 'destroyOnClose',\n 'drawerStyle',\n 'headerStyle',\n 'bodyStyle',\n 'footerStyle',\n 'footer',\n 'locale',\n 'title',\n 'push',\n 'visible',\n 'getPopupContainer',\n 'rootPrefixCls',\n 'getPrefixCls',\n 'renderEmpty',\n ])}\n {...offsetStyle}\n prefixCls={`${prefix}drawer`}\n open={this.props.visible}\n placement={placement}\n showMask={mask}\n style={this.getRcDrawerStyle()}\n className={drawerClassName}\n >\n {this.renderBody()}\n </RcDrawer>\n </DrawerContext.Provider>\n );\n };\n\n render() {\n return <DrawerContext.Consumer>{this.renderProvider}</DrawerContext.Consumer>;\n }\n}\n\nexport default ConfigProvider.config(Drawer);\n","import React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport Overlay from '../overlay';\nimport { func } from '../util';\n\nconst { noop, makeChain } = func;\nconst { Popup } = Overlay;\n\n/**\n * Dropdown\n * @description 继承 Popup 的 API,除非特别说明\n */\nexport default class Dropdown extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 弹层内容\n */\n children: PropTypes.node,\n /**\n * 弹层当前是否显示\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层显示或隐藏时触发的回调函数\n * @param {Boolean} visible 弹层是否显示\n * @param {String} type 触发弹层显示或隐藏的来源 fromContent 表示由Dropdown内容触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 触发弹层显示或者隐藏的元素\n */\n trigger: PropTypes.node,\n /**\n * 触发弹层显示或隐藏的操作类型,可以是 'click','hover',或者它们组成的数组,如 ['hover', 'click']\n */\n triggerType: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 设置此属性,弹层无法显示或隐藏\n */\n disabled: PropTypes.bool,\n /**\n * 弹层相对于触发元素的定位, 详见 Overlay 的定位部分\n */\n align: PropTypes.string,\n /**\n * 弹层相对于trigger的定位的微调, 接收数组[hoz, ver], 表示弹层在 left / top 上的增量\n * e.g. [100, 100] 表示往右(RTL 模式下是往左) 、下分布偏移100px\n */\n offset: PropTypes.array,\n /**\n * 弹层显示或隐藏的延时时间(以毫秒为单位),在 triggerType 被设置为 hover 时生效\n */\n delay: PropTypes.number,\n /**\n * 弹层打开时是否让其中的元素自动获取焦点\n */\n autoFocus: PropTypes.bool,\n /**\n * 是否显示遮罩\n */\n hasMask: PropTypes.bool,\n /**\n * 隐藏时是否保留子节点\n */\n cache: PropTypes.bool,\n /**\n * 配置动画的播放方式,支持 { in: 'enter-class', out: 'leave-class' } 的对象参数,如果设置为 false,则不播放动画\n * @default { in: 'expandInDown', out: 'expandOutUp' }\n */\n animation: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n defaultVisible: false,\n onVisibleChange: noop,\n triggerType: 'hover',\n disabled: false,\n align: 'tl bl',\n offset: [0, 4],\n delay: 200,\n hasMask: false,\n cache: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n visible: 'visible' in props ? props.visible : props.defaultVisible || false,\n autoFocus: 'autoFocus' in props ? props.autoFocus : false,\n };\n this.popup = null;\n }\n\n open = () => {\n this.onVisibleChange(true, 'fromComponentMethod');\n };\n\n close = () => {\n this.onVisibleChange(false, 'fromComponentMethod');\n };\n\n toggle = () => {\n if (this.getVisible()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n getVisible = (props = this.props) => {\n return 'visible' in props ? props.visible : this.state.visible;\n };\n\n // 实例方法,获取overlay实例\n getOverlay = () => {\n try {\n return this.popup.getInstance().getOverlay();\n } catch (err) {\n return null;\n }\n };\n\n onMenuClick = () => {\n this.onVisibleChange(false, 'fromContent');\n };\n\n onVisibleChange = (visible, from) => {\n this.setState({ visible });\n\n this.props.onVisibleChange(visible, from);\n };\n\n onTriggerKeyDown = () => {\n let autoFocus = true;\n\n if ('autoFocus' in this.props) {\n autoFocus = this.props.autoFocus;\n }\n\n this.setState({\n autoFocus,\n });\n };\n\n render() {\n let child = Children.only(this.props.children);\n if (typeof child.type === 'function' && child.type.isNextMenu) {\n child = React.cloneElement(child, {\n onItemClick: makeChain(this.onMenuClick, child.props.onItemClick),\n });\n }\n\n const { trigger, rtl } = this.props;\n const newTrigger = React.cloneElement(trigger, {\n onKeyDown: makeChain(this.onTriggerKeyDown, trigger.props.onKeyDown),\n });\n\n return (\n <Popup\n animation={{ in: 'fadeInDown', out: 'fadeOutUp' }}\n {...this.props}\n ref={popup => {\n this.popup = popup;\n }}\n rtl={rtl}\n autoFocus={this.state.autoFocus}\n trigger={newTrigger}\n visible={this.getVisible()}\n onVisibleChange={this.onVisibleChange}\n >\n {child}\n </Popup>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Dropdown from './dropdown';\n\nexport default ConfigProvider.config(Dropdown, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('triggerType' in props) {\n const triggerType = Array.isArray(props.triggerType)\n ? [...props.triggerType]\n : [props.triggerType];\n\n if (triggerType.indexOf('focus') > -1) {\n deprecated('triggerType[focus]', 'triggerType[hover, click]', 'Balloon');\n }\n }\n\n return props;\n },\n});\n","import { isValidElement, cloneElement } from 'react';\nimport ReactDOM from 'react-dom';\n\nexport function cloneAndAddKey(element) {\n if (element && isValidElement(element)) {\n const key = element.key || 'error';\n return cloneElement(element, { key });\n }\n return element;\n}\n\nexport function scrollToFirstError({ errorsGroup, options, instance }) {\n if (errorsGroup && options.scrollToFirstError) {\n let firstNode;\n let firstTop;\n for (const i in errorsGroup) {\n if (errorsGroup.hasOwnProperty(i)) {\n const node = ReactDOM.findDOMNode(instance[i]);\n if (!node) {\n return;\n }\n const top = node.offsetTop;\n if (firstTop === undefined || firstTop > top) {\n firstTop = top;\n firstNode = node;\n }\n }\n }\n\n if (firstNode) {\n if (\n typeof options.scrollToFirstError === 'number' &&\n window &&\n typeof window.scrollTo === 'function'\n ) {\n const offsetLeft =\n document && document.body && document.body.offsetLeft\n ? document.body.offsetLeft\n : 0;\n window.scrollTo(\n offsetLeft,\n firstTop + options.scrollToFirstError\n );\n } else if (firstNode.scrollIntoViewIfNeeded) {\n firstNode.scrollIntoViewIfNeeded(true);\n }\n }\n }\n}\n","import { useState, useMemo } from 'react';\nimport Field from '@alifd/field';\n\nimport { log } from '../util';\nimport { scrollToFirstError, cloneAndAddKey } from './utils';\n\nclass NextField extends Field {\n static useField(options = {}) {\n if (!useState || !useMemo) {\n log.warning('need react version > 16.8.0');\n return;\n }\n return this.getUseField({ useMemo, useState })(options);\n }\n\n constructor(com, options = {}) {\n const newOptions = Object.assign({}, options, {\n afterValidateRerender: scrollToFirstError,\n processErrorMessage: cloneAndAddKey,\n });\n super(com, newOptions);\n\n this.validate = this.validate.bind(this);\n }\n\n validate(ns, cb) {\n this.validateCallback(ns, cb);\n }\n\n reset(ns, backToDefault = false) {\n if (ns === true) {\n log.deprecated('reset(true)', 'resetToDefault()', 'Field');\n this.resetToDefault();\n } else if (backToDefault === true) {\n log.deprecated('reset(ns,true)', 'resetToDefault(ns)', 'Field');\n this.resetToDefault(ns);\n } else {\n this._reset(ns, false);\n }\n }\n}\n\nexport default NextField;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { obj, func } from '../util';\nimport Field from '../field';\n\nfunction pickerDefined(obj) {\n const newObj = {};\n Object.keys(obj).forEach(i => {\n if (typeof obj[i] !== 'undefined') {\n newObj[i] = obj[i];\n }\n });\n return newObj;\n}\n\nfunction preventDefault(e) {\n e.preventDefault();\n}\n\n/** Form */\nexport default class Form extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n /**\n * 内联表单\n */\n inline: PropTypes.bool,\n /**\n * 单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。\n * @enumdesc 中, 小\n */\n size: PropTypes.oneOf(['medium', 'small']),\n /**\n * 标签的位置\n * @enumdesc 上, 左, 内\n */\n labelAlign: PropTypes.oneOf(['top', 'left', 'inset']),\n /**\n * 标签的左右对齐方式\n * @enumdesc 左, 右\n */\n labelTextAlign: PropTypes.oneOf(['left', 'right']),\n /**\n * 经 `new Field(this)` 初始化后,直接传给 Form 即可 用到表单校验则不可忽略此项\n */\n field: PropTypes.any,\n /**\n * 保存 Form 自动生成的 field 对象\n */\n saveField: PropTypes.func,\n /**\n * 控制第一级 Item 的 labelCol\n */\n labelCol: PropTypes.object,\n /**\n * 控制第一级 Item 的 wrapperCol\n */\n wrapperCol: PropTypes.object,\n /**\n * form内有 `htmlType=\"submit\"` 的元素的时候会触发\n */\n onSubmit: PropTypes.func,\n /**\n * 子元素\n */\n children: PropTypes.any,\n /**\n * 扩展class\n */\n className: PropTypes.string,\n /**\n * 自定义内联样式\n */\n style: PropTypes.object,\n /**\n * 表单数值\n */\n value: PropTypes.object,\n /**\n * 表单变化回调\n * @param {Object} values 表单数据\n * @param {Object} item 详细\n * @param {String} item.name 变化的组件名\n * @param {String} item.value 变化的数据\n * @param {Object} item.field field 实例\n */\n onChange: PropTypes.func,\n /**\n * 设置标签类型\n */\n component: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n fieldOptions: PropTypes.object,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n onSubmit: preventDefault,\n size: 'medium',\n labelAlign: 'left',\n onChange: func.noop,\n component: 'form',\n saveField: func.noop,\n };\n\n static childContextTypes = {\n _formField: PropTypes.object,\n _formSize: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const options = {\n ...props.fieldOptions,\n onChange: this.onChange,\n };\n\n if (props.field) {\n this._formField = props.field;\n const { onChange } = this._formField.options;\n options.onChange = func.makeChain(onChange, this.onChange);\n this._formField.setOptions && this._formField.setOptions(options);\n } else {\n if ('value' in props) {\n options.values = props.value;\n }\n this._formField = new Field(this, options);\n }\n\n props.saveField(this._formField);\n }\n\n getChildContext() {\n return {\n _formField: this.props.field ? this.props.field : this._formField,\n _formSize: this.props.size,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n this._formField.setValues(nextProps.value);\n }\n if ('error' in nextProps) {\n this._formField.setErrors(nextProps.error);\n }\n }\n\n onChange = (name, value) => {\n this.props.onChange(this._formField.getValues(), {\n name,\n value,\n field: this._formField,\n });\n };\n\n render() {\n const {\n className,\n inline,\n size,\n labelAlign,\n labelTextAlign,\n onSubmit,\n children,\n labelCol,\n wrapperCol,\n style,\n prefix,\n rtl,\n component: Tag,\n } = this.props;\n\n const formClassName = classNames({\n [`${prefix}form`]: true,\n [`${prefix}inline`]: inline, // 内联\n [`${prefix}${size}`]: size,\n [`${prefix}top`]: labelAlign === 'top', // label top位置\n [className]: !!className,\n });\n\n return (\n <Tag\n role=\"grid\"\n {...obj.pickOthers(Form.propTypes, this.props)}\n className={formClassName}\n style={style}\n dir={rtl ? 'rtl' : undefined}\n onSubmit={onSubmit}\n >\n {React.Children.map(children, child => {\n if (child && typeof child.type === 'function' && child.type._typeMark === 'form_item') {\n const childrenProps = {\n labelCol: child.props.labelCol ? child.props.labelCol : labelCol,\n wrapperCol: child.props.wrapperCol ? child.props.wrapperCol : wrapperCol,\n labelAlign: child.props.labelAlign ? child.props.labelAlign : labelAlign,\n labelTextAlign: child.props.labelTextAlign\n ? child.props.labelTextAlign\n : labelTextAlign,\n size: child.props.size ? child.props.size : size,\n };\n return React.cloneElement(child, pickerDefined(childrenProps));\n }\n return child;\n })}\n </Tag>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport { Grid as NextGrid } from '@alifd/next';\n\nconst Grid = NextGrid;\nGrid.Row = ConfigProvider.config(NextGrid.Row);\nGrid.Col = ConfigProvider.config(NextGrid.Col);\n\nexport default Grid;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport ConfigProvider from '../config-provider';\n\n/**\n * Form.Error\n * @description 自定义错误展示\n * @order 4\n */\nclass Error extends React.Component {\n static propTypes = {\n /**\n * 表单名\n */\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 自定义 field (在 Form 内不需要设置)\n */\n field: PropTypes.object,\n style: PropTypes.object,\n className: PropTypes.string,\n /**\n * 自定义错误渲染, 可以是 node 或者 function(errors, state)\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n prefix: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n };\n\n static contextTypes = {\n _formField: PropTypes.object,\n };\n\n static _typeMark = 'form_error';\n\n itemRender = errors => {\n return errors.length ? errors : null;\n };\n\n render() {\n const { children, name, prefix, style, className, field: _field, ...others } = this.props;\n\n if (children && typeof children !== 'function') {\n return <div className={`${prefix}form-item-help`}>{children}</div>;\n }\n\n const field = this.context._formField || _field;\n\n if (!field || !name) {\n return null;\n }\n\n const isSingle = typeof name === 'string';\n\n const names = isSingle ? [name] : name;\n const errorArr = [];\n\n if (names.length) {\n const errors = field.getErrors(names);\n Object.keys(errors).forEach(key => {\n if (errors[key]) {\n errorArr.push(errors[key]);\n }\n });\n }\n\n let result = null;\n if (typeof children === 'function') {\n result = children(errorArr, isSingle ? field.getState(name) : undefined);\n } else {\n result = this.itemRender(errorArr);\n }\n\n if (!result) {\n return null;\n }\n\n const cls = classNames({\n [`${prefix}form-item-help`]: true,\n [className]: className,\n });\n const icon = <Icon type=\"remove-o-fill\" />;\n\n return (\n <div {...others} className={cls} style={style}>\n {icon}\n <span className={`${prefix}form-item-help-text`}>{result}</span>\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(Error);\n","function getCfgFromProps(props, type) {\n if (type in props) {\n return props[type];\n }\n\n return undefined;\n}\n\nfunction getRule(ruleName, props) {\n return {\n [ruleName]: props[ruleName],\n message: getCfgFromProps(props, `${ruleName}Message`),\n trigger: getCfgFromProps(props, `${ruleName}Trigger`),\n };\n}\n\nfunction getValueName(props, displayName) {\n if (props.valueName) {\n return props.valueName;\n }\n\n if (typeof displayName === 'string') {\n // Next Components are all wrappered by configProvider\n const componentName = displayName.replace(/Config\\(/, '').replace(')', '');\n if (['Switch', 'Checkbox', 'Radio'].indexOf(componentName) !== -1) {\n return 'checked';\n }\n }\n\n return 'value';\n}\n\nexport function getRules(props) {\n const result = [];\n\n // required\n if (props.required) {\n result.push(getRule('required', props));\n }\n\n const maxLength = Number(props.maxLength);\n const minLength = Number(props.minLength);\n if (minLength || maxLength) {\n result.push({\n minLength,\n maxLength,\n // minLengthMessage maxLengthMessage had been deprected, please use minmaxLength. TODO: removed in 2.0\n message:\n getCfgFromProps(props, 'minmaxLengthMessage') ||\n getCfgFromProps(props, 'minLengthMessage') ||\n getCfgFromProps(props, 'maxLengthMessage'),\n trigger:\n getCfgFromProps(props, 'minmaxLengthTrigger') ||\n getCfgFromProps(props, 'minLengthTrigger') ||\n getCfgFromProps(props, 'maxLengthTrigger'),\n });\n }\n\n // length\n if (props.length) {\n result.push(getRule('length', props));\n }\n\n // pattern\n if (props.pattern) {\n result.push(getRule('pattern', props));\n }\n\n // format\n if (['number', 'tel', 'url', 'email'].indexOf(props.format) > -1) {\n result.push(getRule('format', props));\n }\n\n const max = Number(props.max);\n const min = Number(props.min);\n // max min\n if (max || min) {\n result.push({\n min,\n max,\n // minMessage maxMessage had been deprected, please use minmaxLength. TODO: removed in 2.0\n message:\n getCfgFromProps(props, 'minmaxMessage') ||\n getCfgFromProps(props, 'minMessage') ||\n getCfgFromProps(props, 'maxMessage'),\n trigger:\n getCfgFromProps(props, 'minmaxTrigger') ||\n getCfgFromProps(props, 'minTrigger') ||\n getCfgFromProps(props, 'maxTrigger'),\n });\n }\n\n if (props.validator && typeof props.validator === 'function') {\n result.push({\n validator: props.validator,\n trigger: getCfgFromProps(props, 'validatorTrigger'),\n });\n }\n\n return result;\n}\n\nexport function getFieldInitCfg(props, displayName) {\n return {\n valueName: getValueName(props, displayName),\n trigger: props.trigger ? props.trigger : 'onChange',\n autoValidate: props.autoValidate,\n rules: getRules(props),\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Grid from '../grid';\nimport { obj } from '../util';\nimport Error from './error';\nimport { getFieldInitCfg } from './enhance';\n\nconst { Row, Col } = Grid;\n\n/** Form.Item\n * @description 手动传递了 wrapCol labelCol 会使用 Grid 辅助布局; labelAlign='top' 会强制禁用 Grid\n * @order 1\n */\nexport default class Item extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * label 标签的文本\n */\n label: PropTypes.node,\n /**\n * label 标签布局,通 `<Col>` 组件,设置 span offset 值,如 {span: 8, offset: 16},该项仅在垂直表单有效\n */\n labelCol: PropTypes.object,\n /**\n * 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol\n */\n wrapperCol: PropTypes.object,\n /**\n * 自定义提示信息,如不设置,则会根据校验规则自动生成.\n */\n help: PropTypes.node,\n /**\n * 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 位于错误信息后面\n */\n extra: PropTypes.node,\n /**\n * 校验状态,如不设置,则会根据校验规则自动生成\n * @enumdesc 成功, 失败, 校验中\n */\n validateState: PropTypes.oneOf(['error', 'success', 'loading']),\n /**\n * 配合 validateState 属性使用,是否展示 success/loading 的校验状态图标, 目前只有Input支持\n */\n hasFeedback: PropTypes.bool, //TODO: hasFeedback => validateStatus=[error,success,loading]\n /**\n * 自定义内联样式\n */\n style: PropTypes.object,\n id: PropTypes.string,\n /**\n * node 或者 function(values)\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * 单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 标签的位置\n * @enumdesc 上, 左, 内\n */\n labelAlign: PropTypes.oneOf(['top', 'left', 'inset']),\n /**\n * 标签的左右对齐方式\n * @enumdesc 左, 右\n */\n labelTextAlign: PropTypes.oneOf(['left', 'right']),\n /**\n * 扩展class\n */\n className: PropTypes.string,\n /**\n * [表单校验] 不能为空\n */\n required: PropTypes.bool,\n /**\n * required 的星号是否显示\n */\n asterisk: PropTypes.bool,\n /**\n * required 自定义错误信息\n */\n requiredMessage: PropTypes.string,\n /**\n * required 自定义触发方式\n */\n requiredTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * [表单校验] 最小值\n */\n min: PropTypes.number,\n /**\n * [表单校验] 最大值\n */\n max: PropTypes.number,\n /**\n * min/max 自定义错误信息\n */\n minmaxMessage: PropTypes.string,\n /**\n * min/max 自定义触发方式\n */\n minmaxTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * [表单校验] 字符串最小长度 / 数组最小个数\n */\n minLength: PropTypes.number,\n /**\n * [表单校验] 字符串最大长度 / 数组最大个数\n */\n maxLength: PropTypes.number,\n /**\n * minLength/maxLength 自定义错误信息\n */\n minmaxLengthMessage: PropTypes.string,\n /**\n * minLength/maxLength 自定义触发方式\n */\n minmaxLengthTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * [表单校验] 字符串精确长度 / 数组精确个数\n */\n length: PropTypes.number,\n /**\n * length 自定义错误信息\n */\n lengthMessage: PropTypes.string,\n /**\n * length 自定义触发方式\n */\n lengthTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 正则校验\n */\n pattern: PropTypes.any,\n /**\n * pattern 自定义错误信息\n */\n patternMessage: PropTypes.string,\n /**\n * pattern 自定义触发方式\n */\n patternTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * [表单校验] 四种常用的 pattern\n */\n format: PropTypes.oneOf(['number', 'email', 'url', 'tel']),\n /**\n * format 自定义错误信息\n */\n formatMessage: PropTypes.string,\n /**\n * format 自定义触发方式\n */\n formatTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * [表单校验] 自定义校验函数\n */\n validator: PropTypes.func,\n /**\n * validator 自定义触发方式\n */\n validatorTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 是否修改数据时自动触发校验\n */\n autoValidate: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n hasFeedback: false,\n };\n\n static contextTypes = {\n _formField: PropTypes.object,\n _formSize: PropTypes.oneOf(['small', 'medium']),\n };\n\n static _typeMark = 'form_item';\n\n /**\n * 从子元素里面提取表单组件\n */\n getNames() {\n const children = React.Children.toArray(this.props.children);\n return children\n .filter(c => {\n return c.props && ('name' in c.props || 'data-meta' in c.props);\n })\n .map(c => {\n return c.props.name || c.props.id;\n });\n }\n\n getHelper() {\n const { help } = this.props;\n const { _formField } = this.context;\n\n return (\n <Error name={help === undefined ? this.getNames() : undefined} field={_formField}>\n {help}\n </Error>\n );\n }\n\n getState() {\n const { validateState } = this.props;\n if (validateState) {\n return validateState;\n }\n\n if (this.context._formField) {\n const { getState } = this.context._formField;\n const names = this.getNames();\n if (!names.length) {\n return '';\n }\n\n // get first name\n return getState(names[0]);\n }\n\n return undefined;\n }\n\n getSize() {\n return this.props.size || this.context._formSize;\n }\n\n getItemLabel() {\n const {\n id,\n required,\n asterisk = required,\n label,\n labelCol,\n wrapperCol,\n prefix,\n labelAlign,\n labelTextAlign,\n } = this.props;\n\n if (!label) {\n return null;\n }\n\n const ele = (\n <label htmlFor={id || this.getNames()[0]} required={asterisk} key=\"label\">\n {label}\n </label>\n );\n\n const cls = classNames({\n [`${prefix}form-item-label`]: true,\n [`${prefix}left`]: labelTextAlign === 'left',\n });\n\n if ((wrapperCol || labelCol) && labelAlign !== 'top') {\n return (\n <Col {...labelCol} className={cls}>\n {ele}\n </Col>\n );\n }\n\n return <div className={cls}>{ele}</div>;\n }\n\n getItemWrapper() {\n const { hasFeedback, labelCol, wrapperCol, children, extra, labelAlign, prefix } = this.props;\n\n const state = this.getState();\n\n const childrenProps = { size: this.getSize() };\n if (state && (state === 'error' || hasFeedback)) {\n childrenProps.state = state;\n }\n\n if (labelAlign === 'inset') {\n childrenProps.label = this.getItemLabel();\n }\n\n let childrenNode = children;\n if (typeof children === 'function' && this.context._formField) {\n childrenNode = children(this.context._formField.getValues());\n }\n\n const ele = React.Children.map(childrenNode, child => {\n if (\n child &&\n typeof child.type === 'function' &&\n child.type._typeMark !== 'form_item' &&\n child.type._typeMark !== 'form_error'\n ) {\n let extraProps = childrenProps;\n if (this.context._formField && 'name' in child.props && !('data-meta' in child.props)) {\n extraProps = this.context._formField.init(\n child.props.name,\n {\n ...getFieldInitCfg(this.props, child.type.displayName),\n props: { ...child.props, ref: child.ref },\n },\n childrenProps,\n );\n } else {\n extraProps = Object.assign({}, child.props, extraProps);\n }\n\n return React.cloneElement(child, extraProps);\n }\n\n return child;\n });\n\n const help = this.getHelper();\n\n if ((wrapperCol || labelCol) && labelAlign !== 'top') {\n return (\n <Col {...wrapperCol} className={`${prefix}form-item-control`} key=\"item\">\n {ele}\n {help}\n {extra ? <div className={`${prefix}form-item-extra`}>{extra}</div> : null}\n </Col>\n );\n }\n\n return (\n <div className={`${prefix}form-item-control`}>\n {ele}\n {help}\n {extra ? <div className={`${prefix}form-item-extra`}>{extra}</div> : null}\n </div>\n );\n }\n\n render() {\n const { className, labelAlign, style, prefix, wrapperCol, labelCol, help } = this.props;\n const state = this.getState();\n const size = this.getSize();\n\n const itemClassName = classNames({\n [`${prefix}form-item`]: true,\n [`${prefix}${labelAlign}`]: labelAlign,\n [`has-${state}`]: !!state,\n 'has-help': !!help,\n [`${prefix}${size}`]: !!size,\n [`${className}`]: !!className,\n });\n\n // 垂直模式并且左对齐才用到\n const Tag = (wrapperCol || labelCol) && labelAlign !== 'top' ? Row : 'div';\n const label = labelAlign === 'inset' ? null : this.getItemLabel();\n\n return (\n <Tag {...obj.pickOthers(Item.propTypes, this.props)} className={itemClassName} style={style}>\n {label}\n {this.getItemWrapper()}\n </Tag>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../button';\nimport { func, obj, log } from '../util';\n\n/**\n * Form.Submit\n * @description 继承 Button API\n * @order 2\n */\nclass Submit extends React.Component {\n static propTypes = {\n /**\n * 点击提交后触发\n * @param {Object} value 数据\n * @param {Object} errors 错误数据\n * @param {class} field 实例\n */\n onClick: PropTypes.func,\n /**\n * 是否校验/需要校验的 name 数组\n */\n validate: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),\n /**\n * 自定义 field (在 Form 内不需要设置)\n */\n field: PropTypes.object,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n onClick: func.noop,\n };\n\n static contextTypes = {\n _formField: PropTypes.object,\n };\n\n handleClick = () => {\n const { onClick, validate } = this.props;\n const field = this.context._formField || this.props.field;\n\n if (!field) {\n log.warning('Form.Submit should be used in `Form`');\n onClick();\n return;\n }\n\n if (validate === true) {\n field.validate(errors => {\n onClick(field.getValues(), errors, field);\n });\n } else if (Array.isArray(validate)) {\n field.validate(validate, errors => {\n onClick(field.getValues(), errors, field);\n });\n } else {\n onClick(field.getValues(), null, field);\n }\n };\n\n render() {\n const { children } = this.props;\n\n return (\n <Button {...obj.pickOthers(Submit.propTypes, this.props)} onClick={this.handleClick}>\n {children}\n </Button>\n );\n }\n}\n\nexport default Submit;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../button';\nimport { func, obj, log } from '../util';\n\n/**\n * Form.Reset\n * @description 继承 Button API\n * @order 3\n */\nclass Reset extends React.Component {\n static propTypes = {\n /**\n * 自定义重置的字段\n */\n names: PropTypes.array,\n /**\n * 点击提交后触发\n */\n onClick: PropTypes.func,\n /**\n * 返回默认值\n */\n toDefault: PropTypes.bool,\n /**\n * 自定义 field (在 Form 内不需要设置)\n */\n field: PropTypes.object,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n onClick: func.noop,\n };\n\n static contextTypes = {\n _formField: PropTypes.object,\n };\n\n handleClick = () => {\n const { names, toDefault, onClick } = this.props;\n const field = this.context._formField || this.props.field;\n\n if (!field) {\n log.warning('Form.Reset should be used in `Form`');\n onClick();\n return;\n }\n\n if (toDefault) {\n field.resetToDefault(names);\n } else {\n field.reset(names);\n }\n\n onClick();\n };\n\n render() {\n const { children } = this.props;\n\n return (\n <Button {...obj.pickOthers(Reset.propTypes, this.props)} onClick={this.handleClick}>\n {children}\n </Button>\n );\n }\n}\n\nexport default Reset;\n","import ConfigProvider from '../config-provider';\nimport Form from './form';\nimport Item from './item';\nimport Submit from './submit';\nimport Reset from './reset';\nimport Error from './error';\n\nForm.Item = ConfigProvider.config(Item, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('validateStatus' in props) {\n deprecated('validateStatus', 'validateState', 'Form.Item');\n\n const { validateStatus, ...others } = props;\n props = { validateState: validateStatus, ...others };\n }\n\n return props;\n },\n});\nForm.Submit = Submit;\nForm.Reset = Reset;\nForm.Error = Error;\n\nexport default ConfigProvider.config(Form, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('direction' in props) {\n deprecated('direction', 'inline', 'Form');\n const { direction, ...others } = props;\n if (direction === 'hoz') {\n props = { inline: true, ...others };\n }\n }\n\n return props;\n },\n});\n","export default {\r\n momentLocale: 'en',\r\n Timeline: {\r\n expand: 'Expand',\r\n fold: 'Fold',\r\n },\r\n Balloon: {\r\n close: 'Close',\r\n confirm: 'Confirm',\r\n cancel: 'Cancel',\r\n },\r\n Card: {\r\n expand: 'Expand',\r\n fold: 'Fold',\r\n },\r\n Calendar: {\r\n today: 'Today',\r\n now: 'Now',\r\n ok: 'OK',\r\n clear: 'Clear',\r\n month: 'Month',\r\n year: 'Year',\r\n prevYear: 'Previous Year',\r\n nextYear: 'Next Year',\r\n prevMonth: 'Previous Month',\r\n nextMonth: 'Next Month',\r\n prevDecade: 'Previous Twelve Years',\r\n nextDecade: 'Next Twelve Years',\r\n yearSelectAriaLabel: 'Select Year',\r\n monthSelectAriaLabel: 'Select Month',\r\n format: {\r\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\r\n '_',\r\n ),\r\n shortMonths: 'Jan._Feb._Mar._Apr._May._Jun._Jul._Aug._Sep._Oct._Nov._Dec.'.split('_'),\r\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\r\n shortWeekdays: 'Sun._Mon._Tues._Wed._Thur._Fri._Sat.'.split('_'),\r\n veryShortWeekdays: 'Su._Mo._Tu._We._Th._Fr._Sa.'.split('_'),\r\n yearLabel: 'YYYY',\r\n },\r\n },\r\n DatePicker: {\r\n placeholder: 'Select Date',\r\n datetimePlaceholder: 'Select Date And Time',\r\n monthPlaceholder: 'Select Month',\r\n yearPlaceholder: 'Select Year',\r\n now: 'Now',\r\n selectTime: 'Select Time',\r\n selectDate: 'Select Date',\r\n ok: 'OK',\r\n clear: 'Clear',\r\n startPlaceholder: 'Start Date',\r\n endPlaceholder: 'End Date',\r\n hour: 'H',\r\n minute: 'M',\r\n second: 'S',\r\n },\r\n Dialog: {\r\n close: 'Close',\r\n ok: 'OK',\r\n cancel: 'Cancel',\r\n },\r\n Message: {\r\n closeAriaLabel: 'Close',\r\n },\r\n Pagination: {\r\n goTo: 'Go to',\r\n page: 'Page',\r\n total: 'Page {current}, {total} pages',\r\n labelPrev: 'Previous page, current page {current}',\r\n labelNext: 'Next page, current page {current}',\r\n inputAriaLabel: 'Please enter what page to skip to',\r\n selectAriaLabel: 'Please select how many items are displayed on each page',\r\n pageSize: 'items/page',\r\n },\r\n Input: {\r\n clear: 'Clear',\r\n },\r\n Select: {\r\n selectPlaceholder: 'Please Select',\r\n autoCompletePlaceholder: 'Please Input',\r\n notFoundContent: 'No Options',\r\n maxTagPlaceholder: 'Selected {selected}/{total} Total',\r\n },\r\n Table: {\r\n empty: 'No Data',\r\n ok: 'OK',\r\n reset: 'Reset',\r\n asc: 'Ascending Order',\r\n desc: 'Descending Order',\r\n expanded: 'Expanded',\r\n folded: 'Folded',\r\n filter: 'Filter',\r\n selectAll: 'Select All',\r\n },\r\n TimePicker: {\r\n placeholder: 'Select Time',\r\n startPlaceholder: 'Start Time',\r\n endPlaceholder: 'End Time',\r\n clear: 'Clear',\r\n hour: 'H',\r\n minute: 'M',\r\n second: 'S',\r\n },\r\n Transfer: {\r\n items: 'items',\r\n item: 'item',\r\n moveAll: 'Move All',\r\n searchPlaceholder: 'Please Input',\r\n moveToLeft: 'Uncheck Selected Elements',\r\n moveToRight: 'Submit Selected Elements',\r\n },\r\n Upload: {\r\n card: {\r\n cancel: 'Cancel',\r\n addPhoto: 'Add Picture',\r\n download: 'Download',\r\n delete: 'Delete',\r\n },\r\n drag: {\r\n text: 'Click or Drag the file to this area to upload',\r\n hint: 'Support docx, xls, PDF, rar, zip, PNG, JPG and other files upload',\r\n },\r\n upload: {\r\n delete: 'Delete',\r\n },\r\n },\r\n Search: {\r\n buttonText: 'Search',\r\n },\r\n Tag: {\r\n delete: 'Delete',\r\n },\r\n Rating: {\r\n description: 'Rating Options',\r\n },\r\n};\r\n","export default {\r\n momentLocale: 'ja',\r\n Timeline: {\r\n expand: '開く',\r\n fold: '閉じる',\r\n },\r\n Balloon: {\r\n close: '閉鎖する',\r\n confirm: '確定',\r\n cancel: 'キャンセル',\r\n },\r\n Card: {\r\n expand: '開く',\r\n fold: '閉じる',\r\n },\r\n Calendar: {\r\n today: '本日',\r\n now: '現在',\r\n ok: '確定',\r\n clear: 'クリア',\r\n month: '月',\r\n year: '年',\r\n prevYear: '前の年',\r\n nextYear: '次の年',\r\n prevMonth: '前の月',\r\n nextMonth: '来月',\r\n prevDecade: '前の12年',\r\n nextDecade: '後12年',\r\n yearSelectAriaLabel: '年を選んで',\r\n monthSelectAriaLabel: '月を選択し',\r\n format: {\r\n months: '1 月_2 月_3 月_4 月_5 月_6 月_7 月_8 月_9 月_10 月_11 月_12 月'.split('_'),\r\n shortMonths: '1 月_2 月_3 月_4 月_5 月_6 月_7 月_8 月_9 月_10 月_11 月_12 月'.split('_'),\r\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\r\n shortWeekdays: '日_月_火_水_木_金_土'.split('_'),\r\n veryShortWeekdays: '日_月_火_水_木_金_土'.split('_'),\r\n yearLabel: 'YYYY 年',\r\n },\r\n },\r\n DatePicker: {\r\n placeholder: '日付けの選択',\r\n datetimePlaceholder: '日時を選択してください',\r\n monthPlaceholder: '月を選択してください',\r\n yearPlaceholder: '年を選択してください',\r\n now: '現在',\r\n selectTime: '時間の選択',\r\n selectDate: '日付けの選択',\r\n ok: '確定',\r\n clear: 'クリア',\r\n startPlaceholder: '開始日',\r\n endPlaceholder: '最終日',\r\n hour: '時',\r\n minute: '分',\r\n second: '秒',\r\n },\r\n Dialog: {\r\n close: '閉鎖する',\r\n ok: '確定',\r\n cancel: 'キャンセル',\r\n },\r\n Message: {\r\n closeAriaLabel: '閉鎖する',\r\n },\r\n Pagination: {\r\n goTo: '行きます',\r\n page: 'ページへ',\r\n total: '第{current}ページ、{total}ページ',\r\n labelPrev: '前のページ、当面の第{current}ページ',\r\n labelNext: '次のページ、当面の第{current}ページ',\r\n inputAriaLabel: '数ページまでジャンプしてください',\r\n selectAriaLabel: 'ページごとに数本表示してください',\r\n pageSize: '条/ページ',\r\n },\r\n Input: {\r\n clear: 'クリア',\r\n },\r\n Select: {\r\n selectPlaceholder: '選択',\r\n autoCompletePlaceholder: '入力',\r\n notFoundContent: '選択肢なし',\r\n maxTagPlaceholder: '選択済み {selected}/{total}',\r\n },\r\n Table: {\r\n empty: 'データなし',\r\n ok: '確定',\r\n reset: 'リセット',\r\n asc: '昇順',\r\n desc: '降順',\r\n expanded: '展開している',\r\n folded: '収まった',\r\n filter: 'フィルタ',\r\n selectAll: '全選',\r\n },\r\n TimePicker: {\r\n placeholder: '時間の選択',\r\n startPlaceholder: '開始時間',\r\n endPlaceholder: '終了時間',\r\n clear: 'クリア',\r\n hour: '時',\r\n minute: '分',\r\n second: '秒',\r\n },\r\n Transfer: {\r\n items: '項目',\r\n item: '項目',\r\n moveAll: '全ての移動',\r\n searchPlaceholder: '入力',\r\n moveToLeft: '選択した要素のチェックを外します',\r\n moveToRight: '選択した要素を送信',\r\n },\r\n Upload: {\r\n card: {\r\n cancel: 'キャンセル',\r\n addPhoto: '画像アップロード',\r\n download: 'ダウンロード',\r\n delete: '削除',\r\n },\r\n drag: {\r\n text: '枠にドラッグしてアップロード',\r\n hint: 'docx, xls, PDF, rar, zip, PNG, JPG 等がサポートしています',\r\n },\r\n upload: {\r\n delete: '削除',\r\n },\r\n },\r\n Search: {\r\n buttonText: 'サーチ',\r\n },\r\n Tag: {\r\n delete: 'デリート',\r\n },\r\n Rating: {\r\n description: '評価オプション',\r\n },\r\n};\r\n","export default {\r\n momentLocale: 'zh-tw',\r\n Timeline: {\r\n expand: '展開',\r\n fold: '收起',\r\n },\r\n Balloon: {\r\n close: '關閉',\r\n confirm: '確定',\r\n cancel: '取消',\r\n },\r\n Card: {\r\n expand: '展開',\r\n fold: '收起',\r\n },\r\n Calendar: {\r\n today: '今天',\r\n now: '此刻',\r\n ok: '確定',\r\n clear: '清除',\r\n month: '月',\r\n year: '年',\r\n prevYear: '上一年',\r\n nextYear: '下一年',\r\n prevMonth: '上个月',\r\n nextMonth: '下个月',\r\n prevDecade: '前十二年',\r\n nextDecade: '后十二年',\r\n yearSelectAriaLabel: '選擇年份',\r\n monthSelectAriaLabel: '選擇月份',\r\n format: {\r\n months: '1 月_2 月_3 月_4 月_5 月_6 月_7 月_8 月_9 月_10 月_11 月_12 月'.split('_'),\r\n shortMonths: '1 月_2 月_3 月_4 月_5 月_6 月_7 月_8 月_9 月_10 月_11 月_12 月'.split('_'),\r\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\r\n shortWeekdays: '日_一_二_三_四_五_六'.split('_'),\r\n veryShortWeekdays: '日_一_二_三_四_五_六'.split('_'),\r\n yearLabel: 'YYYY 年',\r\n },\r\n },\r\n DatePicker: {\r\n placeholder: '請選擇日期',\r\n datetimePlaceholder: '請選擇日期和時間',\r\n monthPlaceholder: '請選擇月',\r\n yearPlaceholder: '請選擇年',\r\n now: '此刻',\r\n selectTime: '選擇時間',\r\n selectDate: '選擇日期',\r\n ok: '確定',\r\n clear: '清除',\r\n startPlaceholder: '起始日期',\r\n endPlaceholder: '結束日期',\r\n hour: '時',\r\n minute: '分',\r\n second: '秒',\r\n },\r\n Dialog: {\r\n close: '關閉',\r\n ok: '確認',\r\n cancel: '取消',\r\n },\r\n Message: {\r\n closeAriaLabel: '關閉',\r\n },\r\n Pagination: {\r\n goTo: '前往',\r\n page: '頁',\r\n total: '第{current}頁,共{total}頁',\r\n labelPrev: '上一頁,當前第{current}頁',\r\n labelNext: '下一頁,當前第{current}頁',\r\n inputAriaLabel: '請輸入跳轉到第幾頁',\r\n selectAriaLabel: '請選擇每頁顯示幾條',\r\n pageSize: '條/頁',\r\n },\r\n Input: {\r\n clear: '清除',\r\n },\r\n Select: {\r\n selectPlaceholder: '請選擇',\r\n autoCompletePlaceholder: '請輸入',\r\n notFoundContent: '無選項',\r\n maxTagPlaceholder: '已選擇 {selected}/{total} 項',\r\n },\r\n Table: {\r\n empty: '沒有數據',\r\n ok: '確定',\r\n reset: '重置',\r\n asc: '昇冪',\r\n desc: '降序',\r\n expanded: '已展開',\r\n folded: '已折疊',\r\n filter: '篩選',\r\n selectAll: '全選',\r\n },\r\n TimePicker: {\r\n placeholder: '請選擇時間',\r\n startPlaceholder: '開始時間',\r\n endPlaceholder: '結束時間',\r\n clear: '清除',\r\n hour: '時',\r\n minute: '分',\r\n second: '秒',\r\n },\r\n Transfer: {\r\n items: '項',\r\n item: '項',\r\n moveAll: '移動全部',\r\n searchPlaceholder: '請輸入',\r\n moveToLeft: '撤銷選中元素',\r\n moveToRight: '提交選中元素',\r\n },\r\n Upload: {\r\n card: {\r\n cancel: '取消',\r\n addPhoto: '上傳圖片',\r\n download: '下載',\r\n delete: '刪除',\r\n },\r\n drag: {\r\n text: '點擊或者拖動文件到虛線框內上傳',\r\n hint: '支持 docx, xls, PDF, rar, zip, PNG, JPG 等類型的文件',\r\n },\r\n upload: {\r\n delete: '刪除',\r\n },\r\n },\r\n Search: {\r\n buttonText: '檢索',\r\n },\r\n Tag: {\r\n delete: '删除',\r\n },\r\n Rating: {\r\n description: '評分選項',\r\n },\r\n};\r\n","import enUS from './en-us.js';\r\nimport jaJP from './ja-jp.js';\r\nimport zhCN from './zh-cn.js';\r\nimport zhTW from './zh-tw.js';\r\n\r\nexport default {\r\n 'zh-cn': zhCN,\r\n 'zh-tw': zhTW,\r\n 'ja-jp': jaJP,\r\n 'en-us': enUS,\r\n};\r\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport ConfigProvider from '../config-provider';\n\nclass Link extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n type: PropTypes.oneOf(['normal', 'primary']),\n href: PropTypes.string,\n target: PropTypes.string,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n }\n\n static defaultProps = {\n prefix: 'next-',\n type: 'primary',\n }\n\n render() {\n const { prefix, type, href, target, className, style, children, ...others } = this.props;\n\n const linkCls = classNames({\n [`${prefix}link`]: true,\n [`${prefix}link-${type}`]: type,\n [className]: !!className,\n });\n\n return (\n <a\n className={linkCls}\n href={href}\n target={target}\n style={style}\n {...others}\n >\n {children}\n </a>\n );\n }\n}\n\nexport default ConfigProvider.config(Link);\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Button from '../button';\nimport Icon from '../icon';\nimport Menu from '../menu';\nimport Overlay from '../overlay';\nimport { obj, func } from '../util';\n\nconst { Popup } = Overlay;\n\n/**\n * MenuButton\n */\nclass MenuButton extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 按钮上的文本内容\n */\n label: PropTypes.node,\n /**\n * 弹层是否与按钮宽度相同\n */\n autoWidth: PropTypes.bool,\n /**\n * 弹层触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层容器\n */\n popupContainer: PropTypes.func,\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 popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层属性透传\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 默认激活的菜单项(用法同 Menu 非受控)\n */\n defaultSelectedKeys: PropTypes.array,\n /**\n * 激活的菜单项(用法同 Menu 受控)\n */\n selectedKeys: PropTypes.array,\n /**\n * 菜单的选择模式,同 Menu\n */\n selectMode: PropTypes.oneOf(['single', 'multiple']),\n /**\n * 点击菜单项后的回调,同 Menu\n */\n onItemClick: PropTypes.func,\n /**\n * 选择菜单后的回调,同 Menu\n */\n onSelect: PropTypes.func,\n /**\n * 菜单属性透传\n */\n menuProps: PropTypes.object,\n style: PropTypes.object,\n className: PropTypes.string,\n children: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n autoWidth: true,\n popupTriggerType: 'click',\n onVisibleChange: func.noop,\n onItemClick: func.noop,\n onSelect: func.noop,\n defaultSelectedKeys: [],\n menuProps: {},\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n selectedKeys: props.selectedKeys || props.defaultSelectedKeys,\n visible: props.visible || props.defaultVisible,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n\n if ('selectedKeys' in nextProps) {\n this.setState({\n selectedKeys: nextProps.selectedKeys,\n });\n }\n }\n\n clickMenuItem = (key, ...others) => {\n const { selectMode } = this.props;\n\n this.props.onItemClick(key, ...others);\n\n if (selectMode === 'multiple') {\n return;\n }\n\n this.onPopupVisibleChange(false, 'menuSelect');\n };\n\n selectMenu = (keys, ...others) => {\n if (!('selectedKeys' in this.props)) {\n this.setState({\n selectedKeys: keys,\n });\n }\n this.props.onSelect(keys, ...others);\n };\n\n onPopupOpen = () => {\n const button = findDOMNode(this);\n if (this.props.autoWidth && button && this.menu) {\n this.menu.style.width = `${button.offsetWidth}px`;\n }\n };\n\n onPopupVisibleChange = (visible, type) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, type);\n };\n\n _menuRefHandler = ref => {\n this.menu = findDOMNode(ref);\n\n const refFn = this.props.menuProps.ref;\n if (typeof refFn === 'function') {\n refFn(ref);\n }\n };\n\n render() {\n const {\n prefix,\n size,\n style,\n className,\n label,\n popupTriggerType,\n popupContainer,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n selectMode,\n menuProps,\n children,\n ...others\n } = this.props;\n\n const { state } = this;\n\n const classNames = classnames(\n {\n [`${prefix}menu-btn`]: true,\n [`${prefix}expand`]: state.visible,\n opened: state.visible,\n },\n className,\n );\n\n const popupClassNames = classnames(\n {\n [`${prefix}menu-btn-popup`]: true,\n },\n popupClassName,\n );\n\n const trigger = (\n <Button\n style={style}\n className={classNames}\n size={size}\n {...obj.pickOthers(MenuButton.propTypes, others)}\n >\n {label} <Icon type=\"chevron-down-s\" className={`${prefix}menu-btn-arrow`} />\n </Button>\n );\n\n return (\n <Popup\n animation={{ in: 'fadeInDown', out: 'fadeOutUp' }}\n {...popupProps}\n followTrigger={followTrigger}\n visible={state.visible}\n onVisibleChange={this.onPopupVisibleChange}\n trigger={trigger}\n triggerType={popupTriggerType}\n container={popupContainer}\n onOpen={this.onPopupOpen}\n offset={[0, 4]}\n style={popupStyle}\n className={popupClassNames}\n >\n <Menu\n {...menuProps}\n className={`${prefix}btn-menu`}\n ref={this._menuRefHandler}\n selectedKeys={state.selectedKeys}\n selectMode={selectMode}\n onSelect={this.selectMenu}\n onItemClick={this.clickMenuItem}\n >\n {children}\n </Menu>\n </Popup>\n );\n }\n}\n\nMenuButton.Item = Menu.Item;\nMenuButton.Group = Menu.Group;\nMenuButton.Divider = Menu.Divider;\n\nexport default MenuButton;\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../icon';\nimport { KEYCODE } from '../util';\nimport ConfigProvider from '../config-provider';\n\n/** Switch */\nclass Switch extends React.Component {\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n pure: PropTypes.bool,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * 是否在加载中\n */\n loading: PropTypes.bool,\n /**\n * 开关状态改变是触发此事件\n * @param {Boolean} checked 是否为打开状态\n * @param {Event} e DOM事件对象\n */\n onChange: PropTypes.func,\n /**\n * 开关当前的值(针对受控组件)\n */\n checked: PropTypes.bool,\n /**\n * 开关默认值 (针对非受控组件)\n */\n defaultChecked: PropTypes.bool,\n /**\n * 表示开关被禁用\n */\n disabled: PropTypes.bool,\n /**\n * switch的尺寸\n * @enumdesc 正常大小, 缩小版大小\n */\n size: PropTypes.oneOf(['medium', 'small']),\n /**\n * 鼠标点击事件\n * @param {Event} e DOM事件对象\n */\n onClick: PropTypes.func,\n /**\n * 键盘按键事件\n * @param {Event} e DOM事件对象\n */\n onKeyDown: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n loading: false,\n disabled: false,\n size: 'medium',\n defaultChecked: false,\n onChange: () => {},\n };\n\n constructor(props, context) {\n super(props, context);\n\n const checked = props.checked || props.defaultChecked;\n this.state = {\n checked,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('checked' in nextProps) {\n let { checked } = nextProps;\n if (checked === undefined) {\n checked = false;\n }\n this.setState({\n checked,\n });\n }\n }\n\n onChange = ev => {\n const checked = !this.state.checked;\n\n if (!('checked' in this.props)) {\n this.setState({\n checked,\n });\n }\n this.props.onChange(checked, ev);\n this.props.onClick && this.props.onClick(ev);\n };\n\n onKeyDown = e => {\n if (e.keyCode === KEYCODE.ENTER || e.keyCode === KEYCODE.SPACE) {\n this.onChange(e);\n }\n this.props.onKeyDown && this.props.onKeyDown(e);\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n prefix,\n className,\n loading,\n disabled,\n size,\n rtl,\n ...others\n } = this.props;\n const status = this.state.checked ? 'on' : 'off';\n\n let _size = size;\n if (_size !== 'small' && _size !== 'medium') {\n _size = 'medium';\n }\n\n const classes = classNames({\n [`${prefix}switch`]: true,\n [`${prefix}switch-${status}`]: true,\n [`${prefix}switch-loading`]: loading,\n [`${prefix}switch-${_size}`]: true,\n [className]: className,\n });\n let attrs;\n\n if (!disabled && !loading) {\n attrs = {\n onClick: this.onChange,\n tabIndex: 0,\n onKeyDown: this.onKeyDown,\n disabled: false,\n };\n } else {\n attrs = {\n disabled: true,\n };\n }\n\n return (\n <div\n role=\"switch\"\n dir={rtl ? 'rtl' : undefined}\n tabIndex=\"0\"\n {...others}\n className={classes}\n {...attrs}\n aria-checked={this.state.checked}\n >\n { loading ? <Icon className=\"loading-icon\" type=\"loading\" /> : null }\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(Switch);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ConfigProvider from '../config-provider';\nimport cls from 'classnames';\nimport Button from '../button';\nimport Input from '../input';\nimport Switch from '../switch';\nimport Balloon from '../balloon';\nimport { events, KEYCODE } from '../util';\n\nconst { Tooltip } = Balloon;\n\nclass Modal extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n /**\n * 是否默认可见,非受控\n */\n defaultVisible: PropTypes.bool,\n /**\n * 是否可见,受控\n */\n visible: PropTypes.bool,\n /**\n * 点击关闭按钮回调\n */\n onClose: PropTypes.func,\n /**\n * Modal标题\n */\n title: PropTypes.string.isRequired,\n /**\n * Modal标题是否可编辑\n */\n titleEditable: PropTypes.bool,\n /**\n * 标题编辑图标提示文案\n */\n titleEditTooltip: PropTypes.string,\n /**\n * 可编辑时标题输入框的宽度\n */\n titleInputWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * 标题编辑回调\n */\n onEditTitleChange: PropTypes.func,\n /**\n * Modal描述\n */\n description: PropTypes.string,\n /**\n * 操作区\n */\n operations: PropTypes.element,\n /**\n * 侧边栏内容\n */\n sideDrawer: PropTypes.node,\n /**\n * 侧边栏内容宽度\n */\n sideDrawerWidth: PropTypes.number,\n /**\n * 侧边栏切换显示Switch前label\n */\n sideDrawerLabel: PropTypes.string,\n /**\n * 侧边栏内容是否可见\n */\n sideDrawerVisible: PropTypes.bool,\n /**\n * 侧边栏内容切换可见回调\n */\n onSideDrawerVisibleChange: PropTypes.func,\n /**\n * 是否支持 esc 按键关闭弹层\n */\n canCloseByEsc: PropTypes.bool,\n }\n\n static defaultProps = {\n prefix: 'next-',\n sideDrawerWidth: 400,\n titleEditTooltip: '点击即可编辑',\n onClose: () => {},\n onSideDrawerVisibleChange: () => {},\n onEditTitleChange: () => {},\n canCloseByEsc: true,\n }\n\n constructor(props) {\n super(props);\n this.state = {\n visible: 'visible' in props ? props.visible : (props.defaultVisible || false),\n isEditing: false,\n };\n this.container = document.createElement('div');\n }\n\n componentDidMount() {\n document.body.appendChild(this.container);\n if (this.state.visible) {\n document.body.classList.add('next-modal-open');\n }\n this.addDocumentEvents();\n }\n\n addDocumentEvents = () => {\n if (this.props.canCloseByEsc) {\n this._keydownEvents = events.on(document, 'keydown', this.handleDocumentKeyDown);\n }\n }\n\n handleDocumentKeyDown = (e) => {\n if (this.state.visible && e.keyCode === KEYCODE.ESC) {\n this.setState({\n visible: false,\n });\n }\n }\n\n removeDocumentEvents = () => {\n if (this._keydownEvents) {\n this._keydownEvents.off();\n this._keydownEvents = null;\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.visible !== this.props.visible) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n componentDidUpdate() {\n if (this.state.visible === false) {\n document.body.classList.remove('next-modal-open');\n }\n }\n\n componentWillUnmount() {\n document.body.removeChild(this.container);\n document.body.classList.remove('next-modal-open');\n this.container = null;\n this.removeDocumentEvents();\n }\n\n onSideDrawerVisibleChange = (checked) => {\n this.props.onSideDrawerVisibleChange(checked);\n }\n\n onEditTitleChange = (value) => {\n this.props.onEditTitleChange(value);\n }\n\n onEnterEditing = () => {\n this.setState({\n isEditing: true,\n });\n }\n\n onLeaveEditing = () => {\n this.setState({\n isEditing: false,\n });\n }\n\n onClose = () => {\n const { onClose } = this.props;\n if (!('visible' in this.props)) {\n this.setState({\n visible: false,\n });\n }\n onClose();\n }\n\n renderTitle = () => {\n const { prefix, title, titleEditable, titleEditTooltip, titleInputWidth } = this.props;\n const { isEditing } = this.state;\n const editTitle = isEditing ?\n (<Input\n size=\"xs\"\n autoFocus\n value={title}\n onChange={this.onEditTitleChange}\n onBlur={this.onLeaveEditing}\n onPressEnter={this.onLeaveEditing}\n style={{ width: titleInputWidth }}\n />)\n :\n (\n <span>\n <span className=\"edit-title\">{title}</span>\n <Tooltip\n trigger={\n <Button.Icon\n className={`${prefix}modal-edit-icon`}\n type=\"secondary\"\n color=\"gray\"\n name=\"pencil\"\n onClick={this.onEnterEditing}\n />}\n align=\"r\"\n >\n {titleEditTooltip}\n </Tooltip>\n </span>\n );\n return (\n <div className={`${prefix}modal-title`}>\n {\n titleEditable ? editTitle : title\n }\n </div>\n );\n }\n\n renderHeader = () => {\n const {\n prefix,\n description,\n operations,\n sideDrawer,\n sideDrawerLabel,\n sideDrawerVisible,\n } = this.props;\n const title = this.renderTitle();\n return (\n <div className={`${prefix}modal-header`}>\n <div className=\"left-part\">\n { title }\n <div className={`${prefix}modal-description`}>\n { description }\n </div>\n </div>\n <div className=\"right-part\">\n <div className={`${prefix}modal-operations`}>{operations}</div>\n {\n sideDrawer ?\n <div className={`${prefix}modal-side-drawer-switch`}>\n <span className={`${prefix}modal-side-drawer-switch-label`}>{sideDrawerLabel}</span>\n <Switch size=\"small\" checked={sideDrawerVisible} onChange={this.onSideDrawerVisibleChange} />\n </div> : null\n }\n <Button.Icon className={`${prefix}modal-close`} name=\"remove\" color=\"gray\" onClick={this.onClose} />\n </div>\n </div>\n );\n }\n\n renderBody = () => {\n const { prefix, sideDrawer, sideDrawerVisible, sideDrawerWidth, children } = this.props;\n return (\n <div className={`${prefix}modal-body`}>\n <div className={`${prefix}modal-children`}>{children}</div>\n {\n sideDrawer ?\n <div\n className={cls({\n [`${prefix}modal-side-drawer`]: true,\n [`${prefix}modal-side-drawer-visible`]: sideDrawerVisible,\n })}\n style={{\n width: sideDrawerVisible ? sideDrawerWidth : 0,\n }}\n >\n {sideDrawer}\n </div> : null\n }\n </div>\n );\n }\n\n renderModal = () => {\n const { prefix, className, style } = this.props;\n const header = this.renderHeader();\n const body = this.renderBody();\n return (\n <div\n className={cls({\n [`${prefix}modal`]: true,\n [className]: !!className,\n })}\n style={style}\n >\n { header }\n { body }\n </div>\n );\n }\n\n render() {\n const { visible } = this.state;\n if (visible) {\n return ReactDOM.createPortal(\n this.renderModal(),\n this.container\n );\n }\n return null;\n }\n}\n\nexport default ConfigProvider.config(Modal);\n","import { unmountComponentAtNode, render } from 'react-dom';\n\nexport default class ServiceManager {\n constructor(queue, tag = 'span') {\n this.queue = queue;\n this.tag = tag;\n }\n\n handleClose = (key) => {\n this.queue.delete(key);\n }\n\n close(key) {\n this.handleClose(key);\n }\n\n destroy() {\n this.queue.deleteAll();\n if (this.el) {\n unmountComponentAtNode(this.el);\n document.body.removeChild(this.el);\n this.el = null;\n }\n }\n\n get mountNode() {\n if (this.el) {\n return this.el;\n }\n const node = this.createMountNode(this.tag);\n this.el = node;\n return node;\n }\n\n createSlice(key, duration) {\n let timeoutKey;\n const startTimeout = () => {\n if (typeof duration === 'number' && duration !== 0) {\n timeoutKey = window.setTimeout(() => {\n this.handleClose(key);\n }, duration);\n }\n };\n const clearTimeout = () => {\n if (timeoutKey) {\n window.clearTimeout(timeoutKey);\n }\n };\n startTimeout();\n return { clearTimeout, startTimeout };\n }\n\n createMountNode(tag) {\n const el = document.createElement(tag);\n document.body.appendChild(el);\n return el;\n }\n\n flush(component, callback) {\n render(component, this.mountNode, callback);\n }\n}\n","import ServiceQueue from './base/service-manager/service-queue';\n\nexport default class ToastQueue extends ServiceQueue {\n getDuplicationKey(props) {\n const duplicatedItem = this.queue.find(item => {\n for (const key in props) {\n if (JSON.stringify(props[key]) !== JSON.stringify(item[key])) {\n return false;\n }\n }\n return true;\n });\n return duplicatedItem && duplicatedItem.key;\n }\n}\n","import { guid } from '../../../util';\n\nexport default class ServiceQueue {\n constructor() {\n this.innerQueue = [];\n this.innerSubscribers = [];\n }\n\n get queue() {\n return this.innerQueue;\n }\n\n set queue(value) {\n this.innerQueue = value;\n this.publish();\n }\n\n get subscribers() {\n return this.innerSubscribers;\n }\n\n set subscribers(value) {\n this.innerSubscribers = value;\n this.publish();\n }\n\n add(value) {\n this.queue = [...this.queue, value];\n return value;\n }\n\n delete(key) {\n this.queue = this.queue.filter(stack => {\n return stack.key !== key;\n });\n }\n\n deleteAll() {\n this.queue = [];\n }\n\n subscribe(next) {\n const key = guid();\n const nextSubscriber = {\n key,\n next,\n };\n this.subscribers = [...this.subscribers, nextSubscriber];\n return key;\n }\n\n unsubscribe(key) {\n this.subscribers = this.subscribers.filter(subscriber => {\n return subscriber.key !== key;\n });\n }\n\n unsubscribeAll() {\n this.subscribers = [];\n }\n\n publish() {\n if (this.subscribers.length !== 0) {\n this.subscribers.forEach(subscriber => {\n const { next } = subscriber;\n next(this.queue);\n });\n }\n }\n}\n","export const ToastStatus = Object.freeze({\n Error: 'error',\n Success: 'success',\n Warning: 'warning',\n Info: 'info',\n});\n","/* eslint-disable import/prefer-default-export */\nimport { attach } from './attach';\nimport { str, func, dom } from '../../../util';\n\nconst getStylePropertyValue = (decl, property) => {\n return decl.getPropertyValue(property);\n};\n\nconst configRE = /((?:\\d?\\.)?\\d+(?:ms|s))\\s([\\s\\S]+)/;\nconst parseConfig = (config) => {\n const [, duration, easing] = config.match(configRE);\n return {\n duration,\n easing,\n };\n};\n\nconst numberifyDuration = (duration) => {\n if (/ms$/.test(duration)) {\n return parseFloat(duration.slice(0, -2));\n } else if (/s$/.test(duration)) {\n return parseFloat(duration.slice(0, -1)) * 1000;\n } else {\n throw new Error('Numberify duration failed.');\n }\n};\n\nexport const motion = (config, initial, end, delay) => {\n let duration;\n let easing;\n\n if (typeof config === 'number') {\n duration = config.toString();\n } else {\n const ret = parseConfig(config);\n duration = ret.duration;\n easing = ret.easing || 'ease';\n }\n\n if (duration == null) {\n throw new Error('transition duration should be specified.');\n }\n\n return (el, callback) => {\n const orginStyle = el.getAttribute('style');\n const currentStyle = {};\n const computedStyle = window.getComputedStyle(el);\n const transitionRule = [];\n let hiddenRule = '';\n\n for (const i in initial) {\n if (Object.prototype.hasOwnProperty.call(initial, i) && initial[i] != null) {\n const propertyName = str.hyphenate(i);\n transitionRule.push(`${propertyName} ${duration} ${easing}`);\n currentStyle[i] = getStylePropertyValue(computedStyle, propertyName);\n\n if (i === 'height') {\n hiddenRule = hiddenRule || 'overflow: hidden;';\n el.style['overflow'] = 'hidden';\n }\n\n if (initial[i] === '*') {\n el.style[i] = currentStyle[i];\n } else {\n el.style[i] = initial[i];\n }\n }\n }\n\n // 强制触发重排以保证动画的执行\n dom.forceReflow(el);\n\n const run = (motionToken) => {\n el.style.cssText = `\n ${orginStyle}; transition: ${transitionRule.join(', ')}; ${hiddenRule}\n `;\n\n for (const i in end) {\n if (end.hasOwnProperty(i) && end[i] != null) {\n if (end[i] === '*') {\n el.style[i] = currentStyle[i];\n } else {\n el.style[i] = end[i];\n }\n }\n }\n\n attach(el, orginStyle, numberifyDuration(duration), motionToken)\n .then(() => callback())\n .catch((err) => {\n if (!err.canceled) {\n callback();\n }\n });\n\n return () => {\n if (motionToken && func.isFunction(motionToken.cancel)) {\n motionToken.cancel();\n }\n };\n };\n\n const token = Object.create(null);\n\n if (typeof delay === 'number') {\n let handler = null;\n const timeoutId = window.setTimeout(() => {\n handler = run(token);\n }, delay);\n\n return () => {\n if (!func.isFunction(handler) && timeoutId) {\n window.clearTimeout(timeoutId);\n } else if (func.isFunction(handler)) {\n handler();\n }\n };\n } else {\n return run(token);\n }\n };\n};\n","/* eslint-disable import/prefer-default-export */\nexport const attach = (el, style, duration, ref = {}) => {\n return new Promise((resolve, reject) => {\n const id = window.setTimeout(() => {\n if (el) {\n if (style) {\n el.setAttribute('style', style);\n } else {\n el.removeAttribute('style');\n }\n resolve();\n } else {\n reject();\n }\n }, duration);\n\n ref.cancel = () => {\n window.clearTimeout(id);\n reject({ canceled: true });\n };\n });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { ToastStatus } from './toast.schema';\nimport Icon from '../icon';\nimport Button from '../button';\nimport { func } from '../util';\nimport ConfigProvider from '../config-provider';\nimport { Transition, motion } from './base/transition';\n\nclass ToastItem extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n content: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n handlers: PropTypes.array,\n status: PropTypes.any,\n icon: PropTypes.string,\n closeable: PropTypes.bool,\n onClose: PropTypes.func,\n onPause: PropTypes.func,\n onStart: PropTypes.func,\n onRemove: PropTypes.func,\n onClickHandlers: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n };\n\n componentWillUnmount() {\n this.props.onRemove();\n }\n\n handleClose = () => {\n if (func.isFunction(this.props.onClose)) {\n this.props.onClose();\n }\n };\n\n handlePause = () => {\n if (func.isFunction(this.props.onPause)) {\n this.props.onPause();\n }\n };\n\n getSuffix() {\n switch (this.props.status) {\n case ToastStatus.Error:\n return 'error';\n case ToastStatus.Success:\n return 'success';\n case ToastStatus.Info:\n return 'info';\n case ToastStatus.Warning:\n return 'warning';\n default:\n return 'info';\n }\n }\n\n handleStart = () => {\n if (func.isFunction(this.props.onStart)) {\n this.props.onStart();\n }\n };\n\n getStatusClassName(classNamePrefix) {\n const suffix = this.getSuffix();\n return cx(classNamePrefix, suffix ? `${classNamePrefix}-is-${suffix}` : null);\n }\n\n getStatusIconName() {\n switch (this.props.status) {\n case ToastStatus.Success:\n return 'tick-o-fill';\n case ToastStatus.Warning:\n return 'warning-o-fill';\n case ToastStatus.Error:\n return 'remove-o-fill';\n default:\n return 'info-o-fill';\n }\n }\n\n renderContent(toastPrefix) {\n const cls = `${toastPrefix}-content`;\n return <div className={cls}>{this.renderTitle(toastPrefix)}</div>;\n }\n\n renderTitle(toastPrefix) {\n const titleCls = `${toastPrefix}-title`;\n const textCls = `${toastPrefix}-title-text`;\n return (\n <div className={titleCls}>\n {this.renderIcon(toastPrefix)}\n <div className={textCls}>\n {this.renderMessage(toastPrefix)}\n {this.renderHandlers(toastPrefix)}\n {this.renderDescription(toastPrefix)}\n </div>\n {this.renderCloseHandler(toastPrefix)}\n </div>\n );\n }\n\n renderHandlers(toastPrefix) {\n const { handlers, onClickHandlers } = this.props;\n if (!handlers) {\n return null;\n }\n const handlerCls = `${toastPrefix}-handlers`;\n if (typeof handlers !== 'string') {\n return <span className={handlerCls}>{handlers}</span>;\n }\n return (\n <Button className={handlerCls} type=\"primary\" text onClick={onClickHandlers}>\n {handlers}\n </Button>\n );\n }\n\n renderCloseHandler(toastPrefix) {\n const { closeable } = this.props;\n if (!closeable) {\n return null;\n }\n const iconCls = `${toastPrefix}-close-handler`;\n return <Icon className={iconCls} type=\"remove\" onClick={this.handleClose} size=\"small\" />;\n }\n\n renderStatusBar(toastPrefix) {\n const cls = `${toastPrefix}-solid-bar`;\n return <hr className={this.getStatusClassName(cls)} />;\n }\n\n renderIcon(toastPrefix) {\n if (this.props.icon !== undefined) {\n return this.props.icon;\n }\n const iconName = this.getStatusIconName();\n if (typeof iconName !== 'string') {\n return null;\n }\n const iconCls = `${toastPrefix}-symbol`;\n return <Icon className={this.getStatusClassName(iconCls)} type={iconName} />;\n }\n\n renderMessage(toastPrefix) {\n const { title } = this.props;\n if ((typeof title !== 'string' || title.length === 0) && typeof title !== 'object') {\n return null;\n }\n const msgCls = `${toastPrefix}-message`;\n return <h4 className={msgCls}>{title}</h4>;\n }\n\n renderDescription(toastPrefix) {\n const { content } = this.props;\n if ((typeof content !== 'string' || content.length === 0) && typeof content !== 'object') {\n return null;\n }\n const descCls = `${toastPrefix}-description`;\n return <p className={descCls}>{content}</p>;\n }\n\n render() {\n const { prefix, className, style } = this.props;\n const toastPrefix = `${prefix}toast`;\n\n const classes = cx({\n [`${toastPrefix}-component`]: true,\n [toastPrefix]: true,\n [className]: !!className,\n });\n\n return (\n <div\n className={classes}\n onMouseEnter={this.handlePause}\n onMouseLeave={this.handleStart}\n style={style}\n >\n {this.renderStatusBar(toastPrefix)}\n {this.renderContent(toastPrefix)}\n </div>\n );\n }\n}\n\nconst CSSMotion = {\n timeout: 320,\n enter: motion(\n '.32s cubic-bezier(0, 0.63, 0.26, 1.12)',\n {\n height: '0',\n opacity: '0',\n transform: 'scale(0.3) translateY(60px)',\n },\n {\n height: '*',\n opacity: '1',\n transform: 'scale(1) translateY(0px)',\n },\n ),\n exit: motion(\n '.32s cubic-bezier(0.8, 0, 0.4, 1)',\n {\n opacity: '1',\n height: '*',\n transform: 'scale(1)',\n },\n {\n opacity: '0',\n height: '0',\n transform: 'scale(0.5)',\n },\n ),\n};\n\nexport default ConfigProvider.config(Transition(CSSMotion, true)(ToastItem));\n","/* eslint-disable import/prefer-default-export */\nimport React from 'react';\nimport { Transition as TransitionItem } from 'react-transition-group';\nimport { func } from '../../../util';\n\n/**\n *\n * @param {object} config\n * @param {function} config.enter - fired before the \"entering\"\n * @param {function} config.exit - fired before the \"exiting\"\n * @param {number} [config.timeout=200]\n * @param {boolean} extraWrap\n */\nexport function Transition(config, extraWrap = false) {\n return ComposedComponent => {\n function Wrapped(props) {\n const onEnter = node => {\n if (config.enter) {\n config.enter(node, func.noop);\n }\n };\n\n const onExit = node => {\n if (config.exit) {\n config.exit(node, func.noop);\n }\n };\n\n const timeout = config.timeout === undefined ? 200 : config.timeout;\n const child = extraWrap ? (\n <div>\n <ComposedComponent {...props} />\n </div>\n ) : (\n <ComposedComponent {...props} />\n );\n\n return (\n <TransitionItem\n timeout={timeout}\n in={props.in}\n mountOnEnter\n unmountOnExit\n onEnter={onEnter}\n onExit={onExit}\n >\n {child}\n </TransitionItem>\n );\n }\n\n Wrapped.displayName = `Transition.${ComposedComponent.displayName || 'anonymous'}`;\n return Wrapped;\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { TransitionGroup } from 'react-transition-group';\nimport ToastItem from './toast-item.component';\nimport { func } from '../util';\n\nclass ToastContainer extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n toasts: PropTypes.array,\n placement: PropTypes.string,\n tmpl: PropTypes.any,\n onClose: PropTypes.func,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n placement: 'bottomLeft',\n tmpl: ToastItem,\n };\n\n static getDerivedStateFromProps(props, state) {\n if (state && state.tmpl && props.tmpl !== state.tmpl) {\n return { tmpl: props.tmpl };\n }\n return null;\n }\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n tmpl: props.tmpl,\n };\n }\n\n findToast = key => {\n const { toasts } = this.props;\n if (!Array.isArray(toasts)) {\n return null;\n }\n const toastIds = toasts.map(toast => toast.key);\n const index = toastIds.indexOf(key);\n return index > -1 ? toasts[index] : null;\n };\n\n handleClose = key => {\n const toast = this.findToast(key);\n if (toast) {\n const { clearTimeout, onClose } = toast;\n clearTimeout();\n if (func.isFunction(onClose)) {\n onClose(key);\n }\n }\n this.props.onClose(key);\n };\n\n handlePause = key => {\n const toast = this.findToast(key);\n if (toast) {\n const { clearTimeout, onPause } = toast;\n clearTimeout();\n if (func.isFunction(onPause)) {\n onPause(key);\n }\n }\n };\n\n handleRemove = componentProps => {\n const { key, onRemove } = componentProps;\n this.props.onClose(key);\n if (func.isFunction(onRemove)) {\n onRemove(key);\n }\n };\n\n handleStart = key => {\n const toast = this.findToast(key);\n if (toast) {\n const { startTimeout, onStart } = toast;\n startTimeout();\n if (func.isFunction(onStart)) {\n onStart(key);\n }\n }\n };\n\n renderToast = (componentProps, toastPrefix) => {\n const {\n clearTimeout,\n className,\n key,\n startTimeout,\n onClose,\n onPause,\n onStart,\n ...restProps\n } = componentProps;\n\n const cls = cx({\n [`${toastPrefix}-container-child`]: true,\n [className]: !!className,\n [`${toastPrefix}-item`]: true,\n });\n\n let childProps = {\n ...restProps,\n className: cls,\n key,\n onRemove: this.handleRemove.bind(this, componentProps),\n };\n\n if (componentProps.closeable) {\n childProps = {\n ...childProps,\n onClose: this.handleClose.bind(this, key),\n };\n }\n\n if (componentProps.pauseable) {\n childProps = {\n ...childProps,\n onStart: this.handleStart.bind(this, key),\n onPause: this.handlePause.bind(this, key),\n };\n }\n\n const Tmpl = this.state.tmpl;\n return <Tmpl {...childProps} />;\n };\n\n replaceTemplate(tmpl) {\n this.setState({\n tmpl,\n });\n }\n\n render() {\n const { prefix, toasts, className, placement } = this.props;\n const toastPrefix = `${prefix}toast`;\n\n const cls = cx({\n [`${toastPrefix}-container`]: true,\n [`${toastPrefix}-container-${placement}`]: true,\n [className]: !!className,\n });\n\n const toastGroup = toasts.map(toast => {\n return this.renderToast(toast, toastPrefix);\n });\n\n return (\n <TransitionGroup component=\"div\" className={cls}>\n {toastGroup}\n </TransitionGroup>\n );\n }\n}\n\nexport default ConfigProvider.config(ToastContainer);\n","import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ServiceManager from './base/service-manager/service-manager';\nimport { guid } from '../util';\nimport ToastQueue from './toast.queue';\nimport ToastContainer from './toast-group.container';\nimport { ToastStatus } from './toast.schema';\n\nclass ToastManager extends ServiceManager {\n static propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n };\n\n static DefaultDuration = 5000;\n\n static DefaultClosable = true;\n\n static DefaultPauseable = true;\n\n constructor(queue = new ToastQueue()) {\n super(queue, 'span');\n this.containerRef = createRef();\n this.initialCommand = [];\n this.queue.subscribe(this.render);\n }\n\n render = queue => {\n this.flush(\n <ToastContainer\n ref={this.containerRef}\n onClose={this.handleClose}\n toasts={queue}\n placement=\"bottomLeft\"\n className={this.className}\n tmpl={this.tmpl}\n />,\n this.flushCallback,\n );\n };\n\n flushCallback = () => {\n if (this.initialCommand.length !== 0) {\n this.initialCommand.forEach(cmd => cmd());\n this.initialCommand.length = 0;\n }\n };\n\n createToastInstance = props => {\n const {\n key,\n duration = ToastManager.DefaultDuration,\n pauseable = ToastManager.DefaultPauseable,\n } = props;\n\n const { clearTimeout, startTimeout } = this.createSlice(key, duration);\n\n const nextProps = {\n closeable: ToastManager.DefaultClosable,\n ...props,\n clearTimeout,\n duration,\n pauseable,\n startTimeout,\n };\n\n this.queue.add(nextProps);\n return key;\n };\n\n error(props) {\n return this.createToastInstance({\n ...props,\n key: guid(),\n status: ToastStatus.Error,\n });\n }\n\n success(props) {\n return this.createToastInstance({\n ...props,\n key: guid(),\n status: ToastStatus.Success,\n });\n }\n\n warning(props) {\n return this.createToastInstance({\n ...props,\n key: guid(),\n status: ToastStatus.Warning,\n });\n }\n\n info(props) {\n return this.createToastInstance({\n ...props,\n key: guid(),\n status: ToastStatus.Info,\n });\n }\n\n closeAll() {\n this.queue.deleteAll();\n }\n\n getDuplicationKey(props) {\n return this.queue.getDuplicationKey(props);\n }\n\n setTemplate(tmpl) {\n if (this.containerRef.current) {\n this.containerRef.current.replaceTemplate(tmpl);\n } else {\n this.initialCommand.push(() => this.containerRef.current.replaceTemplate(tmpl));\n }\n this.tmpl = tmpl;\n }\n}\n\nexport default ToastManager;\n","import ToastManager from './toast.manager';\n\nclass Toast {\n static manager = null;\n\n static error(props) {\n return Toast.getManager().error(props);\n }\n\n static success(props) {\n return Toast.getManager().success(props);\n }\n\n static warning(props) {\n return Toast.getManager().warning(props);\n }\n\n static info(props) {\n return Toast.getManager().info(props);\n }\n\n static close(key) {\n Toast.getManager().close(key);\n }\n\n static closeAll() {\n Toast.getManager().closeAll();\n }\n\n static getDuplicationKey(props) {\n return Toast.getManager().getDuplicationKey(props);\n }\n\n static isDuplicated(props) {\n return !!Toast.getDuplicationKey(props);\n }\n\n static destroy() {\n Toast.getManager().destroy();\n }\n\n static setTemplate(template) {\n Toast.getManager().setTemplate(template);\n }\n\n static getManager() {\n if (!Toast.manager) {\n Toast.manager = new ToastManager();\n }\n return Toast.manager;\n }\n}\n\nexport default Toast;\n","import ConfigProvider from '../config-provider';\nimport Toast from './toast.service';\n\nexport default ConfigProvider.config(Toast, {\n componentName: 'Toast',\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport Menu from '../menu';\n\n/**\n * Nav\n * @description 继承自 `Menu` 的能力请查看 `Menu` 文档\n */\nclass Nav extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.object,\n /**\n * 导航项和子导航\n */\n children: PropTypes.node,\n /**\n * 导航类型\n * @enumdesc 普通, 主要, 次要, 线形\n */\n type: PropTypes.oneOf(['normal', 'primary', 'secondary', 'line']),\n /**\n * 导航布局\n * @enumdesc 水平, 垂直\n */\n direction: PropTypes.oneOf(['hoz', 'ver']),\n /**\n * 横向导航条 items 和 footer 的对齐方向,在 direction 设置为 'hoz' 并且 header 存在时生效\n */\n hozAlign: PropTypes.oneOf(['left', 'right']),\n /**\n * 设置组件选中状态的 active 边方向\n * @enumdesc 无, 上, 下, 左, 右\n * @default 当 direction 为 'hoz' 时,默认值为 'bottom',当 direction 为 'ver' 时,默认值为 'left'\n */\n activeDirection: PropTypes.oneOf([null, 'top', 'bottom', 'left', 'right']),\n /**\n * 子导航打开的模式(水平导航只支持弹出)\n * @eumdesc 行内, 弹出\n */\n mode: PropTypes.oneOf(['inline', 'popup']),\n /**\n * 子导航打开的触发方式\n */\n triggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 内联子导航缩进距离\n */\n inlineIndent: PropTypes.number,\n /**\n * 初始展开所有的子导航,只在 mode 设置为 'inline' 以及 openMode 设置为 'multiple' 下生效\n */\n defaultOpenAll: PropTypes.bool,\n /**\n * 内联子导航的展开模式,同时可以展开一个同级子导航还是多个同级子导航,该属性仅在 mode 为 inline 时生效\n * @eumdesc 一个, 多个\n */\n openMode: PropTypes.oneOf(['single', 'multiple']),\n /**\n * 当前选中导航项的 key 值\n */\n selectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 初始选中导航项的 key 值\n */\n defaultSelectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n /**\n * 选中或取消选中导航项触发的回调函数\n * @param {Array} selectedKeys 选中的所有导航项的 key\n * @param {Object} item 选中或取消选中的导航项\n * @param {Object} extra 额外参数\n * @param {Boolean} extra.select 是否是选中\n * @param {Array} extra.key 导航项的 key\n * @param {Object} extra.label 导航项的文本\n * @param {Array} extra.keyPath 导航项 key 的路径\n */\n onSelect: PropTypes.func,\n /**\n * 弹出子导航的对齐方式(水平导航只支持 follow )\n * @eumdesc Item 顶端对齐, Nav 顶端对齐\n */\n popupAlign: PropTypes.oneOf(['follow', 'outside']),\n /**\n * 弹出子导航的自定义类名\n */\n popupClassName: PropTypes.string,\n /**\n * 是否只显示图标\n */\n iconOnly: PropTypes.bool,\n /**\n * 是否显示右侧的箭头(仅在 iconOnly=true 时生效)\n */\n hasArrow: PropTypes.bool,\n /**\n * 选中是否显示背景色\n */\n noBg: PropTypes.bool,\n /**\n * 是否有 ToolTips (仅在 iconOnly=true 时生效)\n */\n hasTooltip: PropTypes.bool,\n /**\n * 自定义导航头部\n */\n header: PropTypes.node,\n /**\n * 自定义导航尾部\n */\n footer: PropTypes.node,\n /**\n * 是否开启嵌入式模式,一般用于Layout的布局中,开启后没有默认背景、外层border、box-shadow,可以配合`<Nav style={{lineHeight: '100px'}}>` 自定义高度\n */\n embeddable: PropTypes.bool,\n popupProps: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n type: 'normal',\n direction: 'ver',\n hozAlign: 'left',\n mode: 'inline',\n triggerType: 'click',\n inlineIndent: 20,\n defaultOpenAll: false,\n openMode: 'multiple',\n defaultSelectedKeys: [],\n popupAlign: 'follow',\n hasTooltip: false,\n embeddable: false,\n hasArrow: true,\n noBg: false,\n popupProps: {},\n };\n\n static childContextTypes = {\n prefix: PropTypes.string,\n mode: PropTypes.string,\n iconOnly: PropTypes.bool,\n hasTooltip: PropTypes.bool,\n hasArrow: PropTypes.bool,\n noBg: PropTypes.bool,\n };\n\n getChildContext() {\n const { prefix, direction, mode, iconOnly, hasTooltip, hasArrow } = this.props;\n\n return {\n prefix,\n mode: direction === 'hoz' ? 'popup' : mode,\n iconOnly,\n hasTooltip,\n hasArrow,\n };\n }\n\n getMenuRef = ref => {\n this.menu = ref;\n };\n\n render() {\n // eslint-disable-next-line\n const {\n prefix,\n className,\n style,\n children,\n type,\n direction,\n activeDirection,\n mode,\n triggerType,\n inlineIndent,\n openMode,\n popupAlign,\n popupClassName,\n iconOnly,\n hasArrow,\n noBg,\n hasTooltip,\n embeddable,\n popupProps,\n rtl,\n ...others\n } = this.props;\n\n let realActiveDirection = activeDirection;\n if (\n realActiveDirection &&\n ((direction === 'hoz' &&\n (realActiveDirection === 'left' || realActiveDirection === 'right')) ||\n (direction === 'ver' &&\n (realActiveDirection === 'top' || realActiveDirection === 'bottom')))\n ) {\n realActiveDirection = null;\n }\n\n if (!iconOnly && realActiveDirection === undefined) {\n realActiveDirection = direction === 'hoz' ? 'bottom' : type === 'line' ? 'right' : 'left';\n }\n const cls = classNames({\n [`${prefix}nav`]: true,\n [`${prefix}${type}`]: type,\n [`${prefix}active`]: realActiveDirection,\n [`${prefix}${realActiveDirection}`]: realActiveDirection,\n [`${prefix}icon-only`]: iconOnly,\n [`${prefix}no-arrow`]: !hasArrow,\n [`${prefix}no-bg`]: noBg,\n [`${prefix}nav-embeddable`]: embeddable,\n [className]: !!className,\n });\n const newStyle = iconOnly ? { ...style, width: '60px' } : style;\n\n const props = {\n prefix,\n direction,\n openMode,\n triggerType,\n mode: direction === 'hoz' ? 'popup' : mode,\n popupAlign: direction === 'hoz' ? 'follow' : popupAlign,\n inlineIndent: iconOnly ? 0 : inlineIndent,\n hasSelectedIcon: false,\n popupAutoWidth: true,\n selectMode: 'single',\n itemClassName: `${prefix}nav-item`,\n popupClassName: classNames({\n [cls.replace(`${prefix}icon-only`, '').replace(`${prefix}nav-embeddable`, '')]:\n mode === 'popup',\n [`${prefix}icon-only`]: iconOnly && mode === 'inline',\n [popupClassName]: !!popupClassName,\n }),\n popupProps: popupItemProps => {\n return {\n offset: direction === 'hoz' && popupItemProps.level === 1 ? [0, 2] : [-2, 0],\n ...popupProps,\n };\n },\n };\n\n return (\n <Menu className={cls} style={newStyle} {...props} {...others} ref={this.getMenuRef}>\n {children}\n </Menu>\n );\n }\n}\n\nexport default ConfigProvider.config(Nav);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Menu from '../menu';\nimport Icon from '../icon';\nimport Balloon from '../balloon';\n\nconst { Tooltip } = Balloon;\n\n/**\n * Nav.Item\n * @description 继承自 `Menu.Item` 的能力请查看 `Menu.Item` 文档\n */\nclass Item extends Component {\n static menuChildType = 'item';\n\n static propTypes = {\n /**\n * 自定义图标,可以使用 Icon 的 type,也可以使用组件 `<Icon type=\"icon type\" />`\n */\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * 导航内容\n */\n children: PropTypes.node,\n parentMode: PropTypes.oneOf(['inline', 'popup']),\n };\n\n static contextTypes = {\n prefix: PropTypes.string,\n iconOnly: PropTypes.bool,\n hasTooltip: PropTypes.bool,\n };\n\n render() {\n const { prefix, iconOnly, hasTooltip } = this.context;\n const { icon, children, ...others } = this.props;\n let iconEl =\n typeof icon === 'string' ? <Icon className={`${prefix}nav-icon`} type={icon} /> : icon;\n if (iconOnly && !iconEl) {\n iconEl = <span className={`${prefix}nav-icon-placeholder`} />;\n }\n\n const item = (\n <Menu.Item {...others}>\n {iconEl}\n {children}\n </Menu.Item>\n );\n\n if (iconOnly && hasTooltip && others.parentMode !== 'popup') {\n return (\n <Tooltip align=\"r\" trigger={item}>\n {children}\n </Tooltip>\n );\n }\n\n return item;\n }\n}\n\nexport default Item;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Menu from '../menu';\n\n/**\n * Nav.Group\n * @description 继承自 `Menu.Group` 的能力请查看 `Menu.Group` 文档\n */\nclass Group extends Component {\n static menuChildType = 'group';\n\n static propTypes = {\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 标签内容\n */\n label: PropTypes.node,\n /**\n * 导航项和子导航\n */\n children: PropTypes.node,\n };\n\n static contextTypes = {\n prefix: PropTypes.string,\n iconOnly: PropTypes.bool,\n };\n\n render() {\n const { prefix, iconOnly } = this.context;\n const { className, children, label, ...others } = this.props;\n\n let newLabel = label;\n if (iconOnly) {\n // TODO: add a group icon ?\n newLabel = [\n <span key=\"icon\" className={`${prefix}nav-icon-placeholder`} />,\n <span key=\"label\">{label}</span>,\n ];\n }\n\n const cls = classNames({\n [`${prefix}nav-group-label`]: true,\n [className]: !!className,\n });\n\n return (\n <Menu.Group className={cls} label={newLabel} {...others}>\n {children}\n </Menu.Group>\n );\n }\n}\n\nexport default Group;\n","import React, { Component, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Menu from '../menu';\nimport Icon from '../icon';\n\n/**\n * Nav.SubNav\n * @description 继承自 `Menu.SubMenu` 的能力请查看 `Menu.SubMenu` 文档\n */\nclass SubNav extends Component {\n static menuChildType = 'submenu';\n\n static propTypes = {\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义图标,可以使用 Icon 的 type,也可以使用组件 `<Icon type=\"your type\" />`\n */\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * 标签内容\n */\n label: PropTypes.node,\n /**\n * 是否可选\n */\n selectable: PropTypes.bool,\n /**\n * 导航项和子导航\n */\n children: PropTypes.node,\n };\n\n static defaultProps = {\n selectable: false,\n };\n\n static contextTypes = {\n prefix: PropTypes.string,\n mode: PropTypes.string,\n iconOnly: PropTypes.bool,\n hasArrow: PropTypes.bool,\n };\n\n render() {\n const { prefix, iconOnly, hasArrow, mode } = this.context;\n const { className, icon, label, children, ...others } = this.props;\n const cls = classNames({\n [`${prefix}nav-sub-nav-item`]: true,\n [className]: !!className,\n });\n let iconEl =\n typeof icon === 'string' ? <Icon className={`${prefix}nav-icon`} type={icon} /> : icon;\n if (iconOnly) {\n if (hasArrow) {\n iconEl = (\n <Icon\n className={`${prefix}nav-icon-only-arrow`}\n type={mode === 'popup' ? 'chevron-right-s' : 'chevron-down-s'}\n />\n );\n } else if (!iconEl) {\n iconEl = <span className={`${prefix}nav-icon-placeholder`} />;\n }\n }\n const newLabel = [\n iconEl ? cloneElement(iconEl, { key: 'icon' }) : null,\n <span key=\"label\">{label}</span>,\n ];\n\n return (\n <Menu.SubMenu className={cls} label={newLabel} {...others}>\n {children}\n </Menu.SubMenu>\n );\n }\n}\n\nexport default SubNav;\n","import React, { Component, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Menu from '../menu';\nimport Icon from '../icon';\n\n/**\n * Nav.PopupItem\n * @description 继承自 `Menu.PopupItem` 的能力请查看 `Menu.PopupItem` 文档\n */\nclass PopupItem extends Component {\n static menuChildType = 'submenu';\n\n static propTypes = {\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义图标,可以使用 Icon 的 type, 也可以使用组件 `<Icon type=\"icon type\" />`\n */\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * 标签内容\n */\n label: PropTypes.node,\n /**\n * 弹出内容\n */\n children: PropTypes.node,\n };\n\n static contextTypes = {\n prefix: PropTypes.string,\n iconOnly: PropTypes.bool,\n hasArrow: PropTypes.bool,\n };\n\n render() {\n const { prefix, iconOnly, hasArrow } = this.context;\n const { className, icon, label, children, ...others } = this.props;\n const cls = classNames({\n [`${prefix}nav-popup-item`]: true,\n [className]: !!className,\n });\n let iconEl =\n typeof icon === 'string' ? <Icon className={`${prefix}nav-icon`} type={icon} /> : icon;\n if (iconOnly) {\n if (hasArrow) {\n iconEl = <Icon className={`${prefix}nav-icon-only-arrow`} type=\"chevron-right-s\" />;\n } else if (!iconEl) {\n iconEl = <span className={`${prefix}nav-icon-placeholder`} />;\n }\n }\n const newLabel = [\n iconEl ? cloneElement(iconEl, { key: 'icon' }) : null,\n <span key=\"label\">{label}</span>,\n ];\n\n return (\n <Menu.PopupItem className={cls} label={newLabel} {...others}>\n {children}\n </Menu.PopupItem>\n );\n }\n}\n\nexport default PopupItem;\n","import Menu from '../menu';\nimport Nav from './nav';\nimport Item from './item';\nimport Group from './group';\nimport SubNav from './sub-nav';\nimport PopupItem from './popup-item';\n\nNav.Item = Item;\nNav.Group = Group;\nNav.SubNav = SubNav;\nNav.PopupItem = PopupItem;\nNav.Divider = Menu.Divider;\n\nexport default Nav;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport Button from '../button';\nimport Input from '../input';\nimport { func, obj } from '../util';\n\n/** NumberPicker */\nclass NumberPicker extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n /**\n * 设置类型\n * @enumdesc 普通, 内联\n */\n type: PropTypes.oneOf(['normal', 'inline']),\n /**\n * 大小\n */\n size: PropTypes.oneOf(['medium']),\n /**\n * 当前值\n */\n value: PropTypes.number,\n /**\n * 默认值\n */\n defaultValue: PropTypes.number,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 步长\n */\n step: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * 保留小数点后位数\n */\n precision: PropTypes.number,\n /**\n * 用户是否可以输入\n */\n editable: PropTypes.bool,\n /**\n * 自动焦点\n */\n autoFocus: PropTypes.bool,\n /**\n * 数值被改变的事件\n * @param {Number} value 数据\n * @param {Event} e DOM事件对象\n */\n onChange: PropTypes.func,\n /**\n * 键盘按下\n */\n onKeyDown: PropTypes.func,\n /**\n * 焦点获得\n */\n onFocus: PropTypes.func,\n /**\n * 焦点失去\n */\n onBlur: PropTypes.func,\n /**\n * 数值订正后的回调\n * @param {Object} obj {currentValue,oldValue:String}\n */\n onCorrect: PropTypes.func,\n onDisabled: PropTypes.func, // 兼容0.x onDisabled\n /**\n * 最大值\n */\n max: PropTypes.number,\n /**\n * 最小值\n */\n min: PropTypes.number,\n /**\n * 自定义class\n */\n className: PropTypes.string,\n /**\n * 自定义内联样式\n */\n style: PropTypes.object,\n state: PropTypes.oneOf(['error']),\n /**\n * 格式化当前值\n * @param {Number} value\n * @return {String|Number}\n */\n format: PropTypes.func,\n /**\n * 增加按钮的props\n */\n upBtnProps: PropTypes.object,\n /**\n * 减少按钮的props\n */\n downBtnProps: PropTypes.object,\n /**\n * 内联 label\n */\n label: PropTypes.node,\n /**\n * inner after\n */\n innerAfter: PropTypes.node,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n max: Infinity,\n min: -Infinity,\n type: 'normal',\n size: 'medium',\n step: 1,\n style: {},\n precision: 0,\n editable: true,\n onChange: func.noop,\n onKeyDown: func.noop,\n onBlur: func.noop,\n onCorrect: func.noop,\n onDisabled: func.noop,\n };\n\n constructor(props) {\n super(props);\n\n let value;\n if ('value' in props) {\n value = props.value;\n } else {\n value = props.defaultValue;\n }\n\n this.state = {\n value: typeof value === 'undefined' ? '' : value,\n hasFocused: false,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n const { value } = nextProps;\n this.setState({\n value: value === undefined || value === null ? '' : value,\n });\n }\n }\n\n onChange = (value, e) => {\n if (this.props.editable === true) {\n value = value.trim();\n // Compatible Chinese Input Method\n value = value.replace('。', '.');\n // ignore space\n if (this.state.value === value) {\n return;\n }\n\n // in case of autoCorrect ('0.'=>0, '0.0'=>0) , we have these steps\n if (value) {\n // ignore when input start form '-'\n if (value === '-' || this.state.value === '-') {\n this.setState({\n value,\n });\n return;\n }\n // ignore when next value = prev value.\n // ps: Number('0.')=0 ; Number('0.0')=0;\n // but take care of Number('')=0;\n if (Number(this.state.value) === Number(value)) {\n this.setState({\n value,\n });\n return;\n }\n // ignore when value < min (because number is inputted one by one)\n if (!isNaN(value) && Number(value) < this.props.min) {\n this.setState({\n value,\n });\n return;\n }\n }\n\n this.setInputValue(value, e);\n }\n }\n\n /**\n * @param {Float} currentValue correct value\n * @param {String} oldValue input value\n */\n onCorrect = (currentValue, oldValue) => {\n this.props.onCorrect({\n currentValue,\n oldValue,\n });\n }\n\n onKeyDown = (e, ...args) => {\n if (e.keyCode === 38) {\n this.up(e);\n } else if (e.keyCode === 40) {\n this.down(e);\n }\n this.props.onKeyDown(e, ...args);\n }\n\n onFocus = (e, ...args) => {\n const { onFocus } = this.props;\n this.setFocus(true);\n onFocus && onFocus(e, ...args);\n }\n\n onBlur = (e, ...args) => {\n const value = this.getCurrentValidValue(e.target.value.trim());\n if (this.state.value !== value) {\n this.setValue(value, e);\n }\n this.setFocus(false);\n const { onBlur } = this.props;\n onBlur && onBlur(e, ...args);\n }\n\n getCurrentValidValue = (value) => {\n let val = value;\n const { props } = this;\n if (val === '') {\n val = '';\n } else if (!isNaN(val)) {\n val = Number(val);\n if (val < props.min) {\n val = props.min;\n }\n if (val > props.max) {\n val = props.max;\n }\n\n // precision=2 and input from 1.99 to 1.999, should stay with 1.99 not 2\n const strValue = `${val}`;\n const pointPos = strValue.indexOf('.');\n const cutPos = pointPos + 1 + this.getPrecision();\n if (pointPos !== -1 && strValue.length > cutPos) {\n val = Number(strValue.substr(0, cutPos));\n }\n } else {\n val = this.state.value;\n }\n\n if (`${val}` !== `${value}`) {\n this.onCorrect(val, value);\n }\n\n return val;\n }\n\n setValue = (v, e, triggerType) => {\n if (!('value' in this.props)) {\n this.setState({\n value: v,\n });\n }\n\n this.props.onChange(isNaN(v) || v === '' ? undefined : v, {\n ...e,\n triggerType,\n });\n }\n\n setInputValue = (v, e) => {\n const value = this.getCurrentValidValue(v);\n if (this.state.value !== value) {\n this.setValue(value, e);\n }\n }\n\n setFocus = (status) => {\n const { format } = this.props;\n // Only trigger `setState` if `format` is settled to avoid unnecessary rendering\n if (typeof format === 'function') {\n this.setState({\n hasFocused: status,\n });\n }\n }\n\n getPrecision = () => {\n const { props } = this;\n const stepString = props.step.toString();\n if (stepString.indexOf('e-') >= 0) {\n return parseInt(stepString.slice(stepString.indexOf('e-')), 10);\n }\n let precision = 0;\n if (stepString.indexOf('.') >= 0) {\n precision = stepString.length - stepString.indexOf('.') - 1;\n }\n\n return Math.max(precision, this.props.precision);\n }\n\n getPrecisionFactor = () => {\n const precision = this.getPrecision();\n return Math.pow(10, precision);\n }\n\n upStep = (val) => {\n const { step, min } = this.props;\n const precisionFactor = this.getPrecisionFactor();\n let result;\n if (typeof val === 'number') {\n result = (precisionFactor * val + precisionFactor * step) / precisionFactor;\n\n result = this.hackChrome(result);\n } else {\n result = min === -Infinity ? step : min;\n }\n return result;\n }\n\n downStep = (val) => {\n const { step, min } = this.props;\n const precisionFactor = this.getPrecisionFactor();\n let result;\n if (typeof val === 'number') {\n result = (precisionFactor * val - precisionFactor * step) / precisionFactor;\n\n result = this.hackChrome(result);\n } else {\n result = min === -Infinity ? -step : min;\n }\n return result;\n }\n\n /**\n * fix bug in chrome browser\n * 0.28 + 0.01 = 0.29000000000000004\n * 0.29 - 0.01 = 0.27999999999999997\n * @param {Number} value value\n */\n hackChrome = (value) => {\n const precision = this.getPrecision();\n if (precision > 0) {\n return Number(Number(value).toFixed(precision));\n }\n return value;\n }\n\n step = (type, disabled, e) => {\n if (e) {\n e.preventDefault();\n }\n\n const { onDisabled, min, max } = this.props;\n if (disabled) {\n return onDisabled(e);\n }\n\n const { value } = this.state;\n if (isNaN(value)) {\n return;\n }\n\n let val = this[`${type}Step`](value);\n if (val > max) {\n val = max;\n }\n if (val < min) {\n val = min;\n }\n this.setValue(val, e, type);\n }\n\n down = (disabled, e) => {\n this.step('down', disabled, e);\n }\n\n up = (disabled, e) => {\n this.step('up', disabled, e);\n }\n\n renderValue = () => {\n const { value, hasFocused } = this.state;\n const { format } = this.props;\n return typeof format === 'function' && !hasFocused ? format(value) : value;\n }\n\n focus = () => {\n this.inputRef.getInstance().focus();\n }\n\n saveInputRef = (ref) => {\n this.inputRef = ref;\n }\n\n handleMouseDown = (e) => {\n e.preventDefault();\n }\n\n render() {\n const {\n type,\n prefix,\n rtl,\n disabled,\n style,\n className,\n size,\n max,\n min,\n autoFocus,\n editable,\n state,\n label,\n upBtnProps = {},\n downBtnProps = {},\n innerAfter,\n } = this.props;\n\n const prefixCls = `${prefix}number-picker`;\n\n const cls = classNames({\n [prefixCls]: true,\n [`${prefixCls}-${this.props.type}`]: this.props.type,\n [`${prefix}${size}`]: true,\n [className]: className,\n });\n\n let upDisabled = false;\n let downDisabled = false;\n const { value } = this.state;\n if (!isNaN(value)) {\n const val = Number(value);\n if (val >= max) {\n upDisabled = true;\n }\n if (val <= min) {\n downDisabled = true;\n }\n }\n\n let extra = null;\n let addonBefore = null;\n let addonAfter = null;\n if (type === 'normal') {\n extra = (\n <span className={`${prefixCls}-handler`}>\n <Button\n {...upBtnProps}\n type=\"secondary\"\n onMouseDown={this.handleMouseDown}\n disabled={disabled}\n className={`${upBtnProps.className || ''} ${upDisabled ? 'disabled' : ''}`}\n onClick={this.up.bind(this, upDisabled)}\n >\n <Icon size=\"xxs\" type=\"chevron-up\" />\n </Button>\n <Button\n {...downBtnProps}\n type=\"secondary\"\n onMouseDown={this.handleMouseDown}\n disabled={disabled}\n className={`${downBtnProps.className || ''} ${downDisabled ? 'disabled' : ''}`}\n onClick={this.down.bind(this, downDisabled)}\n >\n <Icon size=\"xxs\" type=\"chevron-down\" />\n </Button>\n </span>\n );\n } else {\n addonBefore = (\n <Button\n {...downBtnProps}\n size={size}\n disabled={disabled}\n className={`${downBtnProps.className || ''} ${downDisabled ? 'disabled' : ''}`}\n onClick={this.down.bind(this, downDisabled)}\n >\n <Icon type=\"horizontal\" size=\"xs\" />\n </Button>\n );\n addonAfter = (\n <Button\n {...upBtnProps}\n size={size}\n disabled={disabled}\n className={`${upBtnProps.className || ''} ${upDisabled ? 'disabled' : ''}`}\n onClick={this.up.bind(this, upDisabled)}\n >\n <Icon type=\"plus\" size=\"xs\" />\n </Button>\n );\n }\n\n const others = obj.pickOthers(NumberPicker.propTypes, this.props);\n const dataAttrs = obj.pickAttrsWith(this.props, 'data-');\n\n return (\n <span className={cls} style={style} dir={rtl ? 'rtl' : undefined} {...dataAttrs}>\n <Input\n {...others}\n aria-valuemax={max !== Infinity ? max : undefined}\n aria-valuemin={min !== -Infinity ? min : undefined}\n state={state === 'error' ? 'error' : null}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onKeyDown={this.onKeyDown}\n autoFocus={autoFocus}\n readOnly={!editable}\n value={this.renderValue()}\n disabled={disabled}\n size={size}\n onChange={this.onChange}\n ref={this.saveInputRef}\n label={label}\n innerAfter={innerAfter}\n extra={extra}\n addonBefore={addonBefore}\n addonAfter={addonAfter}\n />\n </span>\n );\n }\n}\n\nexport default NumberPicker;\n","import ConfigProvider from '../config-provider';\nimport NumberPicker from './number-picker';\nimport { log } from '../util';\n\nexport default ConfigProvider.config(NumberPicker, {\n transform: /* istanbul ignore next */ props => {\n if ('onDisabled' in props && typeof props.onDisabled === 'function') {\n log.warning('[NumberPicker]: onDisabled is deleted!');\n }\n\n return props;\n },\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport Icon from '../icon';\nimport Button from '../button';\nimport Dropdown from '../dropdown';\nimport Menu from '../menu';\nimport Input from '../input';\nimport Select from '../select';\nimport { KEYCODE, str, obj } from '../util';\nimport zhCN from '../locale/zh-cn.js';\n\nconst { Option } = Select;\nconst noop = () => {};\n\n/**\n * Pagination\n */\nclass Pagination extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 自定义国际化文案对象\n */\n locale: PropTypes.object,\n /**\n * 分页组件类型\n */\n type: PropTypes.oneOf(['normal', 'simple']),\n /**\n * (受控)当前页码\n */\n current: PropTypes.number,\n /**\n * (非受控)初始页码\n */\n defaultCurrent: PropTypes.number,\n /**\n * 页码发生改变时的回调函数\n * @param {Number} current 改变后的页码数\n * @param {Object} e 点击事件对象\n */\n onChange: PropTypes.func,\n /**\n * 总记录数\n */\n total: PropTypes.number,\n /**\n * 总数的渲染函数\n * @param {Number} total 总数\n * @param {Array} range 当前数据在总数中的区间\n */\n totalRender: PropTypes.func,\n /**\n * 页码显示的数量,更多的使用...代替\n */\n pageShowCount: PropTypes.number,\n /**\n * 一页中的记录数\n */\n pageSize: PropTypes.number,\n /**\n * 每页显示选择器类型\n */\n pageSizeSelector: PropTypes.oneOf([false, 'dropdown']),\n /**\n * 每页显示选择器可选值\n */\n pageSizeList: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.number),\n PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.number,\n }),\n ),\n ]),\n /**\n * 每页显示记录数量改变时的回调函数\n * @param {Number} pageSize 改变后的每页显示记录数\n */\n onPageSizeChange: PropTypes.func,\n /**\n * 当分页数为1时,是否隐藏分页器\n */\n hideOnlyOnePage: PropTypes.bool,\n /**\n * type 设置为 normal 时,在页码数超过5页后,会显示跳转输入框与按钮,当设置 showJump 为 false 时,不再显示该跳转区域\n */\n showJump: PropTypes.bool,\n selectPopupContiner: PropTypes.func,\n /**\n * 弹层组件属性,透传给Popup\n */\n popupProps: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n rtl: false,\n locale: zhCN.Pagination,\n type: 'normal',\n defaultCurrent: 1,\n onChange: noop,\n pageSize: 10,\n pageSizeSelector: false,\n pageSizeList: [5, 10, 20],\n onPageSizeChange: noop,\n total: 100,\n pageShowCount: 5,\n hideOnlyOnePage: false,\n showJump: true,\n selectPopupContiner: node => node.parentNode,\n };\n\n constructor(props, context) {\n super(props, context);\n const { current, defaultCurrent, total, pageSize } = props;\n this.state = {\n current: this.correctCurrent(current || defaultCurrent, total, pageSize),\n currentPageSize: pageSize,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { current, total, pageSize } = nextProps;\n\n const st = {};\n const newCurrent = this.correctCurrent(current || this.state.current, total, pageSize);\n if (this.state.current !== newCurrent) {\n st.current = newCurrent;\n }\n if (this.state.currentPageSize !== pageSize) {\n st.currentPageSize = pageSize;\n }\n\n if (Object.keys(st).length) {\n this.setState(st);\n }\n }\n\n correctCurrent = (currentPage, total, currentPageSize) => {\n const totalPage = this.getTotalPage(total, currentPageSize);\n return currentPage > totalPage ? totalPage : currentPage;\n }\n\n getTotalPage = (total, currentPageSize) => {\n const totalPage = Math.ceil(total / currentPageSize);\n return totalPage <= 0 ? 1 : totalPage;\n }\n\n onJump = (e) => {\n const { total } = this.props;\n const { current, currentPageSize } = this.state;\n const totalPage = this.getTotalPage(total, currentPageSize);\n const value = parseInt(this.inputValue, 10);\n if (typeof value === 'number' && value >= 1 && value <= totalPage && value !== current) {\n this.onPageItemClick(value, e);\n }\n }\n\n onPageItemClick = (page, e) => {\n if (!('current' in this.props)) {\n this.setState(\n {\n current: page,\n },\n () => {\n this.props.onChange(page, e);\n },\n );\n } else {\n this.props.onChange(page, e);\n }\n }\n\n onInputChange = (value) => {\n this.inputValue = value;\n }\n\n onSelectSize = (pageSize) => {\n const newState = {\n currentPageSize: pageSize,\n };\n\n const totalPage = this.getTotalPage(this.props.total, pageSize);\n if (this.state.current > totalPage) {\n newState.current = totalPage;\n }\n\n this.setState(newState);\n this.props.onPageSizeChange(pageSize);\n }\n\n renderPageTotal = () => {\n const { prefix, total, totalRender } = this.props;\n const { currentPageSize, current } = this.state;\n const range = [(current - 1) * currentPageSize + 1, current * currentPageSize];\n\n return <div className={`${prefix}pagination-total`}>{totalRender(total, range)}</div>;\n }\n\n renderPageItem = (index) => {\n const { prefix, total, pageSize, locale } = this.props;\n const { current } = this.state;\n\n const totalPage = this.getTotalPage(total, pageSize);\n const isCurrent = parseInt(index, 10) === current;\n const props = {\n className: cx({\n [`${prefix}pagination-item`]: true,\n [`${prefix}current`]: isCurrent,\n }),\n onClick: isCurrent ? noop : this.onPageItemClick.bind(this, index),\n };\n\n return (\n <div\n aria-label={str.template(locale.total, {\n current: index,\n total: totalPage,\n })}\n {...props}\n key={index}\n >\n {index}\n </div>\n );\n }\n\n renderPageFirst = (current) => {\n const { prefix, locale } = this.props;\n\n const isFirst = current <= 1;\n const props = {\n className: cx({\n [`${prefix}pagination-item`]: true,\n [`${prefix}pagination-item-disabled`]: isFirst,\n [`${prefix}prev`]: true,\n }),\n onClick: isFirst ? null : this.onPageItemClick.bind(this, current - 1),\n };\n\n return (\n <Icon\n type=\"chevron-left-s\"\n {...props}\n aria-label={str.template(locale.labelPrev, { current })}\n />\n );\n }\n\n renderPageLast = (current, totalPage) => {\n const { prefix, locale } = this.props;\n\n const isLast = current >= totalPage;\n const props = {\n className: cx({\n [`${prefix}pagination-item`]: true,\n [`${prefix}pagination-item-disabled`]: isLast,\n [`${prefix}next`]: true,\n }),\n onClick: isLast ? null : this.onPageItemClick.bind(this, current + 1),\n };\n\n return (\n <Icon\n type=\"chevron-right-s\"\n {...props}\n aria-label={str.template(locale.labelNext, { current })}\n />\n );\n }\n\n renderPageEllipsis = (idx) => {\n const { prefix } = this.props;\n\n return (\n <Icon\n type=\"more\"\n className={`${prefix}pagination-ellipsis`}\n key={`ellipsis-${idx}`}\n />\n );\n }\n\n renderPageJump = () => {\n const { prefix, locale } = this.props;\n\n /* eslint-disable react/jsx-key */\n return [\n <span className={`${prefix}pagination-jump-text`}>{locale.goTo}</span>,\n <Input\n size=\"xs\"\n className={`${prefix}pagination-jump-input`}\n type=\"text\"\n aria-label={locale.inputAriaLabel}\n onChange={this.onInputChange}\n onKeyDown={e => {\n if (e.keyCode === KEYCODE.ENTER) {\n this.onJump(e);\n }\n }}\n />,\n <span className={`${prefix}pagination-jump-text`}>{locale.page}</span>,\n ];\n /* eslint-enable react/jsx-key */\n }\n\n renderPageDisplay = (current, totalPage) => {\n const { prefix } = this.props;\n const menu = [];\n for (let i = 1; i <= totalPage; i++) {\n menu.push(<Menu.Item key={i}>{i}</Menu.Item>);\n }\n return (\n <span className={`${prefix}pagination-display`}>\n <Dropdown\n trigger={<Button type=\"secondary\">{`${current}/${totalPage}`}</Button>}\n triggerType=\"click\"\n >\n <Menu\n style={{ maxHeight: 152, overflow: 'auto' }}\n selectMode=\"single\"\n selectedKeys={`${current}`}\n onSelect={(selectedKeys) => { this.onPageItemClick(+selectedKeys[0]); }}\n >\n { menu }\n </Menu>\n </Dropdown>\n </span>\n );\n }\n\n renderPageList = (current, totalPage) => {\n const { prefix, pageShowCount } = this.props;\n const pages = [];\n\n if (totalPage <= pageShowCount) {\n for (let i = 1; i <= totalPage; i++) {\n pages.push(this.renderPageItem(i));\n }\n } else {\n // 除去第一页,最后一页以及当前页,剩下的页数\n const othersCount = pageShowCount - 3;\n const halfCount = parseInt(othersCount / 2, 10);\n let start;\n let end;\n\n pages.push(this.renderPageItem(1));\n\n start = current - halfCount;\n end = current + halfCount;\n if (start <= 1) {\n start = 2;\n end = start + othersCount;\n }\n if (start > 2) {\n pages.push(this.renderPageEllipsis(1));\n }\n if (end >= totalPage - 1) {\n end = totalPage - 1;\n start = totalPage - 1 - othersCount;\n }\n for (let j = start; j <= end; j++) {\n pages.push(this.renderPageItem(j));\n }\n if (end < totalPage - 1) {\n pages.push(this.renderPageEllipsis(2));\n }\n\n pages.push(this.renderPageItem(totalPage));\n }\n\n return <div className={`${prefix}pagination-list`}>{pages}</div>;\n }\n\n renderPageSizeSelector = () => {\n const { prefix, pageSizeSelector } = this.props;\n\n switch (pageSizeSelector) {\n case 'dropdown':\n return (\n <div className={`${prefix}pagination-size-selector`}>\n {this.renderPageSizeDropdown()}\n </div>\n );\n default:\n return null;\n }\n }\n\n renderPageSizeDropdown = () => {\n const { prefix, pageSizeList, selectPopupContiner, locale, popupProps } = this.props;\n const { currentPageSize } = this.state;\n\n return (\n <Select\n size=\"xs\"\n className={`${prefix}pagination-size-selector-dropdown`}\n popupClassName={`${prefix}pagination-size-selector-popup`}\n popupContainer={selectPopupContiner}\n popupProps={popupProps}\n aria-label={locale.selectAriaLabel}\n autoWidth\n value={currentPageSize}\n valueRender={(item) => <span className={`${prefix}pagination-size-selector-dropdown-value-text`}>{`${item.value} ${locale.pageSize}`}</span>}\n onChange={this.onSelectSize}\n >\n {pageSizeList.map((item, index) => {\n let label;\n let pageSize;\n if (item.value) {\n // {label: '', value: 5}\n label = item.label;\n pageSize = item.value;\n } else {\n // number\n label = pageSize = item;\n }\n return (\n <Option key={index} value={pageSize}>\n {label}\n </Option>\n );\n })}\n </Select>\n );\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n prefix,\n pure,\n rtl,\n type,\n className,\n total,\n totalRender,\n pageSize,\n pageSizeSelector,\n pageSizeList,\n onPageSizeChange,\n hideOnlyOnePage,\n showJump,\n locale,\n current,\n defaultCurrent,\n pageShowCount,\n onChange,\n selectPopupContiner,\n popupProps,\n ...others\n } = this.props;\n /* eslint-enable */\n const { current: currentPage, currentPageSize } = this.state;\n const totalPage = this.getTotalPage(total, currentPageSize);\n const pageFirst = this.renderPageFirst(currentPage);\n const pageLast = this.renderPageLast(currentPage, totalPage);\n const sizeSelector = this.renderPageSizeSelector();\n\n const classes = cx({\n [`${prefix}pagination`]: true,\n [`${prefix}${type}`]: type,\n [`${prefix}hide`]: totalPage <= 1 && hideOnlyOnePage,\n [className]: !!className,\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const buildComponent = (...coms) => (\n <div className={classes} {...obj.pickAttrs(others)}>\n {totalRender ? this.renderPageTotal() : null}\n <div className={`${prefix}pagination-pages`}>\n {coms.map((com, index) => com && React.cloneElement(com, { key: index }))}\n </div>\n </div>\n );\n\n switch (type) {\n case 'simple': {\n const pageDisplay = this.renderPageDisplay(currentPage, totalPage);\n return buildComponent(pageFirst, pageDisplay, pageLast);\n }\n case 'normal': {\n const pageList = this.renderPageList(currentPage, totalPage);\n const pageJump =\n showJump && total > pageSize * pageShowCount\n ? this.renderPageJump(currentPage, totalPage)\n : [];\n return buildComponent(pageFirst, pageList, pageLast, sizeSelector, ...pageJump);\n }\n default:\n return null;\n }\n }\n}\n\nexport default ConfigProvider.config(Pagination);\n","import Pagination from './pagination';\n\nexport default Pagination;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\n\n/* eslint-disable */\n\n/** Paragraph */\nclass Paragraph extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 额外的样式名 会附加到 root dom 上\n */\n className: PropTypes.string,\n /**\n * 什么方式展示段落\n * @enumdesc 展示所有文本, 展示三行以内(非强制)\n */\n type: PropTypes.oneOf(['long', 'short']),\n /**\n * 组件大小。\n * @enumdesc 中号, 小号\n */\n size: PropTypes.oneOf(['medium', 'small']),\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n type: 'long',\n size: 'medium',\n };\n\n render() {\n const { prefix, className, type, size, rtl, ...others } = this.props;\n\n const cls = classNames(\n `${prefix}paragraph`,\n type === 'short' ? `${prefix}paragraph-short` : `${prefix}paragraph-long`,\n size === 'small' ? `${prefix}paragraph-small` : `${prefix}paragraph-medium`,\n className,\n );\n if (rtl) {\n others.dir = 'rtl';\n }\n\n return (\n <div {...others} className={cls}>\n {this.props.children}\n </div>\n );\n }\n}\n\nexport default ConfigProvider.config(Paragraph);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport { obj } from '../util';\n\nclass Placeholder extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 额外的样式名 会附加到 root dom 上\n */\n className: PropTypes.string,\n /**\n * 类型\n */\n type: PropTypes.oneOf(['normal', 'mini']),\n /**\n * 占位插画\n */\n image: PropTypes.string.isRequired,\n /**\n * 占位标题\n */\n title: PropTypes.string.isRequired,\n /**\n * 占位描述\n */\n description: PropTypes.string,\n }\n\n static defaultProps = {\n prefix: 'next-',\n type: 'normal',\n }\n\n render() {\n const { prefix, className, type, image, title, description, children, ...others } = this.props;\n const classNames = cls({\n [`${prefix}placeholder`]: true,\n [`${prefix}placeholder-${type}`]: true,\n [className]: !!className,\n });\n return (\n <div className={classNames} {...obj.pickAttrs(others)}>\n <div className={`${prefix}placeholder-image`}>\n <img src={image} />\n </div>\n <div className={`${prefix}placeholder-title`}>{title}</div>\n {\n description && type === 'normal' ?\n <div className={`${prefix}placeholder-description`}>{description}</div> : null\n }\n <div className={`${prefix}placeholder-children`}>{children}</div>\n </div>\n );\n }\n}\n\nPlaceholder.NO_CONTACT = '//img.alicdn.com/tfs/TB1Qn.cfuH2gK0jSZFEXXcqMpXa-162-156.png';\nPlaceholder.NO_TASK = '//img.alicdn.com/tfs/TB12lcbfET1gK0jSZFrXXcNCXXa-180-142.png';\nPlaceholder.NO_DATA = 'https://img.alicdn.com/tfs/TB19t4.BYH1gK0jSZFwXXc7aXXa-496-498.png';\n\nconst Configured = ConfigProvider.config(Placeholder);\nConfigured.displayName = 'Placeholder';\n\nexport default Configured;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nexport default class Line extends React.PureComponent {\n static propTypes = {\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n percent: PropTypes.number,\n state: PropTypes.oneOf(['normal', 'success', 'warning', 'error']),\n progressive: PropTypes.bool,\n hasBorder: PropTypes.bool,\n textRender: PropTypes.func,\n color: PropTypes.string,\n rtl: PropTypes.bool,\n prefix: PropTypes.string,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n };\n\n render() {\n const {\n prefix,\n size,\n state,\n color,\n percent,\n progressive,\n hasBorder,\n textRender,\n className,\n rtl,\n ...others\n } = this.props;\n\n const suffixText = textRender(percent, { rtl });\n\n const wrapCls = classNames({\n [`${prefix}progress-line`]: true,\n [`${prefix}progress-line-show-info`]: suffixText,\n [`${prefix}progress-line-show-border`]: hasBorder,\n [`${prefix + size}`]: size,\n [className]: className,\n });\n const lineCls = classNames({\n [`${prefix}progress-line-overlay`]: true,\n [`${prefix}progress-line-overlay-${state}`]: !color && !progressive && state,\n [`${prefix}progress-line-overlay-started`]: !color && progressive && percent <= 30,\n [`${prefix}progress-line-overlay-middle`]:\n !color && progressive && percent > 30 && percent < 80,\n [`${prefix}progress-line-overlay-finishing`]: !color && progressive && percent >= 80,\n });\n\n const lineStyle = { width: `${percent}%`, backgroundColor: color };\n\n return (\n <div\n dir={rtl ? 'rtl' : undefined}\n role=\"progressbar\"\n aria-valuenow={percent}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n className={wrapCls}\n {...others}\n >\n <div className={`${prefix}progress-line-container`}>\n <div className={`${prefix}progress-line-underlay`}>\n <div className={lineCls} style={lineStyle} />\n </div>\n </div>\n {suffixText ? <div className={`${prefix}progress-line-text`}>{suffixText}</div> : null}\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\n\r\nconst VIEWBOX_WIDTH = 100; // width of viewBox\r\nconst HALF_VIEWBOX_WIDTH = VIEWBOX_WIDTH / 2;\r\nconst DEFAULT_STROKE_WIDTH = 8;\r\n\r\nconst viewBox = `0 0 ${VIEWBOX_WIDTH} ${VIEWBOX_WIDTH}`;\r\n\r\nexport default class Circle extends Component {\r\n static propTypes = {\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n percent: PropTypes.number,\r\n state: PropTypes.oneOf(['normal', 'success', 'warning', 'error']),\r\n progressive: PropTypes.bool,\r\n textRender: PropTypes.func,\r\n prefix: PropTypes.string,\r\n className: PropTypes.string,\r\n color: PropTypes.string,\r\n rtl: PropTypes.bool,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n underlayStrokeWidth: DEFAULT_STROKE_WIDTH,\r\n overlayStrokeWidth: DEFAULT_STROKE_WIDTH,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.underlay && this.overlay) {\r\n // eslint-disable-next-line\r\n this.setState({\r\n underlayStrokeWidth:\r\n this._getCssValue(this.underlay, 'stroke-width') || DEFAULT_STROKE_WIDTH,\r\n overlayStrokeWidth: this._getCssValue(this.overlay, 'stroke-width') || DEFAULT_STROKE_WIDTH,\r\n });\r\n }\r\n }\r\n\r\n _getCssValue(dom, name) {\r\n const css = window.getComputedStyle(dom).getPropertyValue(name);\r\n const regExp = /(\\d*)px/g;\r\n const result = regExp.exec(css);\r\n\r\n return Array.isArray(result) ? Number(result[1]) : 0;\r\n }\r\n\r\n _underlayRefHandler = ref => {\r\n this.underlay = ref;\r\n };\r\n\r\n _overlayRefHandler = ref => {\r\n this.overlay = ref;\r\n };\r\n\r\n _computeOverlayStrokeDashOffset() {\r\n const { underlayStrokeWidth, overlayStrokeWidth } = this.state;\r\n const overlayRadius =\r\n HALF_VIEWBOX_WIDTH - overlayStrokeWidth / 2 - (underlayStrokeWidth - overlayStrokeWidth) / 2;\r\n const overlayLen = Math.PI * 2 * overlayRadius;\r\n return ((VIEWBOX_WIDTH - this.props.percent) / VIEWBOX_WIDTH) * overlayLen;\r\n }\r\n\r\n _getPath(radius) {\r\n return `M ${HALF_VIEWBOX_WIDTH},${HALF_VIEWBOX_WIDTH} m 0,-${radius} a ${radius},${radius} 0 1 1 0,${2 *\r\n radius} a ${radius},${radius} 0 1 1 0,-${2 * radius}`;\r\n }\r\n\r\n render() {\r\n const {\r\n prefix,\r\n size,\r\n state,\r\n percent,\r\n className,\r\n textRender,\r\n progressive,\r\n color,\r\n rtl,\r\n ...others\r\n } = this.props;\r\n const { underlayStrokeWidth, overlayStrokeWidth } = this.state;\r\n\r\n // underlay path\r\n const underlayRadius = HALF_VIEWBOX_WIDTH - underlayStrokeWidth / 2;\r\n const underlayPath = this._getPath(underlayRadius);\r\n\r\n // overlay path (为居中,减去相对于underlay的宽度)\r\n const overlayRadius =\r\n HALF_VIEWBOX_WIDTH - overlayStrokeWidth / 2 - (underlayStrokeWidth - overlayStrokeWidth) / 2;\r\n const overlayPath = this._getPath(overlayRadius);\r\n const overlayLen = Math.PI * 2 * overlayRadius;\r\n const overlayStrokeDasharray = `${overlayLen}px ${overlayLen}px`;\r\n const overlayStrokeDashoffset = `${this._computeOverlayStrokeDashOffset()}px`;\r\n\r\n const suffixText = textRender(percent, { rtl });\r\n\r\n const wrapCls = classNames({\r\n [`${prefix}progress-circle`]: true,\r\n [`${prefix}progress-circle-show-info`]: suffixText,\r\n [`${prefix + size}`]: size,\r\n [className]: className,\r\n });\r\n\r\n const pathCls = classNames({\r\n [`${prefix}progress-circle-overlay`]: true,\r\n [`${prefix}progress-circle-overlay-${state}`]: !color && !progressive && state,\r\n [`${prefix}progress-circle-overlay-started`]: !color && progressive && percent <= 30,\r\n [`${prefix}progress-circle-overlay-middle`]:\r\n !color && progressive && percent > 30 && percent < 80,\r\n [`${prefix}progress-circle-overlay-finishing`]: !color && progressive && percent >= 80,\r\n });\r\n\r\n return (\r\n <div\r\n className={wrapCls}\r\n dir={rtl ? 'rtl' : undefined}\r\n role=\"progressbar\"\r\n aria-valuenow={percent}\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n {...others}\r\n >\r\n <svg className={`${prefix}progress-circle-container`} viewBox={viewBox}>\r\n <path\r\n className={`${prefix}progress-circle-underlay`}\r\n d={underlayPath}\r\n fillOpacity=\"0\"\r\n ref={this._underlayRefHandler}\r\n />\r\n <path\r\n className={pathCls}\r\n d={overlayPath}\r\n fillOpacity=\"0\"\r\n strokeDasharray={overlayStrokeDasharray}\r\n strokeDashoffset={overlayStrokeDashoffset}\r\n ref={this._overlayRefHandler}\r\n stroke={color}\r\n />\r\n </svg>\r\n {suffixText ? <div className={`${prefix}progress-circle-text`}>{suffixText}</div> : null}\r\n </div>\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Line from './progress-line';\nimport Circle from './progress-circle';\n\n/**\n * Progress\n */\nexport default class Progress extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 形态\n */\n shape: PropTypes.oneOf(['circle', 'line']),\n /**\n * 尺寸\n */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n /**\n * 所占百分比\n */\n percent: PropTypes.number,\n /**\n * 进度状态, 显示优先级: color > progressive > state\n */\n state: PropTypes.oneOf(['normal', 'success', 'warning', 'error']),\n /**\n * 是否为色彩阶段变化模式, 显示优先级: color > progressive > state\n */\n progressive: PropTypes.bool,\n /**\n * 是否添加 Border(只适用于 Line Progress)\n */\n hasBorder: PropTypes.bool,\n /**\n * 文本渲染函数\n * @param {Number} percent 当前的进度信息\n * @param {Object} option 额外的参数\n * @property {Boolean} option.rtl 是否在rtl 模式下渲染\n * @return {ReactNode} 返回文本节点\n */\n textRender: PropTypes.func,\n /**\n * 进度条颜色, 显示优先级: color > progressive > state\n */\n color: PropTypes.string,\n /**\n * 背景色\n */\n backgroundColor: PropTypes.string,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n shape: 'line',\n state: 'normal',\n size: 'medium',\n percent: 0,\n progressive: false,\n hasBorder: false,\n textRender: percent => `${Math.floor(percent)}%`,\n };\n\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n render() {\n const { shape, hasBorder, ...others } = this.props;\n return shape === 'circle' ? <Circle {...others} /> : <Line {...others} hasBorder={hasBorder} />;\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Progress from './view/progress';\n\nexport default ConfigProvider.config(Progress, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('type' in props) {\n deprecated('type', 'progressive', 'Progress');\n\n const { type, ...others } = props;\n props = { progressive: type === 'progressive', ...others };\n }\n\n if ('showInfo' in props) {\n deprecated('showInfo', 'textRender', 'Progress');\n\n const { showInfo, ...others } = props;\n if (showInfo) {\n props = others;\n } else {\n props = { textRender: () => false, ...others };\n }\n }\n\n if ('suffix' in props) {\n deprecated('suffix', 'textRender', 'Progress');\n\n const { suffix, ...others } = props;\n props = { textRender: () => suffix, ...others };\n }\n\n return props;\n },\n});\n","export function inRange(value, range, min) {\n if (!Array.isArray(range)) {\n range = [min, range];\n }\n\n return value >= range[0] && value <= range[1];\n}\n\nexport function getPercent(min, max, value) {\n return ((value - min) * 100) / (max - min);\n}\n\nexport function getPrecision(step) {\n let precision = 0;\n const stepString = step.toString();\n if (stepString.indexOf('.') !== -1) {\n precision = stepString.length - stepString.indexOf('.') - 1;\n }\n return precision;\n}\n\nexport function isEqual(left, right) {\n if (Array.isArray(left)) {\n return left[0] === right[0] && left[1] === right[1];\n } else {\n return left === right;\n }\n}\n\nexport function getDragging(current, preValue) {\n let dragging = 'upper';\n\n if (current > preValue[1]) {\n dragging = 'upper';\n } else if (current < preValue[0]) {\n dragging = 'lower';\n } else {\n const mid = (preValue[0] + preValue[1]) / 2;\n\n dragging = current < mid ? 'lower' : 'upper';\n }\n\n return dragging;\n}\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { inRange, getPercent } from '../utils';\n\nexport default class Scale extends React.Component {\n static propTypes = {\n min: PropTypes.number,\n max: PropTypes.number,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n prefix: PropTypes.string,\n scales: PropTypes.arrayOf(PropTypes.number),\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n min: 0,\n max: 100,\n value: 0,\n rtl: false,\n };\n\n _renderItems() {\n const { min, max, value, prefix, scales, rtl } = this.props;\n const items = [];\n\n scales.forEach((scale, i) => {\n const classes = classNames({\n [`${prefix}range-scale-item`]: true,\n activated: inRange(scale, value, min),\n });\n let style;\n if (rtl) {\n style = {\n right: `${getPercent(min, max, scale)}%`,\n left: 'auto',\n };\n } else {\n style = {\n left: `${getPercent(min, max, scale)}%`,\n right: 'auto',\n };\n }\n\n items.push(\n // \"key\" is for https://fb.me/react-warning-keys\n <span className={classes} style={style} key={i} />,\n );\n });\n\n return items;\n }\n\n render() {\n const { prefix } = this.props;\n const classes = classNames({\n [`${prefix}range-scale`]: true,\n });\n const items = this._renderItems();\n\n return <div className={classes}>{items}</div>;\n }\n}\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Track = ({ prefix }) => {\n const classes = classNames({\n [`${prefix}range-track`]: true,\n });\n return <div className={classes} />;\n};\n\nTrack.propTypes = {\n prefix: PropTypes.string,\n};\n\nTrack.defaultProps = {\n prefix: 'next-',\n};\n\nexport default Track;\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getPercent } from '../utils';\n\nexport default class Selected extends React.Component {\n static propTypes = {\n min: PropTypes.number,\n max: PropTypes.number,\n slider: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n prefix: PropTypes.string,\n reverse: PropTypes.bool,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n slider: 'single',\n min: 0,\n max: 100,\n value: 0,\n reverse: false,\n rtl: false,\n };\n\n _getStyle() {\n const { min, max, reverse, rtl } = this.props;\n let { value } = this.props;\n\n if (!Array.isArray(value)) {\n value = [min, value];\n }\n const width = ((value[1] - value[0]) * 100) / (max - min);\n\n let style;\n\n if (!rtl && !reverse) {\n // normal select\n style = {\n width: `${width}%`,\n left: `${getPercent(min, max, value[0])}%`,\n };\n } else if (rtl && !reverse) {\n // select in rtl mode\n style = {\n width: `${width}%`,\n left: `${getPercent(min, max, max + min - value[1])}%`,\n };\n } else if (!rtl && reverse) {\n // select in reverse mode\n style = {\n width: `${100 - width}%`,\n left: `${getPercent(min, max, value[0]) + width}%`,\n };\n } else {\n // select in rtl & reverse mode\n style = {\n width: `${100 - width}%`,\n left: `${getPercent(min, max, value[0])}%`,\n };\n }\n\n return style;\n }\n\n _getStyleLeft() {\n const { min, max, rtl } = this.props;\n let { value } = this.props;\n\n if (!Array.isArray(value)) {\n value = [min, value];\n }\n\n const style = {\n width: `${getPercent(min, max, value[0])}%`,\n left: 0,\n };\n if (rtl) {\n style.width = `${100 - getPercent(min, max, value[1])}%`;\n }\n return style;\n }\n\n _getStyleRight() {\n const { min, max, rtl } = this.props;\n let { value } = this.props;\n\n if (!Array.isArray(value)) {\n value = [min, value];\n }\n const width = ((value[1] - value[0]) * 100) / (max - min);\n\n let style = {\n width: `${100 - getPercent(min, max, value[0]) - width}%`,\n left: `${getPercent(min, max, value[0]) + width}%`,\n };\n\n if (rtl) {\n style = {\n width: `${getPercent(min, max, value[0])}%`,\n left: `${100 - getPercent(min, max, value[0])}%`,\n };\n }\n return style;\n }\n\n render() {\n const { prefix, slider, reverse, rtl } = this.props;\n const classes = classNames({\n [`${prefix}range-selected`]: true,\n });\n let SeletedComps = <div className={classes} style={this._getStyle()} />;\n\n if (slider === 'double' && reverse) {\n SeletedComps = (\n <div>\n <div className={classes} style={this._getStyleLeft()} />\n <div className={classes} style={this._getStyleRight()} />\n </div>\n );\n }\n\n return SeletedComps;\n }\n}\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { inRange, getPercent } from '../utils';\n\nexport default class Mark extends React.Component {\n static propTypes = {\n min: PropTypes.number,\n max: PropTypes.number,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n prefix: PropTypes.string,\n marks: PropTypes.object,\n marksPosition: PropTypes.string,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n min: 0,\n max: 100,\n value: 0,\n marksPosition: '',\n rtl: false,\n };\n\n _renderItems() {\n const { min, max, value, prefix, marks, rtl } = this.props;\n const items = [];\n\n Object.keys(marks).forEach((mark, i) => {\n const classes = classNames({\n [`${prefix}range-mark-text`]: true,\n activated: inRange(mark, value, min),\n });\n let style;\n if (rtl) {\n style = {\n right: `${getPercent(min, max, mark)}%`,\n left: 'auto',\n };\n } else {\n style = {\n left: `${getPercent(min, max, mark)}%`,\n right: 'auto',\n };\n }\n\n items.push(\n // \"key\" is for https://fb.me/react-warning-keys\n <span className={classes} style={style} key={i}>\n {marks[mark]}\n </span>,\n );\n });\n\n return items;\n }\n\n render() {\n const { prefix, marksPosition } = this.props;\n const className =\n marksPosition === 'above' ? `${prefix}range-mark-above` : `${prefix}range-mark-below`;\n const classes = classNames(className, {\n [`${prefix}range-mark`]: true,\n });\n const items = this._renderItems();\n\n return <div className={classes}>{items}</div>;\n }\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { getPercent } from '../utils';\n\nfunction _getProps(min, max, value, rtl) {\n return {\n style: {\n left: rtl ? `${100 - getPercent(min, max, value)}%` : `${getPercent(min, max, value)}%`,\n zIndex: 100,\n },\n 'aria-valuenow': value,\n 'aria-valuetext': value,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n };\n}\n\nfunction Slider({ prefix, hasMovingClass, min, max, value, onKeyDown, rtl }) {\n const classes = classNames({\n [`${prefix}range-slider`]: true,\n [`${prefix}range-slider-moving`]: hasMovingClass,\n });\n return (\n <div\n className={classes}\n onKeyDown={onKeyDown}\n role=\"slider\"\n tabIndex={0}\n {..._getProps(min, max, value, rtl)}\n >\n <div className={`${prefix}range-slider-inner`} />\n </div>\n );\n}\n\nSlider.propTypes = {\n min: PropTypes.number,\n max: PropTypes.number,\n value: PropTypes.number,\n prefix: PropTypes.string,\n hasMovingClass: PropTypes.bool,\n rtl: PropTypes.bool,\n};\n\nSlider.defaultProps = {\n prefix: 'next-',\n min: 0,\n max: 100,\n value: 0,\n hasMovingClass: false,\n rtl: false,\n};\n\nexport default Slider;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { events, func } from '../../util';\nimport Balloon from '../../balloon';\nimport { getPercent } from '../utils';\n\nconst Tooltip = Balloon.Tooltip;\nconst { noop } = func;\n\nfunction _getStyle(min, max, value, rtl) {\n if (rtl) {\n return {\n left: `${getPercent(min, max, max + min - value[1])}%`,\n right: `${getPercent(min, max, value[0])}%`,\n };\n }\n return {\n left: `${getPercent(min, max, value[0])}%`,\n right: `${100 - getPercent(min, max, value[1])}%`,\n };\n}\n\nfunction sliderFrag(props) {\n const { prefix, min, max, value, disabled, onMouseEnter, onMouseLeave, onMouseDown, rtl } = props;\n\n const activeClass = !disabled && props.hasMovingClass ? ` ${prefix}range-active` : '';\n\n return (\n <div\n className={`${prefix}range-frag${activeClass}`}\n style={_getStyle(min, max, value, rtl)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseDown={onMouseDown}\n >\n <div className={`${prefix}range-selected`} />\n\n <div className={`${prefix}range-slider`}>\n <div className={`${prefix}range-slider-inner`} />\n </div>\n <div className={`${prefix}range-slider`}>\n <div className={`${prefix}range-slider-inner`} />\n </div>\n </div>\n );\n}\n\nsliderFrag.propTypes = {\n prefix: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n hasMovingClass: PropTypes.bool,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseDown: PropTypes.func,\n value: PropTypes.arrayOf(PropTypes.number),\n disabled: PropTypes.bool,\n rtl: PropTypes.bool,\n};\n\nexport default class FixedSlider extends React.Component {\n static propTypes = {\n hasTip: PropTypes.bool,\n tooltipVisible: PropTypes.bool,\n onTooltipVisibleChange: PropTypes.func,\n tooltipAnimation: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n tipRender: PropTypes.func,\n disabled: PropTypes.bool,\n hasMovingClass: PropTypes.bool,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n disabled: false,\n hasTip: true,\n onChange: noop,\n onProcess: noop,\n tipRender: value => value,\n reverse: false,\n rtl: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n hasMovingClass: false,\n tooltipAnimation: true,\n };\n }\n\n _onMouseDown = () => {\n this.keyState = 'down';\n this.setState({\n hasMovingClass: true,\n });\n this._addDocumentEvents();\n }\n\n _onMouseUp = () => {\n if (this.keyState === 'down') {\n this.keyState = '';\n this._removeDocumentEvents();\n this.setState({\n hasMovingClass: false,\n });\n }\n }\n\n _addDocumentEvents = () => {\n this._onMouseUpListener = events.on(document, 'mouseup', this._onMouseUp);\n }\n\n _removeDocumentEvents = () => {\n if (this._onMouseUpListener) {\n this._onMouseUpListener.off();\n this._onMouseUpListener = null;\n }\n }\n\n render() {\n const { hasTip, value, tipRender, tooltipVisible, hasMovingClass } = this.props;\n\n const addedProps = {\n hasMovingClass: hasMovingClass || this.state.hasMovingClass,\n onMouseDown: this._onMouseDown,\n };\n\n return hasTip ? (\n <Tooltip\n popupContainer={target => target.parentNode}\n popupProps={{\n visible: tooltipVisible || hasMovingClass,\n animation: this.state.tooltipAnimation\n ? { in: 'expandInUp', out: 'expandOutDown' }\n : false,\n }}\n type=\"primary\"\n trigger={sliderFrag({ ...this.props, ...addedProps })}\n align=\"t\"\n >\n {tipRender(`${value[0]}-${value[1]}`)}\n </Tooltip>\n ) : (\n sliderFrag({ ...this.props, ...addedProps })\n );\n }\n}\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { events, func, KEYCODE } from '../../util';\nimport Balloon from '../../balloon';\nimport { getPercent, getPrecision, isEqual, getDragging } from '../utils';\nimport Scale from './scale';\nimport Track from './track';\nimport Selected from './selected';\nimport Mark from './mark';\nimport Slider from './slider';\nimport FixedSlider from './fixedSlider';\n\nconst { Tooltip } = Balloon;\nconst { noop, bindCtx } = func;\n\nfunction _isMultiple(slider, isFixedWidth) {\n return isFixedWidth || slider === 'double';\n}\n\nfunction LowerSlider(props) {\n const {\n hasTip,\n value,\n tipRender,\n slider,\n tooltipVisible,\n onTooltipVisibleChange,\n tooltipAnimation,\n } = props;\n\n if (_isMultiple(slider)) {\n return hasTip ? (\n <Tooltip\n popupContainer={target => target.parentNode}\n popupProps={{\n visible: tooltipVisible,\n onVisibleChange: onTooltipVisibleChange,\n animation: tooltipAnimation,\n needAdjust: false,\n }}\n type=\"primary\"\n trigger={Slider({ ...props, value: value[0] })}\n align=\"t\"\n >\n {tipRender(`${value[0]}`)}\n </Tooltip>\n ) : (\n Slider({ ...props, value: value[0] })\n );\n }\n return null;\n}\n\nLowerSlider.propTypes = {\n hasTip: PropTypes.bool,\n tooltipVisible: PropTypes.bool,\n onTooltipVisibleChange: PropTypes.func,\n tooltipAnimation: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n tipRender: PropTypes.func,\n slider: PropTypes.oneOf(['single', 'double']),\n};\n\nfunction UpperSlider(props) {\n const newprop = Object.assign({}, props);\n const {\n hasTip,\n value,\n tipRender,\n slider,\n tooltipVisible,\n onTooltipVisibleChange,\n tooltipAnimation,\n } = newprop;\n if (_isMultiple(slider)) {\n delete newprop.onKeyDown;\n return hasTip ? (\n <Tooltip\n popupContainer={target => target.parentNode}\n popupProps={{\n visible: tooltipVisible,\n onVisibleChange: onTooltipVisibleChange,\n animation: tooltipAnimation,\n needAdjust: false,\n }}\n type=\"primary\"\n trigger={Slider({ ...newprop, value: value[1] })}\n align=\"t\"\n >\n {tipRender(value[1])}\n </Tooltip>\n ) : (\n Slider({ ...newprop, value: value[1] })\n );\n }\n return hasTip ? (\n <Tooltip\n popupContainer={target => target.parentNode}\n popupProps={{\n visible: tooltipVisible,\n onVisibleChange: onTooltipVisibleChange,\n animation: tooltipAnimation,\n needAdjust: false,\n }}\n animation={{\n in: 'fadeInUp',\n out: 'fadeOutDown',\n }}\n type=\"primary\"\n trigger={Slider(newprop)}\n align=\"t\"\n >\n {tipRender(value)}\n </Tooltip>\n ) : (\n Slider(newprop)\n );\n}\n\nUpperSlider.propTypes = {\n hasTip: PropTypes.bool,\n tooltipVisible: PropTypes.bool,\n onTooltipVisibleChange: PropTypes.func,\n tooltipAnimation: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n tipRender: PropTypes.func,\n slider: PropTypes.oneOf(['single', 'double']),\n};\n\nfunction pauseEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\n\n/** Range */\nexport default class Range extends React.Component {\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n static propTypes = {\n /**\n * 样式类名的品牌前缀\n */\n prefix: PropTypes.string,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * 滑块个数\n * @enumdesc 单个, 两个\n */\n slider: PropTypes.oneOf(['single', 'double']),\n /**\n * 最小值\n */\n min: PropTypes.number,\n /**\n * 最大值\n */\n max: PropTypes.number,\n /**\n * 步长,取值必须大于 0,并且可被 (max - min) 整除。\n */\n step: PropTypes.number,\n /**\n * 设置当前取值。当 `slider` 为 `single` 时,使用 `Number`,否则用 `[Number, Number]`\n */\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n tempValue: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n /**\n * 设置初始取值。当 `slider` 为 `single` 时,使用 `Number`,否则用 `[Number, Number]`\n */\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n /**\n * 刻度数值显示逻辑(false 代表不显示,array 枚举显示的值,number 代表按 number 平分,object 表示按 key 划分,value 值显示)\n */\n marks: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.number,\n PropTypes.arrayOf(PropTypes.number),\n PropTypes.object,\n ]),\n /**\n * marks显示在上方('above')or下方('below')\n */\n marksPosition: PropTypes.oneOf(['above', 'below']),\n /**\n * 值为 `true` 时,滑块为禁用状态\n */\n disabled: PropTypes.bool,\n /**\n * 当 Range 的值发生改变后,会触发 onChange 事件,并把改变后的值作为参数传入, 如果设置了value, 要配合此函数做受控使用\n * @param {String/number} value\n */\n onChange: PropTypes.func,\n /**\n * 滑块拖动的时候触发的事件,不建议在这里setState, 一般情况下不需要用, 滑动时有特殊需求时使用\n * @param {String/number} value\n */\n onProcess: PropTypes.func,\n /**\n * 是否显示 tip\n */\n hasTip: PropTypes.bool,\n /**\n * 自定义 tip 显示内容\n * @param {Number|String} value 值\n * @return {ReactNode} 显示内容\n */\n tipRender: PropTypes.func,\n id: PropTypes.string,\n /**\n * 选中态反转\n */\n reverse: PropTypes.bool,\n /**\n * 是否pure render\n */\n pure: PropTypes.bool,\n /**\n * 是否为拖动线段类型,默认slider为double, defaultValue必传且指定区间\n */\n fixedWidth: PropTypes.bool,\n /**\n * tooltip是否默认展示\n */\n tooltipVisible: PropTypes.bool,\n /**\n * 是否已rtl模式展示\n */\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n slider: 'single',\n min: 0,\n max: 100,\n step: 1,\n marks: false,\n disabled: false,\n fixedWidth: false,\n tooltipVisible: false,\n hasTip: true,\n onChange: noop,\n onProcess: noop,\n tipRender: value => value,\n reverse: false,\n pure: false,\n marksPosition: 'below',\n rtl: false,\n };\n\n constructor(props) {\n super(props);\n const { min } = props;\n const initialValue = _isMultiple(props.slider) ? [min, min] : min;\n const defaultValue = 'defaultValue' in props ? props.defaultValue : initialValue;\n const value = props.value !== undefined ? props.value : defaultValue;\n\n this.state = {\n value,\n tempValue: value,\n hasMovingClass: false,\n lowerTooltipVisible: false,\n upperTooltipVisible: false,\n tooltipAnimation: true,\n };\n\n bindCtx(this, [\n 'handleLowerTooltipVisibleChange',\n 'handleUpperTooltipVisibleChange',\n 'onKeyDown',\n ]);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { min } = this.props;\n const initialValue = _isMultiple(nextProps.slider) ? [min, min] : min;\n if ('value' in nextProps) {\n let { value } = nextProps;\n\n if (value === undefined) {\n // value设置undefined,reset为初始值\n value = initialValue;\n }\n this.setState({\n value,\n tempValue: value,\n });\n }\n }\n\n _marksToScales(marks) {\n let result = [];\n if (Object.prototype.toString.call(marks) === '[object Object]') {\n for (const key in marks) {\n if (Object.hasOwnProperty.call(marks, key)) {\n result.push(parseInt(key));\n }\n }\n } else {\n result = marks;\n }\n return result;\n }\n\n _calcScales() {\n const { min, max, marks } = this.props;\n const scales = this._marksToScales(marks);\n // let scales = null;\n\n if (scales !== false) {\n if (Array.isArray(scales)) {\n return scales;\n } else {\n const pace = (max - min) / scales;\n const result = [];\n\n result.push(min);\n for (let i = 1; i < scales; i++) {\n result.push(min + i * pace);\n }\n result.push(max);\n return result;\n }\n } else {\n return [];\n }\n }\n\n _calcMarks() {\n const { min, max, marks } = this.props;\n\n let result = {};\n\n if (Array.isArray(marks)) {\n marks.forEach(m => {\n result[m] = m.toString();\n });\n } else if (typeof marks === 'number') {\n const pace = (max - min) / marks;\n\n result[min] = min;\n for (let i = 1; i < marks; i++) {\n let mark = min + i * pace;\n let precision = getPrecision(mark);\n if (precision > 2) {\n precision = 2;\n }\n mark = mark.toFixed(precision);\n result[mark] = mark;\n }\n result[max] = max;\n } else {\n result = marks;\n }\n return result;\n }\n\n _onMouseDown(e) {\n if (e.button === 0) {\n this.setState({\n hasMovingClass: true,\n });\n this._start(e.pageX);\n this._addDocumentEvents();\n pauseEvent(e);\n }\n }\n\n onKeyDown(e) {\n if (e.keyCode === KEYCODE.LEFT_ARROW || e.keyCode === KEYCODE.RIGHT_ARROW) {\n e.stopPropagation();\n e.preventDefault();\n let newValue;\n if (e.keyCode === KEYCODE.LEFT_ARROW) {\n newValue = this.state.value - this.props.step;\n } else {\n newValue = this.state.value + this.props.step;\n }\n if (newValue > this.props.max) {\n newValue = this.props.max;\n }\n if (newValue < this.props.min) {\n newValue = this.props.min;\n }\n if (newValue !== this.state.value) {\n this.setState({\n value: newValue,\n });\n this.props.onChange(newValue);\n }\n }\n }\n\n _start(position) {\n const { tempValue } = this.state;\n const range = this.dom;\n const start = range.getBoundingClientRect().left;\n // used in unit test\n let width = range.clientWidth;\n if (!width) {\n if (range.style.width) {\n const index = range.style.width.indexOf('px');\n if (index !== -1) {\n width = Number(range.style.width.slice(0, index));\n }\n }\n }\n\n this._moving = {\n start,\n end: start + width,\n startValue: tempValue,\n };\n\n // change on start\n this._onProcess(position, true);\n }\n\n _end() {\n const { startValue } = this._moving;\n const { tempValue, value } = this.state;\n this._moving = null;\n this._removeDocumentEvents();\n this.setState({\n hasMovingClass: false,\n lowerTooltipVisible: false,\n upperTooltipVisible: false,\n tooltipAnimation: true,\n });\n if (!isEqual(tempValue, startValue)) {\n // Not Controlled\n if (!('value' in this.props)) {\n this.setState({\n value: tempValue,\n });\n } else {\n this.setState({\n // tooltipVisible: false,\n tempValue: value,\n value,\n });\n }\n this.props.onChange(tempValue);\n }\n }\n\n _move(e) {\n this._onProcess(e.pageX);\n }\n\n _onProcess(position, start) {\n const { tempValue } = this.state;\n const current = this._positionToCurrent(position); // current 为当前click的value\n\n if (this.isFixedWidth) {\n if (start) {\n this.lastPosition = current;\n }\n } else if (start) {\n this.lastPosition = current;\n if (_isMultiple(this.props.slider)) {\n this._moving.dragging = getDragging(current, tempValue);\n } else {\n this._moving.dragging = 'upper';\n }\n\n this.setState({\n lowerTooltipVisible: this._moving.dragging === 'lower',\n upperTooltipVisible: this._moving.dragging === 'upper',\n tooltipAnimation: false,\n });\n } else if (this.oldDragging === 'lower' && this._moving.dragging === 'upper') {\n this.setState({\n upperTooltipVisible: true,\n lowerTooltipVisible: false,\n });\n } else if (this.oldDragging === 'upper' && this._moving.dragging === 'lower') {\n this.setState({\n upperTooltipVisible: false,\n lowerTooltipVisible: true,\n });\n }\n\n this.oldDragging = this._moving.dragging;\n\n const nextValue = this._currentToValue(\n current,\n tempValue,\n this.lastPosition,\n this.isFixedWidth,\n ); // 计算range的新value,可能是数组,可能是单个值\n this.lastPosition = current;\n\n if (!isEqual(nextValue, tempValue)) {\n this.setState({\n tempValue: nextValue,\n });\n this.props.onProcess(nextValue);\n }\n }\n\n _addDocumentEvents() {\n this._onMouseMoveListener = events.on(document, 'mousemove', this._move.bind(this));\n this._onMouseUpListener = events.on(document, 'mouseup', this._end.bind(this));\n }\n\n _removeDocumentEvents() {\n if (this._onMouseMoveListener) {\n this._onMouseMoveListener.off();\n this._onMouseMoveListener = null;\n }\n\n if (this._onMouseUpListener) {\n this._onMouseUpListener.off();\n this._onMouseUpListener = null;\n }\n }\n\n // position => current (value type)\n _positionToCurrent(position) {\n const { start, end } = this._moving;\n const { step, min, max, rtl } = this.props;\n\n if (position < start) {\n position = start;\n } else if (position > end) {\n position = end;\n }\n let percent = getPercent(start, end, position);\n percent = rtl ? 100 - percent : percent;\n // reset by step\n const newValue = parseFloat(\n (Math.round(((percent / 100) * (max - min)) / step) * step).toFixed(getPrecision(step)),\n );\n\n return min + newValue;\n }\n\n _currentToValue(current, preValue, lastPosition, isFixedWidth) {\n const { dragging } = this._moving;\n const { min, max } = this.props;\n\n if (!_isMultiple(this.props.slider, isFixedWidth)) {\n return current;\n } else {\n let result;\n\n const precision = getPrecision(this.props.step);\n const diff = current - lastPosition;\n const newLeft = +(+preValue[0] + diff).toFixed(precision);\n const newRight = +(+preValue[1] + diff).toFixed(precision);\n\n const newMaxLeft = +(max - preValue[1] + preValue[0]).toFixed(precision);\n const newMinRight = +(min + preValue[1] - preValue[0]).toFixed(precision);\n\n if (isFixedWidth) {\n if (newLeft < min) {\n result = [min, newMinRight];\n } else if (newRight > max) {\n result = [newMaxLeft, max];\n } else {\n result = [newLeft, newRight];\n }\n } else if (dragging === 'lower') {\n if (current > preValue[1]) {\n result = [preValue[1], current];\n this._moving.dragging = 'upper';\n } else {\n result = [current, preValue[1]];\n }\n } else if (dragging === 'upper') {\n if (current < preValue[0]) {\n result = [current, preValue[0]];\n this._moving.dragging = 'lower';\n } else {\n result = [preValue[0], current];\n }\n }\n\n return result;\n }\n }\n\n handleLowerTooltipVisibleChange(visible) {\n if (this.state.hasMovingClass) {\n return;\n }\n this.setState({\n lowerTooltipVisible: visible,\n });\n }\n\n handleUpperTooltipVisibleChange(visible) {\n if (this.state.hasMovingClass) {\n return;\n }\n this.setState({\n upperTooltipVisible: visible,\n });\n }\n\n render() {\n let value = this._moving ? this.state.tempValue : this.state.value;\n\n const {\n prefix,\n min,\n max,\n disabled,\n style,\n id,\n slider,\n reverse,\n className,\n marks,\n marksPosition,\n hasTip,\n tipRender,\n fixedWidth,\n defaultValue,\n tooltipVisible,\n rtl,\n } = this.props;\n const classes = classNames({\n [`${prefix}range`]: true,\n disabled,\n [className]: className,\n });\n\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n if (item > max) {\n value[index] = max;\n }\n });\n } else if (value > max) {\n value = max;\n }\n\n const commonProps = {\n prefix,\n min,\n max,\n value,\n reverse,\n slider,\n hasTip,\n tipRender,\n marksPosition,\n tooltipVisible,\n hasMovingClass: this.state.hasMovingClass,\n disabled,\n rtl,\n };\n\n this.isFixedWidth =\n fixedWidth &&\n (value ? Array.isArray(value) : defaultValue ? Array.isArray(defaultValue) : false);\n\n return (\n <div\n ref={dom => {\n this.dom = dom;\n }}\n style={style}\n className={classes}\n id={id}\n dir={rtl ? 'rtl' : 'ltr'}\n onMouseDown={disabled ? noop : this._onMouseDown.bind(this)}\n >\n {marks !== false && marksPosition === 'above' ? (\n <Mark {...commonProps} marks={this._calcMarks()} />\n ) : null}\n <div className={`${prefix}range-inner`}>\n <Scale {...commonProps} scales={this._calcScales()} />\n <Track {...commonProps} />\n {this.isFixedWidth ? (\n <FixedSlider {...commonProps} />\n ) : (\n <div>\n <Selected {...commonProps} />\n <LowerSlider\n {...commonProps}\n hasMovingClass={\n this.state.hasMovingClass && this._moving && this._moving.dragging === 'lower'\n }\n tooltipVisible={tooltipVisible || this.state.lowerTooltipVisible}\n onTooltipVisibleChange={this.handleLowerTooltipVisibleChange}\n tooltipAnimation={\n this.state.tooltipAnimation\n ? {\n in: 'expandInUp',\n out: 'expandOutDown',\n }\n : false\n }\n />\n <UpperSlider\n {...commonProps}\n onKeyDown={this.onKeyDown}\n hasMovingClass={\n this.state.hasMovingClass && this._moving && this._moving.dragging === 'upper'\n }\n tooltipVisible={tooltipVisible || this.state.upperTooltipVisible}\n onTooltipVisibleChange={this.handleUpperTooltipVisibleChange}\n tooltipAnimation={\n this.state.tooltipAnimation\n ? {\n in: 'expandInUp',\n out: 'expandOutDown',\n }\n : false\n }\n />\n </div>\n )}\n </div>\n {marks !== false && marksPosition === 'below' ? (\n <Mark {...commonProps} marks={this._calcMarks()} />\n ) : null}\n </div>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Range from './view/range';\n\nexport default ConfigProvider.config(Range, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('hasTips' in props) {\n deprecated('hasTips', 'hasTip', 'Range');\n\n const { hasTips, ...others } = props;\n props = { hasTip: hasTips, ...others };\n }\n\n if ('tipFormatter' in props) {\n deprecated('tipFormatter', 'tipRender', 'Range');\n\n const { tipFormatter, ...others } = props;\n props = { tipRender: tipFormatter, ...others };\n }\n\n return props;\n },\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport { func, KEYCODE, obj } from '../util';\nimport zhCN from '../locale/zh-cn';\n\nconst { noop, bindCtx } = func;\nconst { ENTER, LEFT, UP, RIGHT, DOWN } = KEYCODE;\nconst supportKeys = [ENTER, LEFT, UP, RIGHT, DOWN];\n\n// 评分组件的大小与icon的大小映射关系\nconst ICON_SIZE_MAP = {\n small: 'xs',\n medium: 'small',\n large: 'medium',\n};\n\n/** Rating */\nexport default class Rating extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 默认值\n */\n defaultValue: PropTypes.number,\n /**\n * 值\n */\n value: PropTypes.number,\n /**\n * 评分的总数\n */\n count: PropTypes.number,\n /**\n * 是否显示 grade\n */\n showGrade: PropTypes.bool,\n /**\n * 尺寸\n */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n /**\n * 是否允许半星评分\n */\n allowHalf: PropTypes.bool,\n /**\n * 用户点击评分时触发的回调\n * @param {String} value 评分值\n */\n onChange: PropTypes.func,\n /**\n * 用户hover评分时触发的回调\n * @param {String} value 评分值\n */\n onHoverChange: PropTypes.func,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 评分文案生成方法,传入id支持无障碍时,读屏软件可读\n */\n readAs: PropTypes.func,\n // 实验属性: 自定义评分icon\n iconType: PropTypes.string,\n // 实验属性: 开启 `-webkit-text-stroke` 显示边框颜色,在IE中无效\n strokeMode: PropTypes.bool,\n className: PropTypes.string,\n id: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 自定义国际化文案对象\n */\n locale: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n disabled: false,\n count: 5,\n showGrade: false,\n defaultValue: 0,\n readAs: val => val,\n allowHalf: false,\n iconType: 'star-fill',\n onChange: noop,\n onHoverChange: noop,\n locale: zhCN.Rating,\n };\n\n static currentValue(min, max, hoverValue, stateValue) {\n let value = hoverValue || stateValue;\n\n value = value >= max ? max : value;\n value = value <= min ? min : value;\n\n return value || 0;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: 'value' in props ? props.value : props.defaultValue,\n hoverValue: 0,\n iconSpace: 0,\n iconSize: 0,\n clicked: false, // 标记组件是否被点击过\n };\n this.timer = null;\n\n bindCtx(this, ['handleClick', 'handleHover', 'handleLeave', 'onKeyDown']);\n }\n\n componentDidMount() {\n this.getRenderResult();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n this.setState({\n value: nextProps.value || 0,\n });\n }\n }\n\n componentWillUnmount() {\n this.clearTimer();\n }\n\n // 清除延时\n clearTimer() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n getRenderResult() {\n const { count } = this.props;\n const { iconSpace, iconSize } = this.state;\n const icon = this.refs['rating-icon-0'];\n\n if (icon && this.underlayNode) {\n const newIconSize = icon.offsetWidth;\n const newIconSpace = (this.underlayNode.offsetWidth - count * newIconSize) / (count + 1);\n\n if (newIconSize !== iconSize || newIconSpace !== iconSpace) {\n this.setState({\n iconSpace: newIconSpace,\n iconSize: newIconSize,\n });\n }\n }\n }\n\n getValue(e) {\n // 如定位不准,优先纠正定位\n this.getRenderResult();\n\n const { allowHalf, count, rtl } = this.props;\n const { iconSpace, iconSize } = this.state;\n\n const pos = e.pageX - this.underlayNode.getBoundingClientRect().left;\n const fullNum = Math.floor(pos / (iconSpace + iconSize));\n const surplusNum = (pos - fullNum * (iconSpace + iconSize)) / iconSize;\n let value = Number(fullNum) + Number(surplusNum.toFixed(1));\n\n if (value >= count) {\n value = count;\n } else if (allowHalf) {\n const floorValue = Math.floor(value);\n value = value - 0.5 >= floorValue ? floorValue + 1 : floorValue + 0.5;\n } else {\n value = Math.floor(value) + 1;\n }\n\n return rtl ? count - value + 1 : value;\n }\n\n handleHover(e) {\n const value = this.getValue(e);\n const { onHoverChange } = this.props;\n if (value !== this.state.hoverValue) {\n this.clearTimer();\n\n this.timer = setTimeout(() => {\n this.setState({ hoverValue: value }, () => {\n onHoverChange(value);\n });\n }, 0);\n }\n }\n\n handleLeave() {\n this.clearTimer();\n\n this.setState({\n hoverValue: 0,\n });\n }\n\n onKeyDown(e) {\n const { disabled, onKeyDown, count } = this.props;\n if (disabled || supportKeys.indexOf(e.keyCode) < 0) {\n return !onKeyDown || onKeyDown(e);\n }\n\n const { hoverValue, value } = this.state;\n let changingValue = hoverValue;\n if (changingValue === 0) {\n changingValue = value;\n }\n\n switch (e.keyCode) {\n case DOWN:\n case RIGHT:\n if (changingValue < count) {\n changingValue += 1;\n } else {\n changingValue = 1;\n }\n this.handleChecked(changingValue);\n break;\n case UP:\n case LEFT:\n if (changingValue > 1) {\n changingValue -= 1;\n } else {\n changingValue = count;\n }\n this.handleChecked(changingValue);\n break;\n case ENTER:\n this.props.onChange(changingValue);\n this.setState({\n value: changingValue,\n hoverValue: changingValue,\n });\n break;\n }\n return !onKeyDown || onKeyDown(e);\n }\n\n handleChecked(index) {\n this.setState({ hoverValue: index });\n }\n\n handleClick(e) {\n const value = this.getValue(e);\n if (value < 0) {\n return;\n }\n if (!('value' in this.props)) {\n this.setState({ value, clicked: true });\n }\n\n this.props.onChange(value);\n\n setTimeout(() => {\n this.setState({ clicked: false });\n }, 100);\n }\n\n getOverlayWidth() {\n const { hoverValue, iconSpace, iconSize } = this.state;\n\n if (!iconSpace || !iconSize) {\n return 'auto';\n }\n\n const value = Rating.currentValue(0, this.props.count, hoverValue, this.state.value);\n\n const floorValue = Math.floor(value);\n\n return iconSize * value + (floorValue + 1) * iconSpace;\n }\n\n getInfoLeft() {\n const { value, hoverValue, iconSpace, iconSize } = this.state;\n const infoValue = hoverValue || value;\n const ceilValue = Math.ceil(infoValue);\n\n return iconSize * (ceilValue - 1) + ceilValue * iconSpace;\n }\n\n render() {\n const {\n id,\n prefix,\n className,\n showGrade,\n count,\n size,\n iconType,\n strokeMode,\n disabled,\n readAs,\n rtl,\n locale,\n } = this.props;\n const others = obj.pickOthers(Rating.propTypes, this.props);\n const { hoverValue, clicked } = this.state;\n const underlay = [];\n const overlay = [];\n\n const enableA11y = !!id;\n\n // 获得Value\n const value = Rating.currentValue(0, count, hoverValue, this.state.value);\n\n // icon的sizeMap\n const sizeMap = ICON_SIZE_MAP[size];\n\n for (let i = 0; i < count; i++) {\n const isCurrent = Math.ceil(value - 1) === i;\n const iconCls = classNames({\n hover: hoverValue > 0 && isCurrent,\n clicked: clicked && isCurrent,\n });\n const iconNode = <Icon type={iconType} size={sizeMap} className={iconCls} />;\n\n underlay.push(\n <span ref={`rating-icon-${i}`} key={`underlay-${i}`} className={`${prefix}rating-icon`}>\n {iconNode}\n </span>,\n );\n if (enableA11y) {\n overlay.push(\n <input\n id={`${id}-${prefix}star${i + 1}`}\n key={`input-${i}`}\n className={`${prefix}sr-only`}\n aria-checked={i + 1 === parseInt(hoverValue)}\n checked={i + 1 === parseInt(hoverValue)}\n onChange={this.handleChecked.bind(this, i + 1)}\n type=\"radio\"\n name=\"rating\"\n />,\n );\n }\n\n overlay.push(\n <label\n key={`overlay-${i}`}\n htmlFor={enableA11y ? `${id}-${prefix}star${i + 1}` : null}\n className={`${prefix}rating-icon`}\n >\n {iconNode}\n {enableA11y ? <span className={`${prefix}sr-only`}>{readAs(i + 1)}</span> : null}\n </label>,\n );\n }\n\n const ratingCls = classNames(\n [`${prefix}rating`, `${prefix}rating-${size}`],\n {\n [`${prefix}rating-grade-low`]: value <= count * 0.4,\n [`${prefix}rating-grade-high`]: value > count * 0.4,\n [`${prefix}rating-stroke-mode`]: strokeMode,\n hover: hoverValue > 0,\n },\n className,\n );\n\n const baseCls = classNames(`${prefix}rating-base`, {\n [`${prefix}rating-base-disabled`]: disabled,\n });\n\n const overlayStyle = {\n width: this.getOverlayWidth(),\n };\n const infoStyle = {\n left: this.getInfoLeft(),\n display: hoverValue ? 'block' : 'none',\n };\n\n const finalProps = disabled\n ? {}\n : {\n onClick: this.handleClick,\n onMouseOver: this.handleHover,\n onMouseMove: this.handleHover,\n onMouseLeave: this.handleLeave,\n };\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n return (\n <div\n id={id || null}\n {...others}\n className={ratingCls}\n onKeyDown={this.onKeyDown}\n tabIndex=\"0\"\n role=\"group\"\n aria-label={locale.description}\n >\n <div className={baseCls} {...finalProps}>\n <div\n className={`${prefix}rating-underlay`}\n ref={n => (this.underlayNode = n)}\n aria-hidden\n >\n {underlay}\n </div>\n <div className={`${prefix}rating-overlay`} style={overlayStyle}>\n {overlay}\n </div>\n </div>\n {showGrade ? (\n <div className={`${prefix}rating-info`} style={infoStyle}>\n {readAs(value)}\n </div>\n ) : null}\n </div>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Rating from './rating';\n\nexport default ConfigProvider.config(Rating, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('type' in props) {\n deprecated('type', 'showGrade', 'Rating');\n\n const { type, ...others } = props;\n props = { showGrade: type === 'grade', ...others };\n }\n\n return props;\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\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';\n\nconst { Group } = Input;\nconst { AutoComplete } = Select;\n\n/**\n * Search\n * @description 输入框部分继承 Select.AutoComplete 的能力,可以直接用AutoComplete 的 api\n */\nclass Search extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n /**\n * 样式前缀\n */\n autoFocus: PropTypes.bool,\n /**\n * 形状\n */\n shape: PropTypes.oneOf(['normal', 'simple']),\n /**\n * 类型 shape=normal: primary/secondary; shape=simple: normal/dark/nav-search;\n */\n type: PropTypes.oneOf(['primary', 'secondary', 'normal', 'dark', 'nav-search']),\n /**\n * 后缀,仅在type为normal时有效\n */\n addonAfter: PropTypes.node,\n /**\n * 搜索框默认值\n */\n defaultValue: PropTypes.string,\n /**\n * 搜索框数值\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * 输入关键字时的回掉\n * @param {Object} value 输入值\n */\n onChange: PropTypes.func,\n /**\n * 点击搜索按钮触发的回调\n * @param {Object} value 输入值\n */\n onSearch: PropTypes.func,\n /**\n * 选择器默认值\n */\n defaultFilterValue: PropTypes.string,\n /**\n * 选择器\n */\n filter: PropTypes.array,\n /**\n * 选择器值\n */\n filterValue: PropTypes.string,\n /**\n * 选择器发生变化时回调\n * @param {Object} filter value\n */\n onFilterChange: PropTypes.func,\n /**\n * 搜索框下拉联想列表\n */\n dataSource: PropTypes.array,\n /**\n * 默认提示\n */\n placeholder: PropTypes.string,\n /**\n * button 的内容\n */\n searchText: PropTypes.node,\n /**\n * 自定义样式\n */\n style: PropTypes.object,\n /**\n * 样式名称\n */\n className: PropTypes.string,\n /**\n * 选择器的props\n */\n filterProps: PropTypes.object,\n /**\n * 按钮的额外属性\n */\n buttonProps: PropTypes.object,\n /**\n * 自定义渲染的的下拉框\n */\n popupContent: PropTypes.node,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 自定义渲染的的下拉框\n */\n visible: PropTypes.bool,\n /**\n * 是否显示清除按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 是否显示搜索按钮\n */\n hasIcon: PropTypes.bool,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n locale: PropTypes.object,\n rtl: PropTypes.bool,\n\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n shape: 'simple',\n type: 'normal',\n hasIcon: true,\n filter: [],\n locale: zhCN.Search,\n buttonProps: {},\n onChange: func.noop,\n onSearch: func.noop,\n onFilterChange: func.noop,\n autoFocus: false,\n hasClear: true,\n disabled: false,\n };\n\n inputRef = React.createRef();\n\n autoCompleteRef = React.createRef();\n\n constructor(props) {\n super(props);\n\n const value = 'value' in props ? props.value : props.defaultValue;\n const filterValue = 'filterValue' in props ? props.filterValue : props.defaultFilterValue;\n\n this.state = {\n value: typeof value === 'undefined' ? '' : value,\n filterValue,\n searchFocus: props.autoFocus && !props.disabled ? true : -1, // -1 or boolean\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const state = {};\n if ('value' in nextProps) {\n state.value = typeof nextProps.value === 'undefined' ? '' : nextProps.value;\n }\n if ('filterValue' in nextProps) {\n state.filterValue = typeof nextProps.filterValue === 'undefined' ? '' : nextProps.filterValue;\n }\n this.setState(state);\n }\n\n onChange = (value, ...argv) => {\n if (!('value' in this.props)) {\n this.setState({ value });\n }\n\n this.props.onChange(value, ...argv);\n };\n\n onSearch = () => {\n if (this.props.disabled) {\n return;\n }\n this.props.onSearch(this.state.value, this.state.filterValue);\n };\n\n onFilterChange = filterValue => {\n if (!('filterValue' in this.props)) {\n this.setState({ filterValue });\n }\n\n this.props.onFilterChange(filterValue);\n };\n\n onKeyDown = e => {\n if (this.props.disabled) {\n return;\n }\n if (e.keyCode !== KEYCODE.ENTER) {\n return;\n }\n this.onSearch();\n };\n\n focus = () => {\n if (this.props.disabled) {\n return;\n }\n this.inputRef.current && this.inputRef.current.focus();\n if (this.autoCompleteRef.current && this.autoCompleteRef.current.getInstance) {\n const ins = this.autoCompleteRef.current.getInstance();\n ins && ins.focusInput && ins.focusInput();\n }\n this.setState({\n searchFocus: true,\n });\n };\n\n onClickMask = () => {\n this.focus();\n };\n\n onInputFocus = () => {\n this.setState({\n searchFocus: true,\n });\n if (typeof this.props.onFocus === 'function') {\n this.props.onFocus();\n }\n };\n\n onInputBlur = () => {\n this.setState({\n searchFocus: false,\n });\n if (typeof this.props.onBlur === 'function') {\n this.props.onBlur();\n }\n };\n\n renderInputMask() {\n const { prefix, disabled, placeholder } = this.props;\n\n return (\n <div className={`${prefix}search-mask`} onClick={this.onClickMask}>\n <Icon type=\"search\" aria-disabled={disabled} />\n <span className={`${prefix}search-mask-text`}>{placeholder}</span>\n </div>\n );\n }\n\n renderInput() {\n const { hasClear, disabled, placeholder, autoFocus } = this.props;\n\n return (\n <Input\n ref={this.inputRef}\n autoFocus={autoFocus}\n hasClear={hasClear}\n disabled={disabled}\n placeholder={this.state.searchFocus === true ? placeholder : undefined}\n value={this.state.value}\n onChange={this.onChange}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n />\n );\n }\n\n renderAddonAfter = () => {\n const { prefix, type, addonAfter } = this.props;\n if (type !== 'normal' || !addonAfter) {\n return null;\n }\n return <span className={`${prefix}search-addon-after`}>{addonAfter}</span>;\n };\n\n renderSearchButton() {\n const { buttonProps, disabled, locale, hasIcon, prefix, searchText } = this.props;\n\n const buttonCls = classNames({\n [`${prefix}search-btn`]: true,\n [buttonProps.className]: !!buttonProps.className,\n });\n\n return (\n <Button\n tabIndex=\"0\"\n aria-disabled={disabled}\n aria-label={locale.buttonText}\n className={buttonCls}\n disabled={disabled}\n {...buttonProps}\n onClick={this.onSearch}\n onKeyDown={this.onKeyDown}\n >\n {hasIcon ? <Icon type=\"search\" /> : null}\n {searchText ? <span className={`${prefix}search-btn-text`}>{searchText}</span> : null}\n </Button>\n );\n }\n\n renderSearchIcon() {\n const { buttonProps, disabled, locale, hasIcon, prefix } = this.props;\n\n const iconCls = classNames({\n [`${prefix}search-icon`]: true,\n [buttonProps.className]: !!buttonProps.className,\n });\n\n return (\n hasIcon && (\n <Icon\n type=\"search\"\n tabIndex=\"0\"\n role=\"button\"\n aria-disabled={disabled}\n aria-label={locale.buttonText}\n {...buttonProps}\n className={iconCls}\n onClick={this.onSearch}\n onKeyDown={this.onKeyDown}\n />\n )\n );\n }\n\n render() {\n const {\n shape,\n autoFocus,\n filter,\n hasIcon,\n disabled,\n placeholder,\n type,\n className,\n style,\n prefix,\n searchText,\n dataSource,\n filterProps,\n buttonProps,\n popupContent,\n followTrigger,\n hasClear,\n visible,\n locale,\n rtl,\n ...others\n } = this.props;\n\n const cls = classNames({\n [`${prefix}search`]: true,\n [`${prefix}search-disabled`]: disabled,\n [`${prefix}search-${shape}`]: true,\n [`${prefix}${type}`]: type,\n [`${prefix}medium`]: true,\n [`${prefix}search-focus`]: this.state.searchFocus === true,\n [className]: !!className,\n });\n\n let searchIcon = null;\n let searchBtn = null;\n let filterSelect = null;\n\n if (shape === 'simple') {\n searchIcon = this.renderSearchIcon();\n } else {\n searchBtn = this.renderSearchButton();\n }\n\n if (filter.length > 0) {\n filterSelect = (\n <Select\n {...filterProps}\n followTrigger={followTrigger}\n hasBorder={false}\n dataSource={filter}\n disabled={disabled}\n value={this.state.filterValue}\n onChange={this.onFilterChange}\n />\n );\n }\n\n const othersAttributes = obj.pickOthers(Search.propTypes, others);\n if (visible !== undefined) {\n // 受控属性 visible 不能直接写在组件上\n othersAttributes.visible = Boolean(visible);\n }\n const dataAttr = obj.pickAttrsWith(others, 'data-');\n\n const left = (\n <Group\n addonBefore={filterSelect}\n className={`${prefix}search-left`}\n addonBeforeClassName={`${prefix}search-left-addon`}\n addonAfter={this.renderAddonAfter()}\n >\n <AutoComplete\n aria-label={locale.buttonText}\n showEmpty={false}\n {...othersAttributes}\n autoFocus={autoFocus}\n followTrigger={followTrigger}\n role=\"searchbox\"\n hasClear={hasClear}\n className={`${prefix}search-input`}\n placeholder={placeholder}\n dataSource={dataSource}\n innerBefore={searchIcon}\n onPressEnter={this.onSearch}\n value={this.state.value}\n onChange={this.onChange}\n onFocus={this.onInputFocus}\n onBlur={this.onInputBlur}\n popupContent={popupContent}\n disabled={disabled}\n ref={this.autoCompleteRef}\n />\n </Group>\n );\n\n if (type === 'nav-search') {\n const wrapCls = classNames({\n [`${prefix}search`]: true,\n [`${prefix}${type}`]: type,\n [`${prefix}search-disabled`]: disabled,\n [`${prefix}search-init`]: this.state.searchFocus === -1,\n [`${prefix}search-focus`]: this.state.searchFocus === true,\n [`${prefix}search-has-query`]: !!this.state.value,\n [className]: !!className,\n });\n\n return (\n <span className={wrapCls} style={style} dir={rtl ? 'rtl' : undefined} {...dataAttr}>\n {this.renderInputMask()}\n {this.renderInput()}\n </span>\n );\n }\n\n return (\n <span className={cls} style={style} {...dataAttr} dir={rtl ? 'rtl' : undefined}>\n {searchBtn ? <Group addonAfter={searchBtn}>{left}</Group> : left}\n </span>\n );\n }\n}\n\nexport default ConfigProvider.config(Search, {\n transfrom: /* istanbul ignore next */ (props, deprecated) => {\n const { onInputFocus, overlayVisible, combox, ...others } = this.props;\n\n const newprops = others;\n\n if (onInputFocus) {\n deprecated('onInputFocus', 'onFocus', 'Search');\n newprops.onFocus = onInputFocus;\n }\n if ('overlayVisible' in this.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\n return newprops;\n },\n});\n","import React, { useState, useCallback, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../../config-provider';\nimport Search from '../Search';\nimport Animate from '../../animate';\nimport Balloon from '../../balloon';\n\nimport Button from '../../button';\n\nconst { Tooltip } = Balloon;\n\nconst IconSearchFC = React.memo(\n ({\n prefix,\n className,\n disabled,\n onFocus,\n onChange,\n value: propsValue,\n onBlur,\n direction,\n searchCls: propsSearchCls,\n open,\n onOpen,\n triggerTooltipProps,\n ...searchProps\n }) => {\n const [value, setValue] = useState(propsValue);\n const searchRef = useRef(null);\n const rootCls = `${prefix}iconsearch`;\n const wrapperCls = classNames(rootCls, className, {\n rtl: direction === 'rtl',\n });\n const searchCls = classNames(`${rootCls}-search`, propsSearchCls, {\n [`${rootCls}-fold`]: !open,\n });\n\n const handleFocus = useCallback(\n e => {\n onOpen(true);\n onFocus && onFocus(e);\n },\n [onFocus, onOpen],\n );\n const handleBlur = useCallback(\n e => {\n if (value === '' || value === undefined) {\n onOpen(false);\n }\n onBlur && onBlur(e);\n },\n [onBlur, value, onOpen],\n );\n const handleClick = useCallback(() => {\n if (!open) {\n onOpen(true);\n return;\n }\n setTimeout(() => {\n if (searchRef.current && searchRef.current.getInstance) {\n const instance = searchRef.current.getInstance();\n instance && instance.focus && instance.focus();\n }\n }, 50);\n });\n const handleChange = useCallback(\n (v, ...argv) => {\n setValue(v);\n onChange && onChange(v, ...argv);\n },\n [onChange],\n );\n useEffect(() => setValue(propsValue), [propsValue]);\n useEffect(() => {\n open && handleClick();\n }, [open, handleClick]);\n\n let iconButton = (\n <Button.Icon\n name=\"search\"\n type=\"primary\"\n color=\"gray\"\n disabled={disabled}\n className={`${rootCls}-icon`}\n onClick={handleClick}\n />\n );\n\n if (triggerTooltipProps) {\n iconButton = <Tooltip {...triggerTooltipProps} trigger={iconButton}>{triggerTooltipProps.children}</Tooltip>;\n }\n\n const animation = {\n enter: `${rootCls}-fade-in`,\n leave: `${rootCls}-fade-out`,\n };\n\n return (\n <div className={wrapperCls}>\n <Animate animation={animation}>{open ? null : iconButton}</Animate>\n <Search\n {...searchProps}\n ref={searchRef}\n disabled={disabled}\n className={searchCls}\n onFocus={handleFocus}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n type=\"normal\"\n />\n </div>\n );\n },\n);\n\nclass IconSearch extends React.Component {\n state = {\n open: false,\n };\n\n static propTypes = {\n prefix: PropTypes.string,\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n searchCls: PropTypes.string,\n triggerTooltipProps: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n direction: 'ltr',\n };\n\n open() {\n this.setState({ open: true });\n }\n\n close() {\n this.setState({ open: false });\n }\n\n handleOpenChange = open => {\n this.setState({ open });\n };\n\n render() {\n return <IconSearchFC {...this.props} open={this.state.open} onOpen={this.handleOpenChange} />;\n }\n}\n\nexport default ConfigProvider.config(IconSearch);\n","import Search from './Search';\nimport IconSearch from './icon-search';\n\nSearch.Icon = IconSearch;\n\nexport default Search;\n","import ReactDOM from 'react-dom';\n\nconst checkSpecKeys = (spec, keysArray) => {\n return keysArray.reduce((value, key) => {\n return value && spec.hasOwnProperty(key);\n }, true)\n ? null\n : console.error('Keys Missing', spec); /*eslint no-console:0*/\n};\n\nexport const getTrackCSS = spec => {\n checkSpecKeys(spec, ['left', 'variableWidth', 'slideCount', 'slidesToShow', 'slideWidth']);\n\n let trackWidth;\n let trackHeight;\n\n const trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n if (spec.variableWidth) {\n trackWidth = (spec.slideCount + 2 * spec.slidesToShow) * spec.slideWidth;\n } else if (spec.centerMode) {\n trackWidth = (spec.slideCount + 2 * (spec.slidesToShow + 1)) * spec.slideWidth;\n } else {\n trackWidth = (spec.slideCount + 2 * spec.slidesToShow) * spec.slideWidth;\n }\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n let style = {\n opacity: 1,\n };\n\n const transform = {\n WebkitTransform: !spec.vertical\n ? `translate3d(${spec.left}px, 0px, 0px)`\n : `translate3d(0px, ${spec.left}px, 0px)`,\n transform: !spec.vertical\n ? `translate3d(${spec.left}px, 0px, 0px)`\n : `translate3d(0px, ${spec.left}px, 0px)`,\n transition: '',\n WebkitTransition: '',\n msTransform: !spec.vertical ? `translateX(${spec.left}px)` : `translateY(${spec.left}px)`,\n };\n\n if (trackWidth) {\n style = { ...style, width: trackWidth };\n }\n\n if (trackHeight) {\n style = { ...style, height: trackHeight };\n }\n\n if (spec.animation !== 'fade') {\n style = { ...style, ...transform };\n }\n\n return style;\n};\n\nexport const getTrackAnimateCSS = spec => {\n checkSpecKeys(spec, [\n 'left',\n 'variableWidth',\n 'slideCount',\n 'slidesToShow',\n 'slideWidth',\n 'speed',\n 'cssEase',\n ]);\n\n const style = getTrackCSS(spec);\n // useCSS is true by default so it can be undefined\n style.WebkitTransition = `-webkit-transform ${spec.speed}ms ${spec.cssEase}`;\n style.transition = `transform ${spec.speed}ms ${spec.cssEase}`;\n return style;\n};\n\nexport const getTrackLeft = function(spec) {\n checkSpecKeys(spec, [\n 'slideIndex',\n 'trackRef',\n 'infinite',\n 'centerMode',\n 'slideCount',\n 'slidesToShow',\n 'slidesToScroll',\n 'slideWidth',\n 'listWidth',\n 'variableWidth',\n 'slideHeight',\n ]);\n\n let slideOffset = 0;\n let targetLeft;\n let targetSlide;\n let verticalOffset = 0;\n\n if (spec.animation === 'fade') {\n return 0;\n }\n\n if (spec.infinite) {\n if (spec.slideCount > spec.slidesToShow) {\n slideOffset = spec.slideWidth * spec.slidesToShow * -1;\n verticalOffset = spec.slideHeight * spec.slidesToShow * -1;\n }\n if (spec.slideCount % spec.slidesToScroll !== 0) {\n let condition =\n spec.slideIndex + spec.slidesToScroll > spec.slideCount &&\n spec.slideCount > spec.slidesToShow;\n\n if (spec.rtl) {\n const slideIndex =\n spec.slideIndex >= spec.slideCount ? spec.slideCount - spec.slideIndex : spec.slideIndex;\n condition =\n slideIndex + spec.slidesToScroll > spec.slideCount && spec.slideCount > spec.slidesToShow;\n }\n if (condition) {\n if (spec.slideIndex > spec.slideCount) {\n slideOffset =\n (spec.slidesToShow - (spec.slideIndex - spec.slideCount)) * spec.slideWidth * -1;\n verticalOffset =\n (spec.slidesToShow - (spec.slideIndex - spec.slideCount)) * spec.slideHeight * -1;\n } else {\n slideOffset = (spec.slideCount % spec.slidesToScroll) * spec.slideWidth * -1;\n verticalOffset = (spec.slideCount % spec.slidesToScroll) * spec.slideHeight * -1;\n }\n }\n }\n } else {\n /* eslint-disable no-lonely-if */\n if (spec.slideCount % spec.slidesToScroll !== 0) {\n if (\n spec.slideIndex + spec.slidesToScroll > spec.slideCount &&\n spec.slideCount > spec.slidesToShow\n ) {\n const slidesToOffset = spec.slidesToShow - (spec.slideCount % spec.slidesToScroll);\n slideOffset = slidesToOffset * spec.slideWidth;\n }\n }\n }\n\n if (spec.centerMode) {\n if (spec.infinite) {\n slideOffset += spec.slideWidth * Math.floor(spec.slidesToShow / 2);\n } else {\n slideOffset = spec.slideWidth * Math.floor(spec.slidesToShow / 2);\n }\n }\n\n if (!spec.vertical) {\n targetLeft = spec.slideIndex * spec.slideWidth * -1 + slideOffset;\n } else {\n targetLeft = spec.slideIndex * spec.slideHeight * -1 + verticalOffset;\n }\n\n if (spec.variableWidth === true) {\n let targetSlideIndex;\n if (spec.slideCount <= spec.slidesToShow || spec.infinite === false) {\n targetSlide = ReactDOM.findDOMNode(spec.trackRef).childNodes[spec.slideIndex];\n } else {\n targetSlideIndex = spec.slideIndex + spec.slidesToShow;\n targetSlide = ReactDOM.findDOMNode(spec.trackRef).childNodes[targetSlideIndex];\n }\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n if (spec.centerMode === true) {\n if (spec.infinite === false) {\n targetSlide = ReactDOM.findDOMNode(spec.trackRef).children[spec.slideIndex];\n } else {\n targetSlide = ReactDOM.findDOMNode(spec.trackRef).children[\n spec.slideIndex + spec.slidesToShow + 1\n ];\n }\n\n if (targetSlide) {\n targetLeft = targetSlide.offsetLeft * -1 + (spec.listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n }\n\n return targetLeft;\n};\n","import { findDOMNode } from 'react-dom';\nimport { getTrackCSS, getTrackLeft, getTrackAnimateCSS } from './trackHelper';\n\n/* istanbul ignore next */\nconst EventHandlers = {\n // Event handler for previous and next\n changeSlide(options) {\n let slideOffset, targetSlide;\n const unevenOffset = this.state.slideCount % this.props.slidesToScroll !== 0;\n const indexOffset = unevenOffset\n ? 0\n : (this.state.slideCount - this.state.currentSlide) % this.props.slidesToScroll;\n\n if (options.message === 'previous') {\n slideOffset =\n indexOffset === 0 ? this.props.slidesToScroll : this.props.slidesToShow - indexOffset;\n targetSlide = this.state.currentSlide - slideOffset;\n } else if (options.message === 'next') {\n slideOffset = indexOffset === 0 ? this.props.slidesToScroll : indexOffset;\n targetSlide = this.state.currentSlide + slideOffset;\n } else if (options.message === 'dots' || options.message === 'children') {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n if (targetSlide === options.currentSlide) {\n return;\n }\n } else if (options.message === 'index') {\n targetSlide = options.index;\n if (targetSlide === options.currentSlide) {\n return;\n }\n }\n this.slideHandler(targetSlide);\n },\n\n // Accessiblity handler for previous and next\n keyHandler(e) {\n //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n if (!e.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n if (e.keyCode === 37 && this.props.accessibility === true) {\n this.changeSlide({\n message: this.props.rtl === true ? 'next' : 'previous',\n });\n } else if (e.keyCode === 39 && this.props.accessibility === true) {\n this.changeSlide({\n message: this.props.rtl === true ? 'previous' : 'next',\n });\n }\n }\n },\n\n // Focus on selecting a slide (click handler on track)\n selectHandler(options) {\n this.changeSlide(options);\n },\n\n swipeStart(e) {\n if (this.props.swipe === false || ('ontouchend' in document && this.props.swipe === false)) {\n return;\n } else if (this.props.draggable === false && e.type.indexOf('mouse') !== -1) {\n return;\n }\n const posX = e.touches !== undefined ? e.touches[0].pageX : e.clientX;\n const posY = e.touches !== undefined ? e.touches[0].pageY : e.clientY;\n this.setState({\n dragging: true,\n touchObject: {\n startX: posX,\n startY: posY,\n curX: posX,\n curY: posY,\n },\n });\n },\n\n swipeMove(e) {\n if (!this.state.dragging) {\n return;\n }\n if (this.state.animating) {\n return;\n }\n const touchObject = this.state.touchObject;\n\n const curLeft = getTrackLeft({\n slideIndex: this.state.currentSlide,\n trackRef: this.refs.track,\n ...this.props,\n ...this.state,\n });\n\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(\n Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)),\n );\n\n let positionOffset =\n (this.props.rtl === false ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n\n if (this.props.verticalSwiping === true) {\n touchObject.swipeLength = Math.round(\n Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)),\n );\n positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n }\n\n const currentSlide = this.state.currentSlide;\n const dotCount = Math.ceil(this.state.slideCount / this.props.slidesToScroll);\n const swipeDirection = this.swipeDirection(this.state.touchObject);\n let touchSwipeLength = touchObject.swipeLength;\n\n if (this.props.infinite === false) {\n if (\n (currentSlide === 0 && swipeDirection === 'right') ||\n (currentSlide + 1 >= dotCount && swipeDirection === 'left')\n ) {\n touchSwipeLength = touchObject.swipeLength * this.props.edgeFriction;\n\n if (this.state.edgeDragged === false && this.props.edgeEvent) {\n this.props.edgeEvent(swipeDirection);\n this.setState({ edgeDragged: true });\n }\n }\n }\n\n if (this.state.swiped === false && this.props.swipeEvent) {\n this.props.swipeEvent(swipeDirection);\n this.setState({ swiped: true });\n }\n\n const swipeLeft = curLeft + touchSwipeLength * positionOffset;\n this.setState({\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS({\n left: swipeLeft,\n ...this.props,\n ...this.state,\n }),\n });\n\n if (\n Math.abs(touchObject.curX - touchObject.startX) <\n Math.abs(touchObject.curY - touchObject.startY) * 0.8\n ) {\n return;\n }\n if (touchObject.swipeLength > 4) {\n e.preventDefault();\n }\n },\n\n getNavigableIndexes() {\n let max;\n let breakPoint = 0;\n let counter = 0;\n const indexes = [];\n\n if (!this.props.infinite) {\n max = this.state.slideCount;\n } else {\n breakPoint = this.props.slidesToShow * -1;\n counter = this.props.slidesToShow * -1;\n max = this.state.slideCount * 2;\n }\n\n while (breakPoint < max) {\n indexes.push(breakPoint);\n breakPoint = counter + this.props.slidesToScroll;\n\n counter +=\n this.props.slidesToScroll <= this.props.slidesToShow\n ? this.props.slidesToScroll\n : this.props.slidesToShow;\n }\n\n return indexes;\n },\n\n checkNavigable(index) {\n const navigables = this.getNavigableIndexes();\n let prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (const n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n },\n\n getSlideCount() {\n const centerOffset = this.props.centerMode\n ? this.state.slideWidth * Math.floor(this.props.slidesToShow / 2)\n : 0;\n if (this.props.swipeToSlide) {\n let swipedSlide;\n const slickList = findDOMNode(this.list);\n\n const slides = slickList.querySelectorAll(`${this.props.prefix}slick-slide`);\n\n Array.from(slides).every(slide => {\n if (!this.props.vertical) {\n if (\n slide.offsetLeft - centerOffset + this.getWidth(slide) / 2 >\n this.state.swipeLeft * -1\n ) {\n swipedSlide = slide;\n return false;\n }\n } else if (slide.offsetTop + this.getHeight(slide) / 2 > this.state.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n\n return true;\n });\n const slidesTraversed = Math.abs(swipedSlide.dataset.index - this.state.currentSlide) || 1;\n return slidesTraversed;\n } else {\n return this.props.slidesToScroll;\n }\n },\n\n swipeEnd(e) {\n if (!this.state.dragging) {\n if (this.props.swipe) {\n e.preventDefault();\n }\n return;\n }\n const touchObject = this.state.touchObject;\n let minSwipe = this.state.listWidth / this.props.touchThreshold;\n const swipeDirection = this.swipeDirection(touchObject);\n\n if (this.props.verticalSwiping) {\n minSwipe = this.state.listHeight / this.props.touchThreshold;\n }\n\n // reset the state of touch related state variables.\n this.setState({\n dragging: false,\n edgeDragged: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {},\n });\n\n if (!touchObject.swipeLength) {\n return;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n e.preventDefault();\n\n let slideCount;\n let newSlide;\n\n switch (swipeDirection) {\n case 'left':\n case 'down':\n newSlide = this.state.currentSlide + this.getSlideCount();\n slideCount = this.props.swipeToSlide ? this.checkNavigable(newSlide) : newSlide;\n this.setState({ currentDirection: 0 });\n break;\n case 'right':\n case 'up':\n newSlide = this.state.currentSlide - this.getSlideCount();\n slideCount = this.props.swipeToSlide ? this.checkNavigable(newSlide) : newSlide;\n this.setState({ currentDirection: 1 });\n break;\n default:\n slideCount = this.state.currentSlide;\n }\n this.slideHandler(slideCount);\n } else {\n // Adjust the track back to it's original position.\n const currentLeft = getTrackLeft({\n slideIndex: this.state.currentSlide,\n trackRef: this.track,\n ...this.props,\n ...this.state,\n });\n\n this.setState({\n trackStyle: getTrackAnimateCSS({\n left: currentLeft,\n ...this.props,\n ...this.state,\n }),\n });\n }\n },\n\n onInnerSliderEnter() {\n if (this.props.autoplay && this.props.pauseOnHover) {\n this.pause();\n }\n },\n\n onInnerSliderLeave() {\n if (this.props.autoplay && this.props.pauseOnHover) {\n this.autoPlay();\n }\n },\n};\n\nexport default EventHandlers;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { getTrackCSS, getTrackLeft, getTrackAnimateCSS } from './trackHelper';\n\nconst helpers = {\n initialize(props) {\n const slickList = ReactDOM.findDOMNode(this.list);\n const slideCount = React.Children.count(props.children);\n const listWidth = this.getWidth(slickList);\n const trackWidth = this.getWidth(ReactDOM.findDOMNode(this.track));\n let slideWidth;\n\n if (!props.vertical) {\n const centerPaddingAdj = props.centerMode && parseInt(props.centerPadding) * 2;\n slideWidth = (listWidth - centerPaddingAdj) / props.slidesToShow;\n } else {\n slideWidth = listWidth;\n }\n\n const slideHeight = this.getHeight(slickList.querySelector('[data-index=\"0\"]'));\n const listHeight = slideHeight * props.slidesToShow;\n\n const slidesToShow = props.slidesToShow || 1;\n const currentSlide = props.rtl\n ? slideCount - 1 - (slidesToShow - 1) - props.defaultActiveIndex\n : props.defaultActiveIndex;\n\n this.setState(\n {\n slideCount,\n slideWidth,\n listWidth,\n trackWidth,\n currentSlide,\n slideHeight,\n listHeight,\n },\n () => {\n const targetLeft = getTrackLeft({\n slideIndex: this.state.currentSlide,\n trackRef: this.track,\n ...props,\n ...this.state,\n });\n // getCSS function needs previously set state\n const trackStyle = getTrackCSS({\n left: targetLeft,\n ...props,\n ...this.state,\n });\n\n this.setState({ trackStyle: trackStyle });\n\n this.autoPlay(); // once we're set up, trigger the initial autoplay.\n },\n );\n },\n\n update(props) {\n this.initialize(props);\n },\n\n getWidth(elem) {\n return elem.getBoundingClientRect().width || elem.offsetWidth;\n },\n\n getHeight(elem) {\n return elem.getBoundingClientRect().height || elem.offsetHeight;\n },\n\n adaptHeight() {\n if (this.props.adaptiveHeight) {\n const selector = `[data-index=\"${this.state.currentSlide}\"]`;\n if (this.list) {\n const slickList = ReactDOM.findDOMNode(this.list);\n const listHeight = slickList.querySelector(selector).offsetHeight;\n slickList.style.height = `${listHeight}px`;\n }\n }\n },\n\n canGoNext(opts) {\n let canGo = true;\n if (!opts.infinite) {\n if (opts.centerMode) {\n if (opts.currentSlide >= opts.slideCount - 1) {\n canGo = false;\n }\n } else if (\n opts.slideCount <= opts.slidesToShow ||\n opts.currentSlide >= opts.slideCount - opts.slidesToShow\n ) {\n // check if all slides are shown in slider\n canGo = false;\n }\n }\n return canGo;\n },\n\n slideHandler(index) {\n const { rtl } = this.props;\n\n // Functionality of animateSlide and postSlide is merged into this function\n let targetSlide, currentSlide;\n let callback;\n\n if (this.props.waitForAnimate && this.state.animating) {\n return;\n }\n\n if (this.props.animation === 'fade') {\n currentSlide = this.state.currentSlide;\n\n // don't change slide if it's not infinite and current slide is the first or last slide'\n if (this.props.infinite === false && (index < 0 || index >= this.state.slideCount)) {\n return;\n }\n\n // Shifting targetSlide back into the range\n if (index < 0) {\n targetSlide = index + this.state.slideCount;\n } else if (index >= this.state.slideCount) {\n targetSlide = index - this.state.slideCount;\n } else {\n targetSlide = index;\n }\n\n if (this.props.lazyLoad && this.state.lazyLoadedList.indexOf(targetSlide) < 0) {\n this.setState({\n lazyLoadedList: this.state.lazyLoadedList.concat(targetSlide),\n });\n }\n\n callback = () => {\n this.setState({\n animating: false,\n });\n this.props.onChange(targetSlide);\n delete this.animationEndCallback;\n };\n\n this.props.onBeforeChange(this.state.currentSlide, targetSlide);\n\n this.setState(\n {\n animating: true,\n currentSlide: targetSlide,\n },\n function() {\n this.animationEndCallback = setTimeout(callback, this.props.speed + 20);\n },\n );\n\n this.autoPlay();\n return;\n }\n\n targetSlide = index;\n\n if (rtl) {\n if (targetSlide < 0) {\n if (this.props.infinite === false) {\n currentSlide = 0;\n } else if (this.state.slideCount % this.props.slidesToScroll !== 0) {\n if (targetSlide + this.props.slidesToScroll <= 0) {\n currentSlide = this.state.slideCount + targetSlide;\n targetSlide = this.state.slideCount - this.props.slidesToScroll;\n } else {\n currentSlide = targetSlide = 0;\n }\n } else {\n // this.state.slideCount % this.props.slidesToScroll\n currentSlide = this.state.slideCount + targetSlide;\n }\n } else if (targetSlide >= this.state.slideCount) {\n if (this.props.infinite === false) {\n currentSlide = this.state.slideCount - this.props.slidesToShow;\n } else if (this.state.slideCount % this.props.slidesToScroll !== 0) {\n currentSlide = 0;\n } else {\n currentSlide = targetSlide - this.state.slideCount;\n }\n } else {\n currentSlide = targetSlide;\n }\n } else if (targetSlide < 0) {\n if (this.props.infinite === false) {\n currentSlide = 0;\n } else if (this.state.slideCount % this.props.slidesToScroll !== 0) {\n currentSlide = this.state.slideCount - (this.state.slideCount % this.props.slidesToScroll);\n } else {\n currentSlide = this.state.slideCount + targetSlide;\n }\n } else if (targetSlide >= this.state.slideCount) {\n if (this.props.infinite === false) {\n currentSlide = this.state.slideCount - this.props.slidesToShow;\n } else if (this.state.slideCount % this.props.slidesToScroll !== 0) {\n currentSlide = 0;\n } else {\n currentSlide = targetSlide - this.state.slideCount;\n }\n } else {\n currentSlide = targetSlide;\n }\n\n let targetLeft = getTrackLeft({\n slideIndex: targetSlide,\n trackRef: this.track,\n ...this.props,\n ...this.state,\n });\n\n const currentLeft = getTrackLeft({\n slideIndex: currentSlide,\n trackRef: this.track,\n ...this.props,\n ...this.state,\n });\n\n if (this.props.infinite === false) {\n targetLeft = currentLeft;\n }\n\n if (this.props.lazyLoad) {\n let loaded = true;\n const slidesToLoad = [];\n const slidesLen = this.state.slideCount;\n\n const sliderIndex = targetSlide < 0 ? slidesLen + targetSlide : currentSlide;\n\n for (let i = sliderIndex; i < sliderIndex + this.props.slidesToShow; i++) {\n let k = i;\n if (rtl) {\n k = i >= slidesLen ? slidesLen * 2 - i - 1 : slidesLen - i - 1;\n }\n\n const pre = k - 1 < 0 ? slidesLen - 1 : k - 1;\n const next = k + 1 >= slidesLen ? 0 : k + 1;\n\n this.state.lazyLoadedList.indexOf(k) < 0 && slidesToLoad.push(k);\n this.state.lazyLoadedList.indexOf(pre) < 0 && slidesToLoad.push(pre);\n this.state.lazyLoadedList.indexOf(next) < 0 && slidesToLoad.push(next);\n }\n\n slidesToLoad.forEach(i => {\n if (this.state.lazyLoadedList.indexOf(i) < 0) {\n loaded = false;\n }\n });\n\n if (!loaded) {\n this.setState({\n lazyLoadedList: this.state.lazyLoadedList.concat(slidesToLoad),\n });\n }\n }\n\n this.props.onBeforeChange(this.state.currentSlide, currentSlide);\n\n // Slide Transition happens here.\n // animated transition happens to target Slide and\n // non - animated transition happens to current Slide\n // If CSS transitions are false, directly go the current slide.\n /* istanbul ignore if */\n if (this.props.useCSS === false) {\n this.setState(\n {\n currentSlide: currentSlide,\n trackStyle: getTrackCSS({\n left: currentLeft,\n ...this.props,\n ...this.state,\n }),\n },\n () => {\n this.props.onChange(currentSlide);\n },\n );\n } else {\n const nextStateChanges = {\n animating: false,\n currentSlide: currentSlide,\n trackStyle: getTrackCSS({\n left: currentLeft,\n ...this.props,\n ...this.state,\n }),\n swipeLeft: null,\n };\n\n callback = () => {\n this.setState(nextStateChanges);\n this.props.onChange(currentSlide);\n delete this.animationEndCallback;\n };\n\n this.setState(\n {\n animating: true,\n currentSlide: currentSlide,\n trackStyle: getTrackAnimateCSS({\n left: targetLeft,\n ...this.props,\n ...this.state,\n }),\n },\n function() {\n this.animationEndCallback = setTimeout(callback, this.props.speed + 20);\n },\n );\n }\n\n this.autoPlay();\n },\n\n // 鼠标悬浮在 arrow 上时作出动画反馈\n arrowHoverHandler(msg) {\n const offset = 30; // slide 的位置偏移量\n const targetLeft = getTrackLeft({\n slideIndex: this.state.currentSlide,\n trackRef: this.track,\n ...this.props,\n ...this.state,\n });\n\n let left;\n /* istanbul ignore next */\n if (msg === 'next') {\n left = targetLeft - offset;\n } else if (msg === 'prev') {\n left = targetLeft + offset;\n } else {\n left = targetLeft;\n }\n\n this.setState({\n trackStyle: getTrackAnimateCSS({\n left,\n ...this.props,\n ...this.state,\n }),\n });\n },\n\n swipeDirection(touchObject) {\n /* istanbul ignore next */\n let swipeAngle;\n /* istanbul ignore next */\n const xDist = touchObject.startX - touchObject.curX;\n /* istanbul ignore next */\n const yDist = touchObject.startY - touchObject.curY;\n /* istanbul ignore next */\n const r = Math.atan2(yDist, xDist);\n /* istanbul ignore next */\n swipeAngle = Math.round((r * 180) / Math.PI);\n /* istanbul ignore next */\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n /* istanbul ignore next */\n if ((swipeAngle <= 45 && swipeAngle >= 0) || (swipeAngle <= 360 && swipeAngle >= 315)) {\n return this.props.rtl === false ? 'left' : 'right';\n }\n /* istanbul ignore next */\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return this.props.rtl === false ? 'right' : 'left';\n }\n /* istanbul ignore next */\n if (this.props.verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return 'down';\n } else {\n return 'up';\n }\n }\n\n /* istanbul ignore next */\n return 'vertical';\n },\n\n play() {\n let nextIndex;\n if (!this.hasMounted) {\n /* istanbul ignore next */\n return false;\n }\n if (this.props.rtl) {\n nextIndex = this.state.currentSlide - this.props.slidesToScroll;\n } else if (this.canGoNext({ ...this.props, ...this.state })) {\n nextIndex = this.state.currentSlide + this.props.slidesToScroll;\n } else {\n return false;\n }\n this.slideHandler(nextIndex);\n },\n\n autoPlay() {\n if (this.state.autoPlayTimer) {\n clearTimeout(this.state.autoPlayTimer);\n }\n if (this.props.autoplay) {\n this.setState({\n autoPlayTimer: setTimeout(this.play.bind(this), this.props.autoplaySpeed),\n });\n }\n },\n\n pause() {\n /* istanbul ignore next */\n if (this.state.autoPlayTimer) {\n clearTimeout(this.state.autoPlayTimer);\n this.setState({\n autoPlayTimer: null,\n });\n }\n },\n};\n\nexport default helpers;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../../icon';\nimport { obj, func } from '../../util';\n\n/**\n * slider arrow\n * 左右控制箭头\n */\n\nconst { noop } = func;\n\nexport default class Arrow extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n type: PropTypes.oneOf(['prev', 'next']).isRequired,\n centerMode: PropTypes.bool,\n currentSlide: PropTypes.number,\n infinite: PropTypes.bool,\n clickHandler: PropTypes.func,\n slideCount: PropTypes.number,\n slidesToShow: PropTypes.number,\n arrow: PropTypes.element,\n arrowSize: PropTypes.string,\n arrowPosition: PropTypes.string,\n arrowDirection: PropTypes.oneOf(['hoz', 'ver']),\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n onMouseEnter: noop,\n onMouseLeave: noop,\n };\n\n static isDisabled(props) {\n const { infinite, type, centerMode, currentSlide, slideCount, slidesToShow } = props;\n\n if (infinite) {\n return false;\n }\n\n // 下一个 index 大于总数??\n if (slideCount <= slidesToShow) {\n return true;\n }\n\n // 向前箭头:当前是第 0 个\n if (type === 'prev') {\n return currentSlide <= 0;\n }\n\n if (centerMode && currentSlide >= slideCount - 1) {\n // 向后箭头:居中模式,当前 index 大于最大 index\n return true;\n } else if (currentSlide >= slideCount - slidesToShow) {\n // 向后箭头:普通模式,当前 index 大于 总数 - 下一个 index ???\n return true;\n }\n\n return false;\n }\n\n static ARROW_ICON_TYPES = {\n hoz: { prev: 'chevron-left', next: 'chevron-right' },\n ver: { prev: 'chevron-up', next: 'chevron-down' },\n };\n\n handleClick(options, e) {\n e && e.preventDefault();\n\n // TODO hack\n if (options.message === 'prev') {\n options.message = 'previous';\n }\n\n this.props.clickHandler(options, e);\n }\n\n render() {\n const {\n prefix,\n type,\n arrowSize,\n arrowPosition,\n arrowDirection,\n onMouseEnter,\n onMouseLeave,\n children,\n } = this.props;\n\n const others = obj.pickOthers(Arrow.propTypes, this.props);\n const iconType = Arrow.ARROW_ICON_TYPES[arrowDirection][type];\n const disabled = Arrow.isDisabled(this.props);\n\n const arrowClazz = classNames(\n [`${prefix}slick-arrow`, `${prefix}slick-${type}`, arrowPosition, arrowSize, arrowDirection],\n { disabled },\n );\n\n const arrowProps = {\n ...others,\n key: type,\n 'data-role': 'none',\n className: arrowClazz,\n style: { display: 'block' },\n onClick: disabled ? null : this.handleClick.bind(this, { message: type }),\n onMouseEnter: disabled ? null : onMouseEnter,\n onMouseLeave: disabled ? null : onMouseLeave,\n };\n\n if (children) {\n return React.cloneElement(React.Children.only(children), arrowProps);\n } else {\n return (\n <button type=\"button\" role=\"button\" {...arrowProps}>\n <Icon type={iconType} />\n </button>\n );\n }\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { dom } from '../../util';\n\n/**\n * Slider Track\n * 内容轨道\n */\n\nconst getSlideClasses = specProps => {\n const prefix = specProps.prefix;\n let slickActive, slickCenter;\n let centerOffset, index;\n\n if (specProps.rtl) {\n index = specProps.slideCount - 1 - specProps.activeIndex;\n } else {\n index = specProps.activeIndex;\n }\n\n const slickCloned = index < 0 || index >= specProps.slideCount;\n if (specProps.centerMode) {\n centerOffset = Math.floor(specProps.slidesToShow / 2);\n slickCenter = (index - specProps.currentSlide) % specProps.slideCount === 0;\n if (\n index > specProps.currentSlide - centerOffset - 1 &&\n index <= specProps.currentSlide + centerOffset\n ) {\n slickActive = true;\n }\n } else {\n slickActive =\n specProps.currentSlide <= index && index < specProps.currentSlide + specProps.slidesToShow;\n }\n\n return classNames(`${prefix}slick-slide`, {\n [`${prefix}slick-active`]: slickActive,\n [`${prefix}slick-center`]: slickCenter,\n [`${prefix}slick-cloned`]: slickCloned,\n });\n};\n\nconst getSlideStyle = function(specProps) {\n const style = {};\n\n if (specProps.variableWidth === undefined || specProps.variableWidth === false) {\n style.width = specProps.slideWidth;\n }\n\n if (specProps.animation === 'fade') {\n style.position = 'relative';\n\n style.opacity = specProps.currentSlide === specProps.activeIndex ? 1 : 0;\n style.visibility = specProps.currentSlide >= specProps.activeIndex ? 'visible' : 'hidden';\n style.transition = `opacity ${specProps.speed}ms ${specProps.cssEase}`;\n style.WebkitTransition = `opacity ${specProps.speed}ms ${specProps.cssEase}`;\n\n if (specProps.vertical) {\n style.top = -specProps.activeIndex * specProps.slideHeight;\n } else {\n style.left = -specProps.activeIndex * specProps.slideWidth;\n }\n }\n\n if (specProps.vertical) {\n style.width = '100%';\n }\n\n return style;\n};\n\nconst getKey = (child, fallbackKey) => {\n // key could be a zero\n return child.key === null || child.key === undefined ? fallbackKey : child.key;\n};\n\nconst renderSlides = specProps => {\n let key;\n const slides = [];\n const preCloneSlides = [];\n const postCloneSlides = [];\n const count = React.Children.count(specProps.children);\n let child;\n\n React.Children.forEach(specProps.children, (elem, index) => {\n const childOnClickOptions = {\n message: 'children',\n index,\n slidesToScroll: specProps.slidesToScroll,\n currentSlide: specProps.currentSlide,\n };\n\n if (\n !specProps.lazyLoad | (specProps.lazyLoad && specProps.lazyLoadedList.indexOf(index) >= 0)\n ) {\n child = elem;\n } else {\n child = elem.key ? <div key={elem.key} /> : <div />;\n }\n const childStyle = getSlideStyle({ ...specProps, activeIndex: index });\n const slickClasses = getSlideClasses({\n activeIndex: index,\n ...specProps,\n });\n let cssClasses;\n\n if (child.props.className) {\n cssClasses = classNames(slickClasses, child.props.className);\n } else {\n cssClasses = slickClasses;\n }\n\n const onClick = function(e) {\n // only child === elem, it will has .props.onClick;\n child.props && child.props.onClick && elem.props.onClick(e);\n if (specProps.focusOnSelect) {\n specProps.focusOnSelect(childOnClickOptions);\n }\n };\n\n slides.push(\n React.cloneElement(child, {\n key: `original${getKey(child, index)}`,\n 'data-index': index,\n className: cssClasses,\n tabIndex: '-1',\n 'aria-posinset': index,\n 'aria-setsize': count,\n role: 'listitem',\n dir: specProps.rtl ? 'rtl' : 'ltr',\n // server-side render depend on elements of their own style\n style: !dom.hasDOM\n ? { outline: 'none', ...childStyle, ...child.props.style }\n : { outline: 'none', ...child.props.style, ...childStyle },\n onClick,\n }),\n );\n\n // variableWidth doesn't wrap properly.\n if (specProps.infinite && specProps.animation !== 'fade') {\n const infiniteCount = specProps.variableWidth\n ? specProps.slidesToShow + 1\n : specProps.slidesToShow;\n\n if (index >= count - infiniteCount) {\n key = -(count - index);\n preCloneSlides.push(\n React.cloneElement(child, {\n key: `precloned${getKey(child, key)}`,\n 'data-index': key,\n className: cssClasses,\n style: { ...child.props.style, ...childStyle },\n }),\n );\n }\n\n if (index < infiniteCount) {\n key = count + index;\n postCloneSlides.push(\n React.cloneElement(child, {\n key: `postcloned${getKey(child, key)}`,\n 'data-index': key,\n className: cssClasses,\n style: { ...child.props.style, ...childStyle },\n }),\n );\n }\n }\n });\n // To support server-side rendering\n if (!dom.hasDOM) {\n return slides.slice(specProps.currentSlide, specProps.currentSlide + specProps.slidesToShow);\n }\n if (specProps.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nexport default class Track extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n trackStyle: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n };\n\n render() {\n const slides = renderSlides(this.props);\n return (\n <div role=\"list\" className={`${this.props.prefix}slick-track`} style={this.props.trackStyle}>\n {slides}\n </div>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { func } from '../../util';\n\n/**\n * slider dots\n * 导航锚点\n */\n\nconst { noop } = func;\n\nexport default class Dots extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n currentSlide: PropTypes.number,\n changeSlide: PropTypes.func,\n dotsClass: PropTypes.string,\n slideCount: PropTypes.number,\n slidesToScroll: PropTypes.number,\n dotsDirection: PropTypes.oneOf(['hoz', 'ver']),\n dotsRender: PropTypes.func,\n triggerType: PropTypes.string,\n };\n\n static defaultProps = {\n changeSlide: noop,\n };\n\n handleChangeSlide(options, e) {\n e.preventDefault();\n\n this.props.changeSlide(options);\n }\n\n render() {\n const {\n prefix,\n slideCount,\n slidesToScroll,\n currentSlide,\n dotsClass,\n dotsDirection,\n dotsRender,\n triggerType,\n rtl,\n } = this.props;\n\n const dotsClazz = classNames(`${prefix}slick-dots`, dotsDirection, dotsClass);\n const dotCount = Math.ceil(slideCount / slidesToScroll);\n const children = [];\n\n for (let i = 0; i < dotCount; i++) {\n const leftBound = i * slidesToScroll;\n const rightBound = leftBound + slidesToScroll - 1;\n const itemClazz = classNames(`${prefix}slick-dots-item`, {\n active: currentSlide >= leftBound && currentSlide <= rightBound,\n });\n const dotOptions = {\n message: 'dots',\n index: i,\n slidesToScroll,\n currentSlide,\n };\n // 除非设置为hover,默认使用click触发\n const handleProp = {\n [triggerType.toLowerCase() === 'hover'\n ? 'onMouseEnter'\n : 'onClick']: this.handleChangeSlide.bind(this, dotOptions),\n };\n\n let docIndex = i;\n let currentSlideIndex = i;\n if (rtl) {\n docIndex = dotCount - 1 - i;\n currentSlideIndex = dotCount - 1 - currentSlide;\n }\n\n children.push(\n <li key={i} className={itemClazz} {...handleProp}>\n {dotsRender instanceof Function ? (\n <span>{dotsRender(docIndex, currentSlideIndex)}</span>\n ) : (\n // Slider is navigated by right and left arrow buttons so the dots are not required functionality\n <button tabIndex=\"-1\" />\n )}\n </li>,\n );\n }\n\n return (\n <ul className={dotsClazz} aria-hidden=\"true\">\n {children}\n </ul>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { events, func, obj } from '../../util';\nimport EventHandlersMixin from './mixins/event-handlers';\nimport HelpersMixin from './mixins/helpers';\nimport Arrow from './arrow';\nimport Track from './track';\nimport Dots from './dots';\n\n/**\n * Slider inner\n */\n\nconst { noop } = func;\n\nclass InnerSlider extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n animation: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n arrows: PropTypes.bool,\n arrowSize: PropTypes.oneOf(['medium', 'large']),\n arrowPosition: PropTypes.oneOf(['inner', 'outer']),\n arrowDirection: PropTypes.oneOf(['hoz', 'ver']),\n centerPadding: PropTypes.any,\n children: PropTypes.any,\n centerMode: PropTypes.bool,\n dots: PropTypes.bool,\n dotsDirection: PropTypes.oneOf(['hoz', 'ver']),\n dotsClass: PropTypes.string,\n focusOnSelect: PropTypes.bool,\n cssEase: PropTypes.string,\n speed: PropTypes.number,\n infinite: PropTypes.bool,\n defaultActiveIndex: PropTypes.number,\n rtl: PropTypes.bool,\n slidesToShow: PropTypes.number,\n lazyLoad: PropTypes.bool,\n activeIndex: PropTypes.number,\n slidesToScroll: PropTypes.number,\n variableWidth: PropTypes.bool,\n vertical: PropTypes.bool,\n verticalSwiping: PropTypes.bool,\n prevArrow: PropTypes.element,\n nextArrow: PropTypes.element,\n dotsRender: PropTypes.func,\n triggerType: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n arrowDirection: 'hoz',\n triggerType: 'click',\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n animating: false,\n dragging: false,\n autoPlayTimer: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 'activeIndex' in props ? props.activeIndex : props.defaultActiveIndex,\n direction: 1,\n listWidth: null,\n listHeight: null,\n slideCount: null,\n slideWidth: null,\n slideHeight: null,\n swipeLeft: null,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0,\n },\n\n lazyLoadedList: [],\n\n // added for react\n initialized: false,\n edgeDragged: false,\n swiped: false, // used by swipeEvent. differentites between touch and swipe.\n trackStyle: {},\n trackWidth: 0,\n };\n\n // this.filterProps = Object.assign({}, sliderPropTypes, InnerSlider.propTypes);\n\n func.bindCtx(this, [\n 'onWindowResized',\n 'selectHandler',\n 'changeSlide',\n 'onInnerSliderEnter',\n 'onInnerSliderLeave',\n 'swipeStart',\n 'swipeMove',\n 'swipeEnd',\n ]);\n }\n\n UNSAFE_componentWillMount() {\n this.hasMounted = true;\n\n const { lazyLoad, children, slidesToShow } = this.props;\n const { currentSlide } = this.state;\n const lazyLoadedList = [];\n\n if (lazyLoad) {\n for (let i = 0, j = React.Children.count(children); i < j; i++) {\n if (i >= currentSlide && i < currentSlide + slidesToShow) {\n lazyLoadedList.push(i);\n\n const pre = i - 1 < 0 ? j - 1 : i - 1;\n const next = i + 1 >= j ? 0 : i + 1;\n\n lazyLoadedList.push(pre);\n lazyLoadedList.push(next);\n }\n }\n\n if (this.state.lazyLoadedList.length === 0) {\n this.setState({\n lazyLoadedList,\n });\n }\n }\n }\n\n componentDidMount() {\n // TODO Hack for autoplay -- Inspect Later\n this.initialize(this.props);\n this.adaptHeight();\n\n if (this.props.activeIndex) {\n this.slickGoTo(this.props.activeIndex);\n }\n\n /* istanbul ignore if */\n if (window) {\n // To support server-side rendering\n events.on(window, 'resize', this.onWindowResized);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.props.defaultActiveIndex !== nextProps.defaultActiveIndex) {\n this.setState({\n currentSlide: nextProps.defaultActiveIndex,\n });\n }\n\n if (this.props.activeIndex !== nextProps.activeIndex) {\n this.slickGoTo(nextProps.activeIndex);\n } else if (this.state.currentSlide >= nextProps.children.length) {\n this.update(nextProps);\n this.changeSlide({\n message: 'index',\n index: nextProps.children.length - nextProps.slidesToShow,\n currentSlide: this.state.currentSlide,\n });\n } else {\n const others = ['children'];\n const update = !obj.shallowEqual(\n obj.pickOthers(others, this.props),\n obj.pickOthers(others, nextProps),\n );\n if (update) {\n this.update(nextProps);\n }\n }\n }\n\n componentDidUpdate() {\n this.adaptHeight();\n }\n\n componentWillUnmount() {\n if (this.animationEndCallback) {\n clearTimeout(this.animationEndCallback);\n }\n\n events.off(window, 'resize', this.onWindowResized);\n\n if (this.state.autoPlayTimer) {\n clearInterval(this.state.autoPlayTimer);\n }\n }\n\n onWindowResized() {\n this.update(this.props);\n // animating state should be cleared while resizing, otherwise autoplay stops working\n this.setState({ animating: false });\n clearTimeout(this.animationEndCallback);\n delete this.animationEndCallback;\n }\n\n slickGoTo(slide) {\n typeof slide === 'number' &&\n this.changeSlide({\n message: 'index',\n index: slide,\n currentSlide: this.state.currentSlide,\n });\n }\n\n onEnterArrow(msg) {\n this.arrowHoverHandler(msg);\n }\n\n onLeaveArrow() {\n this.arrowHoverHandler();\n }\n\n _instanceRefHandler(attr, ref) {\n this[attr] = ref;\n }\n\n render() {\n const {\n prefix,\n animation,\n arrows,\n arrowSize,\n arrowPosition,\n arrowDirection,\n dots,\n dotsClass,\n cssEase,\n speed,\n infinite,\n centerMode,\n centerPadding,\n lazyLoad,\n dotsDirection,\n rtl,\n slidesToShow,\n slidesToScroll,\n variableWidth,\n vertical,\n verticalSwiping,\n focusOnSelect,\n children,\n dotsRender,\n triggerType,\n } = this.props;\n\n const {\n currentSlide,\n lazyLoadedList,\n slideCount,\n slideWidth,\n slideHeight,\n trackStyle,\n listHeight,\n dragging,\n } = this.state;\n\n // TODO 需要精简一下\n const trackProps = {\n prefix,\n animation,\n cssEase,\n speed,\n infinite,\n centerMode,\n focusOnSelect: focusOnSelect ? this.selectHandler : null,\n currentSlide,\n lazyLoad,\n lazyLoadedList,\n rtl,\n slideWidth,\n slideHeight,\n slidesToShow,\n slidesToScroll,\n slideCount,\n trackStyle,\n variableWidth,\n vertical,\n verticalSwiping,\n triggerType,\n // clickHandler: this.changeSlide, unused\n };\n\n let dotsEle;\n\n if (dots === true && slideCount > slidesToShow) {\n const dotProps = {\n prefix,\n rtl,\n dotsClass,\n slideCount,\n slidesToShow,\n currentSlide,\n slidesToScroll,\n dotsDirection,\n changeSlide: this.changeSlide,\n dotsRender,\n triggerType,\n };\n\n dotsEle = <Dots {...dotProps} />;\n }\n\n let prevArrow; let\n nextArrow;\n\n const arrowProps = {\n prefix,\n rtl,\n arrowSize,\n arrowPosition,\n arrowDirection,\n infinite,\n centerMode,\n currentSlide,\n slideCount,\n slidesToShow,\n clickHandler: this.changeSlide,\n };\n\n if (arrows) {\n prevArrow = (\n <Arrow\n {...arrowProps}\n type=\"prev\"\n aria-label=\"Previous\"\n ref={this._instanceRefHandler.bind(this, 'pArrow')}\n onMouseEnter={animation ? this.onEnterArrow.bind(this, 'prev') : noop}\n onMouseLeave={animation ? this.onLeaveArrow.bind(this, 'prev') : noop}\n >\n {this.props.prevArrow}\n </Arrow>\n );\n\n nextArrow = (\n <Arrow\n {...arrowProps}\n type=\"next\"\n aria-label=\"Next\"\n ref={this._instanceRefHandler.bind(this, 'nArrow')}\n onMouseEnter={animation ? this.onEnterArrow.bind(this, 'next') : noop}\n onMouseLeave={animation ? this.onLeaveArrow.bind(this, 'next') : noop}\n >\n {this.props.nextArrow}\n </Arrow>\n );\n }\n\n const verticalHeightStyle = vertical\n ? {\n height: listHeight,\n }\n : null;\n\n let centerPaddingStyle;\n if (centerMode) {\n centerPaddingStyle = vertical\n ? { padding: `${centerPadding} 0px` }\n : { padding: `0px ${centerPadding}` };\n }\n\n return (\n <div\n className={`${prefix}slick-container ${prefix}slick-initialized`}\n onMouseEnter={this.onInnerSliderEnter}\n onMouseLeave={this.onInnerSliderLeave}\n >\n <div\n ref={this._instanceRefHandler.bind(this, 'list')}\n className={`${prefix}slick-list`}\n style={{ ...verticalHeightStyle, ...centerPaddingStyle }}\n onMouseDown={this.swipeStart}\n onMouseUp={this.swipeEnd}\n onTouchStart={this.swipeStart}\n onTouchEnd={this.swipeEnd}\n onMouseMove={dragging ? this.swipeMove : null}\n onMouseLeave={dragging ? this.swipeEnd : null}\n onTouchMove={dragging ? this.swipeMove : null}\n onTouchCancel={dragging ? this.swipeEnd : null}\n >\n <Track ref={this._instanceRefHandler.bind(this, 'track')} {...trackProps}>\n {children}\n </Track>\n </div>\n {prevArrow}\n {nextArrow}\n {dotsEle}\n </div>\n );\n }\n}\n\n// extend prototype\nObject.assign(InnerSlider.prototype, HelpersMixin);\nObject.assign(InnerSlider.prototype, EventHandlersMixin);\n\nexport default InnerSlider;\n","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { obj } from '../util';\nimport InnerSlider from './slick/inner-slider';\nimport ConfigProvider from '../config-provider';\n\n/**\n * Slider\n */\nexport default class Slider extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 自定义传入的样式\n */\n className: PropTypes.any,\n /**\n * 是否使用自适应高度\n */\n adaptiveHeight: PropTypes.bool,\n /**\n * 动效类型,默认是'slide'\n */\n animation: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n /**\n * 是否显示箭头\n */\n arrows: PropTypes.bool,\n /**\n * 导航箭头大小 可选值: 'medium', 'large'\n */\n arrowSize: PropTypes.oneOf(['medium', 'large']),\n /**\n * 导航箭头位置 可选值: 'inner', 'outer'\n */\n arrowPosition: PropTypes.oneOf(['inner', 'outer']),\n /**\n * 导航箭头的方向 可选值: 'hoz', 'ver'\n */\n arrowDirection: PropTypes.oneOf(['hoz', 'ver']),\n /**\n * 是否自动播放\n */\n autoplay: PropTypes.bool,\n /**\n * 自动播放的速度\n */\n autoplaySpeed: PropTypes.number,\n /**\n * 向后箭头\n */\n nextArrow: PropTypes.element,\n /**\n * 向前箭头\n */\n prevArrow: PropTypes.element,\n /**\n * 是否启用居中模式\n */\n centerMode: PropTypes.bool,\n /**\n * 是否显示导航锚点\n */\n dots: PropTypes.bool,\n /**\n * 导航锚点位置\n */\n dotsDirection: PropTypes.oneOf(['hoz', 'ver']),\n dotsClass: PropTypes.string,\n /**\n * 自定义导航锚点\n */\n dotRender: PropTypes.func,\n /**\n * 是否可拖拽\n */\n draggable: PropTypes.bool,\n /**\n * 是否使用无穷循环模式\n */\n infinite: PropTypes.bool,\n /**\n * 初始被激活的轮播图\n */\n defaultActiveIndex: PropTypes.number,\n /**\n * 是否启用懒加载\n */\n lazyLoad: PropTypes.bool,\n slide: PropTypes.string,\n /**\n * 轮播方向\n */\n slideDirection: PropTypes.oneOf(['hoz', 'ver']),\n /**\n * 同时展示的图片数量\n */\n slidesToShow: PropTypes.number,\n /**\n * 同时滑动的图片数量\n */\n slidesToScroll: PropTypes.number,\n /**\n * 轮播速度\n */\n speed: PropTypes.number,\n /**\n * 跳转到指定的轮播图(受控)\n */\n activeIndex: PropTypes.number,\n /**\n * 锚点导航触发方式\n */\n triggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 轮播切换的回调函数\n * @param {Number} index 幻灯片的索引\n */\n onChange: PropTypes.func,\n onBeforeChange: PropTypes.func, // 兼容 0.x onBeforeChange\n children: PropTypes.any,\n /**\n * 自定义传入的class\n */\n style: PropTypes.object,\n /**\n * Side padding when in center mode (px or %); 展示部分为center,pading会产生前后预览\n */\n centerPadding: PropTypes.string,\n /**\n * CSS3 Animation Easing,默认‘ease’\n */\n cssEase: PropTypes.string, // used\n edgeFriction: PropTypes.number, // 非无限轮播滑动到边缘时的阻力\n /**\n * 多图轮播时,点击选中后自动居中\n */\n focusOnSelect: PropTypes.bool,\n pauseOnHover: PropTypes.bool, // 鼠标经过时停止播放\n swipe: PropTypes.bool,\n swipeToSlide: PropTypes.bool,\n touchMove: PropTypes.bool,\n touchThreshold: PropTypes.number,\n useCSS: PropTypes.bool,\n variableWidth: PropTypes.bool, // used\n waitForAnimate: PropTypes.bool,\n edgeEvent: PropTypes.any,\n swipeEvent: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n animation: 'slide',\n arrowSize: 'medium',\n arrowPosition: 'inner',\n vertical: false,\n verticalSwiping: true,\n dots: true,\n dotsDirection: 'hoz',\n arrows: true,\n arrowDirection: 'hoz',\n infinite: true,\n autoplay: false,\n autoplaySpeed: 3000,\n speed: 500,\n adaptiveHeight: false,\n centerMode: false,\n centerPadding: '50px', // Side padding when in center mode (px or %); 展示部分为center,pading会产生前后预览\n cssEase: 'ease',\n draggable: true,\n edgeFriction: 0.35,\n focusOnSelect: false,\n defaultActiveIndex: 0,\n lazyLoad: false,\n pauseOnHover: false,\n rtl: false,\n slide: 'div',\n slideDirection: 'hoz',\n slidesToShow: 1,\n slidesToScroll: 1,\n swipe: true,\n swipeToSlide: false, // Allow users to drag or swipe directly to a slide irrespective of slidesToScroll\n touchMove: true, // 移动端touch\n touchThreshold: 5,\n useCSS: true,\n variableWidth: false,\n waitForAnimate: true,\n onChange: () => {},\n onBeforeChange: () => {},\n edgeEvent: null,\n swipeEvent: null,\n nextArrow: null, // nextArrow, prevArrow are react components\n prevArrow: null,\n style: null,\n dotsRender: null,\n triggerType: 'click',\n };\n\n resize = () => {\n // export api\n this.innerSlider.onWindowResized();\n };\n\n render() {\n const { prefix, arrowPosition, slideDirection, style, className, children } = this.props;\n\n const sliderProps = obj.pickOthers(['className', 'style', 'slideDirection'], this.props);\n const slideCount = React.Children.count(children);\n\n if (slideCount === 0) {\n // 没有 item 时不显示 slider\n return null;\n } else if (slideCount === 1) {\n // 单个 item 时不显示箭头和控制器\n sliderProps.arrows = false;\n sliderProps.autoplay = false;\n sliderProps.draggable = false;\n }\n\n const clazz = classNames(\n [`${prefix}slick`, `${prefix}slick-${arrowPosition}`, `${prefix}slick-${slideDirection}`],\n className,\n );\n\n if (slideDirection === 'ver') {\n // 向下传递时使用 vertical 属性\n sliderProps.vertical = true;\n sliderProps.verticalSwiping = true;\n }\n\n const newContext = ConfigProvider.getContext();\n\n return (\n <ConfigProvider {...newContext} rtl={false}>\n <div\n dir=\"ltr\"\n className={clazz}\n style={style}\n {...obj.pickOthers({ ...Slider.propTypes, ...InnerSlider.propTypes }, sliderProps)}\n >\n <InnerSlider ref={InnerSlider => (this.innerSlider = InnerSlider)} {...sliderProps} />\n </div>\n </ConfigProvider>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Slider from './slider';\n\nexport default ConfigProvider.config(Slider, {\n exportNames: ['resize'],\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('fade' in props) {\n deprecated('fade', 'animation', 'Slider');\n\n const { fade, ...others } = props;\n if (fade) {\n props = { animation: 'fade', ...others };\n } else {\n props = others;\n }\n }\n if ('arrowPos' in props) {\n if (props.arrowPos === 'inline') {\n deprecated('arrowPos=inline', 'arrowPosition=inner', 'Slider');\n\n props.arrowPos = 'inner';\n } else {\n deprecated('arrowPos', 'arrowPosition', 'Slider');\n }\n const { arrowPos, ...others } = props;\n props = { arrowPosition: arrowPos, ...others };\n }\n ['arrowDirection', 'dotsDirection', 'slideDirection'].forEach(propName => {\n if (props[propName] === 'horizontal') {\n deprecated(`${propName}=horizontal`, `${propName}=hoz`, 'Slider');\n\n props[propName] = 'hoz';\n } else if (props[propName] === 'vertical') {\n deprecated(`${propName}=vertical`, `${propName}=ver`, 'Slider');\n\n props[propName] = 'ver';\n }\n });\n if ('initialSlide' in props) {\n deprecated('initialSlide', 'defaultActiveIndex', 'Slider');\n\n const { initialSlide, ...others } = props;\n props = { defaultActiveIndex: initialSlide, ...others };\n }\n if ('slickGoTo' in props) {\n deprecated('slickGoTo', 'activeIndex', 'Slider');\n\n const { slickGoTo, ...others } = props;\n props = { activeIndex: slickGoTo, ...others };\n }\n if ('afterChange' in props) {\n deprecated('afterChange', 'onChange', 'Slider');\n\n const { afterChange, ...others } = props;\n props = { onChange: afterChange, ...others };\n }\n\n if ('beforeChange' in props) {\n deprecated('beforeChange', 'onBeforeChange', 'Slider');\n\n const { beforeChange, ...others } = props;\n props = { onBeforeChange: beforeChange, ...others };\n }\n\n return props;\n },\n});\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Icon from '../icon';\nimport Button from '../button';\nimport Overlay from '../overlay';\nimport Menu from '../menu';\nimport ConfigProvider from '../config-provider';\nimport { dom, obj, func } from '../util';\n\nconst { Popup } = Overlay;\n\n/**\n * SplitButton\n */\nclass SplitButton extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n style: PropTypes.object,\n /**\n * 按钮的类型\n */\n type: PropTypes.oneOf(['normal', 'primary', 'secondary']),\n /**\n * 按钮组的尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 主按钮的文案\n */\n label: PropTypes.node,\n /**\n * 设置标签类型\n */\n component: PropTypes.oneOf(['button', 'a']),\n /**\n * 是否为幽灵按钮\n */\n ghost: PropTypes.oneOf(['light', 'dark', false, true]),\n /**\n * 是否为警告按钮\n */\n warning: PropTypes.bool,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 设置按钮的载入状态\n */\n loading: PropTypes.bool,\n /**\n * 默认激活的菜单项(用法同 Menu 非受控)\n */\n defaultSelectedKeys: PropTypes.array,\n /**\n * 激活的菜单项(用法同 Menu 受控)\n */\n selectedKeys: PropTypes.array,\n /**\n * 菜单的选择模式\n */\n selectMode: PropTypes.oneOf(['single', 'multiple']),\n /**\n * 选择菜单项时的回调,参考 Menu\n */\n onSelect: PropTypes.func,\n /**\n * 点击菜单项时的回调,参考 Menu\n */\n onItemClick: PropTypes.func,\n /**\n * 触发按钮的属性(支持 Button 的所有属性透传)\n */\n triggerProps: PropTypes.object,\n /**\n * 弹层菜单的宽度是否与按钮组一致\n */\n autoWidth: PropTypes.bool,\n /**\n * 弹层是否显示\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层显示状态变化时的回调函数\n * @param {Boolean} visible 弹层显示状态\n * @param {String} type 触发弹层显示或隐藏的来源 menuSelect 表示由menu触发; fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 弹层的触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层对齐方式, 详情见Overlay align\n */\n popupAlign: PropTypes.string,\n /**\n * 弹层自定义样式\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 透传给弹层的属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 透传给 Menu 的属性\n */\n menuProps: PropTypes.object,\n /**\n * 透传给 左侧按钮 的属性\n */\n leftButtonProps: PropTypes.object,\n className: PropTypes.string,\n children: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n type: 'normal',\n size: 'medium',\n warning: false,\n disabled: false,\n loading: false,\n autoWidth: true,\n popupTriggerType: 'click',\n onVisibleChange: func.noop,\n onItemClick: func.noop,\n onSelect: func.noop,\n defaultSelectedKeys: [],\n menuProps: {},\n leftButtonProps: {},\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n selectedKeys: props.selectedKeys || props.defaultSelectedKeys,\n visible: props.visible || props.defaultVisible,\n };\n }\n\n componentDidMount() {\n // 由于定位目标是 wrapper,如果弹层默认展开,wrapper 还未渲染,didMount 后强制再渲染一次,弹层重新定位\n if (this.state.visible) {\n this.forceUpdate();\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n\n if ('selectedKeys' in nextProps) {\n this.setState({\n selectedKeys: nextProps.selectedKeys,\n });\n }\n }\n\n selectMenuItem = (keys, ...others) => {\n if (!('selectedKeys' in this.props)) {\n this.setState({\n selectedKeys: keys,\n });\n }\n this.props.onSelect(keys, ...others);\n };\n\n clickMenuItem = (key, ...others) => {\n this.props.onItemClick(key, ...others);\n this.onVisibleChange(false, 'menuSelect');\n };\n\n onPopupOpen = () => {\n if (this.props.autoWidth && this.wrapper && this.menu) {\n dom.setStyle(this.menu, {\n width: this.wrapper.offsetWidth,\n });\n }\n };\n\n onVisibleChange = (visible, reason) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, reason);\n };\n\n _menuRefHandler = ref => {\n this.menu = findDOMNode(ref);\n\n const refFn = this.props.menuProps.ref;\n if (typeof refFn === 'function') {\n refFn(ref);\n }\n };\n\n _wrapperRefHandler = ref => {\n this.wrapper = findDOMNode(ref);\n };\n\n render() {\n const {\n prefix,\n label,\n size,\n type,\n component,\n ghost,\n className,\n style,\n children,\n triggerProps,\n popupAlign,\n popupTriggerType,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n selectMode,\n menuProps,\n leftButtonProps,\n disabled,\n warning,\n loading,\n ...others\n } = this.props;\n\n const { state } = this;\n\n const classNames = classnames(\n {\n [`${prefix}split-btn`]: true,\n },\n className,\n );\n\n const sharedBtnProps = {\n type,\n size,\n component,\n ghost,\n disabled,\n warning,\n };\n\n const triggerClassNames = classnames({\n [`${prefix}split-btn-trigger`]: true,\n [`${prefix}expand`]: state.visible,\n opened: state.visible,\n });\n\n const trigger = (\n <Button {...triggerProps} {...sharedBtnProps} className={triggerClassNames}>\n <Icon type=\"chevron-down-s\" />\n </Button>\n );\n\n return (\n <Button.Group\n {...obj.pickOthers(SplitButton.propTypes, others)}\n className={classNames}\n style={style}\n size={size}\n ref={this._wrapperRefHandler}\n >\n <Button {...sharedBtnProps} loading={loading} {...leftButtonProps}>\n {label}\n </Button>\n <Popup\n animation={{ in: 'fadeInDown', out: 'fadeOutUp' }}\n {...popupProps}\n followTrigger={followTrigger}\n visible={state.visible}\n onVisibleChange={this.onVisibleChange}\n trigger={trigger}\n triggerType={popupTriggerType}\n offset={[0, 4]}\n align={popupAlign}\n target={() => this.wrapper}\n style={popupStyle}\n shouldUpdatePosition\n className={popupClassName}\n onOpen={this.onPopupOpen}\n >\n <Menu\n {...menuProps}\n className={`${prefix}btn-menu`}\n selectMode={selectMode}\n selectedKeys={state.selectedKeys}\n onSelect={this.selectMenuItem}\n onItemClick={this.clickMenuItem}\n ref={this._menuRefHandler}\n >\n {children}\n </Menu>\n </Popup>\n </Button.Group>\n );\n }\n}\n\nSplitButton.Item = Menu.Item;\nSplitButton.Divider = Menu.Divider;\nSplitButton.Group = Menu.Group;\n\nexport default ConfigProvider.config(SplitButton);\n","import React, { Component, Children } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { support, events, dom } from '../../util';\n\nconst getHeight = el => dom.getStyle(el, 'height');\nconst setHeight = (el, height) => dom.setStyle(el, 'height', height);\n\n/** Step */\nexport default class Step extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 当前步骤\n */\n current: PropTypes.number,\n /**\n * 展示方向\n */\n direction: PropTypes.oneOf(['hoz', 'ver']),\n /**\n * 横向布局时的内容排列\n */\n labelPlacement: PropTypes.oneOf(['hoz', 'ver']),\n /**\n * 类型\n */\n shape: PropTypes.oneOf(['circle', 'arrow', 'dot']),\n /**\n * 是否只读模式\n */\n readOnly: PropTypes.bool,\n /**\n * 是否开启动效\n */\n animation: PropTypes.bool,\n /**\n * 自定义样式名\n */\n className: PropTypes.string,\n /**\n * StepItem 的自定义渲染\n * @param {Number} index 节点索引\n * @param {String} status 节点状态\n * @returns {Node} 节点的渲染结果\n */\n itemRender: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n current: 0,\n direction: 'hoz',\n labelPlacement: 'ver',\n shape: 'circle',\n animation: true,\n itemRender: null,\n };\n\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n parentWidth: 'auto',\n parentHeight: 'auto',\n currentfocus: 0,\n };\n }\n\n componentDidMount() {\n /* istanbul ignore if */\n if (!support.flex) {\n this.resize();\n events.on(window, 'resize', this.resize);\n }\n this.adjustHeight();\n }\n\n UNSAFE_componentWillReceiveProps(newProps) {\n if ('current' in newProps) {\n this.setState({\n current: newProps.current,\n });\n }\n }\n\n componentDidUpdate() {\n this.adjustHeight();\n }\n\n componentWillUnmount() {\n /* istanbul ignore if */\n if (!support.flex) {\n events.off(window, 'resize', this.resize);\n }\n }\n\n adjustHeight() {\n const { shape, direction, prefix, labelPlacement } = this.props;\n if (\n shape !== 'arrow' &&\n (direction === 'horizontal' || direction === 'hoz') &&\n (labelPlacement === 'vertical' || labelPlacement === 'ver')\n ) {\n const step = ReactDOM.findDOMNode(this.step);\n // just resize when init\n if (step.style.height) return;\n const height = Array.prototype.slice\n .call(step.getElementsByClassName(`${prefix}step-item`))\n .reduce((ret, re) => {\n const itemHeight =\n getHeight(re) + getHeight(re.getElementsByClassName(`${prefix}step-item-body`)[0]);\n return Math.max(itemHeight, ret);\n }, 0);\n setHeight(step, height);\n }\n }\n\n resize = () => {\n if (this.step) {\n this.setState({\n parentWidth: this.step.offsetWidth || 0,\n parentHeight: this.step.offsetHeight || 0,\n });\n }\n };\n\n // set dir key for aria handle\n // handleKeyDown = e => {\n // const { shape, children } = this.props;\n // const { length: max } = children;\n // let { currentfocus } = this.state;\n // const initPosition = currentfocus;\n // switch (e.keyCode) {\n // case KEYCODE.RIGHT:\n // case KEYCODE.DOWN:\n // currentfocus++;\n // break;\n // case KEYCODE.LEFT:\n // case KEYCODE.UP:\n // currentfocus--;\n // break;\n // default:\n // break;\n // }\n // currentfocus =\n // currentfocus >= max ? 0 : currentfocus < 0 ? max - 1 : currentfocus;\n // this.setState({ currentfocus }, () => {\n // const child = this.step.children[currentfocus];\n // if (!child) return;\n // const focusItem =\n // shape === 'arrow'\n // ? child\n // : child.querySelector('.next-step-item-body');\n // focusItem && focusItem.focus();\n // });\n // if (initPosition !== currentfocus) {\n // e.preventDefault();\n // }\n // };\n\n _getValidChildren(children) {\n const result = [];\n React.Children.forEach(children, child => {\n if (React.isValidElement(child)) {\n result.push(child);\n }\n });\n return result;\n }\n\n _stepRefHandler = ref => {\n this.step = ref;\n };\n\n render() {\n // eslint-disable-next-line\n const {\n className,\n current,\n labelPlacement,\n shape,\n readOnly,\n animation,\n itemRender,\n rtl,\n ...others\n } = this.props;\n let { prefix, direction, children } = this.props;\n prefix = this.context.prefix || prefix;\n const { parentWidth, parentHeight } = this.state;\n\n // type不同对应的direction不同\n direction = shape === 'arrow' ? 'hoz' : direction;\n\n // children去除null\n children = this._getValidChildren(children);\n\n // 修改子节点属性\n const cloneChildren = Children.map(children, (child, index) => {\n const status = index < current ? 'finish' : index === current ? 'process' : 'wait';\n\n return React.cloneElement(child, {\n prefix,\n key: index,\n index,\n total: children.length,\n status: child.props.status || status,\n shape,\n direction,\n labelPlacement,\n parentWidth,\n parentHeight,\n readOnly,\n animation,\n tabIndex: 0,\n // tabIndex: this.state.currentfocus === index ? '0' : '-1',\n 'aria-current': status === 'process' ? 'step' : null,\n itemRender: child.props.itemRender ? child.props.itemRender : itemRender, // 优先使用Item的itemRender\n });\n });\n\n const _direction = direction === 'ver' || direction === 'vertical' ? 'vertical' : 'horizontal';\n const _labelPlacement =\n labelPlacement === 'ver' || labelPlacement === 'vertical' ? 'vertical' : 'horizontal';\n const stepCls = classNames({\n [`${prefix}step`]: true,\n [`${prefix}step-${shape}`]: shape,\n [`${prefix}step-${_direction}`]: _direction,\n [`${prefix}step-label-${_labelPlacement}`]: _labelPlacement,\n [className]: className,\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n // others.onKeyDown = makeChain(this.handleKeyDown, others.onKeyDown);\n\n return (\n <ol {...others} className={stepCls} ref={this._stepRefHandler}>\n {cloneChildren}\n </ol>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../../icon';\nimport Progress from '../../progress';\nimport ConfigProvider from '../../config-provider';\nimport { support, events, dom } from '../../util';\n\n/** Step.Item */\nclass StepItem extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 步骤的状态,如不传,会根据外层的 Step 的 current 属性生成,可选值为 `wait`, `process`, `finish`\n */\n status: PropTypes.oneOf(['wait', 'process', 'finish']),\n /**\n * 标题\n */\n title: PropTypes.node,\n direction: PropTypes.oneOf(['hoz', 'ver']),\n labelPlacement: PropTypes.oneOf(['hoz', 'ver']),\n shape: PropTypes.oneOf(['circle', 'arrow', 'dot']),\n /**\n * 图标\n */\n icon: PropTypes.string,\n /**\n * 内容,用于垂直状态下的内容填充\n */\n content: PropTypes.node,\n /**\n * StepItem 的自定义渲染, 会覆盖父节点设置的itemRender\n * @param {Number} index 节点索引\n * @param {String} status 节点状态\n * @returns {Node} 节点的渲染结果\n */\n itemRender: PropTypes.func,\n /**\n * 百分比\n */\n percent: PropTypes.number,\n index: PropTypes.number,\n total: PropTypes.number,\n animation: PropTypes.bool, // 是否开启动效,由父级传入\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n parentWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n parentHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /**\n * 点击步骤时的回调\n * @param {Number} index 节点索引\n */\n onClick: PropTypes.func,\n /**\n * 自定义样式\n */\n className: PropTypes.string,\n readOnly: PropTypes.bool,\n };\n\n static defaultProps = {\n shape: 'circle',\n index: 0,\n total: 1,\n onClick: () => {},\n };\n\n componentDidMount() {\n const { shape, direction, labelPlacement, index, total } = this.props;\n if (shape === 'arrow') {\n return;\n }\n\n if (direction === 'vertical' || direction === 'ver') {\n this.resize();\n this.forceUpdate(); // 解决Step嵌套的情况下,嵌套节点宽度为0的问题\n this.eventHandler = events.on(window, 'resize', this.resize); // 调整垂直Step\n } else if (\n (direction === 'horizontal' || direction === 'hoz') &&\n (labelPlacement === 'horizontal' || labelPlacement === 'hoz') &&\n index !== total - 1\n ) {\n // 调整横向Content\n this.adjustTail();\n }\n }\n\n componentDidUpdate() {\n const { shape, direction, labelPlacement, index, total, rtl } = this.props;\n if (shape === 'arrow') {\n return;\n }\n const resetTailStyle = () => {\n dom.setStyle(this.tail, {\n width: '',\n // eslint-disable-next-line\n top: '',\n });\n };\n\n if (direction === 'vertical' || direction === 'ver') {\n this.resize();\n } else if (direction === 'horizontal' || direction === 'hoz') {\n const pos = rtl ? 'right' : 'left';\n dom.setStyle(this.body, {\n width: '',\n [pos]: '',\n });\n if (\n shape === 'circle' &&\n (labelPlacement === 'horizontal' || labelPlacement === 'hoz') &&\n index !== total - 1\n ) {\n // 调整横向Content\n this.adjustTail();\n } else {\n resetTailStyle();\n }\n } else if (index !== total - 1) {\n resetTailStyle();\n }\n }\n\n componentWillUnmount() {\n this.eventHandler && this.eventHandler.off();\n }\n\n adjustTail() {\n const width = this.container.offsetWidth + this.title.offsetWidth;\n dom.setStyle(this.tail, {\n width: `calc(100% - ${width}px)`,\n top: `${dom.getStyle(this.container, 'height') / 2}px`,\n });\n }\n\n resize = () => {\n const stepWidth = dom.getStyle(this.step, 'width');\n const { rtl } = this.props;\n\n rtl ? (this.body.style.right = `${stepWidth}px`) : (this.body.style.left = `${stepWidth}px`);\n dom.setStyle(this.body, {\n width: dom.getStyle(this.step.parentNode.parentNode, 'width') - stepWidth,\n });\n dom.setStyle(\n this.tail,\n 'height',\n dom.getStyle(this.body, 'height') - dom.getStyle(this.container, 'height'),\n );\n };\n\n _getNode() {\n const { prefix, index, status, icon, shape, percent, itemRender } = this.props;\n let nodeElement = icon;\n if (shape === 'dot') {\n nodeElement = icon ? (\n <Icon type={icon} />\n ) : (\n <div className={`${prefix}step-item-node-dot`} />\n );\n } else if (shape === 'circle' && percent) {\n nodeElement = (\n <Progress shape=\"circle\" percent={percent} className={`${prefix}step-item-progress`} />\n );\n } else if (shape === 'circle' && !!itemRender && typeof itemRender === 'function') {\n nodeElement = null; // 如果是需要自定义节点,则不处理,返回空\n } else {\n nodeElement = (\n <div className={`${prefix}step-item-node-circle`}>\n {icon ? <Icon type={icon} /> : this._itemRender(index, status)}\n </div>\n );\n }\n\n return nodeElement;\n }\n\n getNode(args) {\n const { prefix, itemRender, index, status, title, content, shape } = this.props;\n const { others, stepCls, overlayCls } = args;\n const nodeElement = this._getNode();\n let finalNodeElement = (\n <div className={`${prefix}step-item-container`} ref={this._refHandlerCreator('container')}>\n <div className={`${prefix}step-item-node-placeholder`} onClick={this.onClick}>\n <div\n className={`${prefix}step-item-node`}\n ref={this._refHandlerCreator('stepNode')}\n onTransitionEnd={this.removeClickedCls}\n >\n {nodeElement}\n </div>\n </div>\n </div>\n );\n\n if (!nodeElement) {\n // 需要自定义子节点\n finalNodeElement = (\n <div className={`${prefix}step-item-container`}>\n <div className={`${prefix}step-item-node-placeholder`} onClick={this.onClick}>\n {itemRender(index, status, title, content)}\n </div>\n </div>\n );\n }\n if (shape !== 'arrow') {\n delete others.tabIndex;\n delete others['aria-current'];\n }\n\n return (\n <li\n {...others}\n style={this.getStyle()}\n className={stepCls}\n ref={this._refHandlerCreator('step')}\n >\n {finalNodeElement}\n <div\n className={`${prefix}step-item-body`}\n ref={this._refHandlerCreator('body')}\n tabIndex={this.props.tabIndex}\n aria-current={this.props['aria-current']}\n >\n <div className={`${prefix}step-item-title`} ref={this._refHandlerCreator('title')}>\n {title}\n </div>\n <div className={`${prefix}step-item-content`}>{content}</div>\n </div>\n <div className={`${prefix}step-item-tail`} ref={this._refHandlerCreator('tail')}>\n <div className={`${prefix}step-item-tail-underlay`}>\n <div className={`${prefix}step-item-tail-overlay`} style={overlayCls} />\n </div>\n </div>\n </li>\n );\n }\n\n getStyle() {\n const { parentWidth, parentHeight, direction, total, index, shape } = this.props;\n let width = 'auto';\n\n if (Number(parentWidth) && Number(parentHeight)) {\n if (!support.flex && shape === 'arrow') {\n width = Math.floor(parentWidth / total - parentHeight / 2 - parentHeight / 8);\n }\n }\n if (shape !== 'arrow' && (direction === 'horizontal' || direction === 'hoz')) {\n width = total - 1 !== index ? `${Math.floor(100 / total)}%` : 'auto';\n }\n return {\n width,\n };\n }\n\n onClick = () => {\n const { index, disabled, readOnly, animation } = this.props;\n if (disabled || readOnly) {\n return false;\n }\n\n if (animation && this.stepNode) {\n dom.hasClass(this.stepNode, 'clicked')\n ? dom.removeClass(this.stepNode, 'clicked')\n : dom.addClass(this.stepNode, 'clicked');\n }\n this.props.onClick(index);\n };\n\n removeClickedCls = () => {\n const { animation } = this.props;\n if (animation && this.stepNode && dom.hasClass(this.stepNode, 'clicked')) {\n dom.removeClass(this.stepNode, 'clicked');\n }\n };\n\n // 节点的渲染方法\n _itemRender(index, status) {\n const { itemRender } = this.props;\n if (itemRender) {\n return itemRender(index, status);\n }\n return status === 'finish' ? <i className=\"next-icon next-xs\"><svg viewBox=\"0 0 1024 1024\"><path d=\"M275.93,503.71A55.33,55.33,0,1,0,195,579.23L361,757.08a55.33,55.33,0,0,0,78.2,2.7q1.4-1.3,2.7-2.7l387.32-415a55.33,55.33,0,0,0-80.9-75.51L401.51,638.22Z\" /></svg></i> : index + 1;\n }\n\n _refHandlerCreator = refName => {\n const self = this;\n return function (ref) {\n self[refName] = ref;\n };\n };\n\n render() {\n // eslint-disable-next-line\n const {\n prefix,\n locale,\n className,\n status,\n title,\n icon,\n index,\n total,\n shape,\n content,\n direction,\n disabled,\n onClick,\n readOnly,\n animation,\n parentHeight,\n itemRender,\n parentWidth,\n labelPlacement,\n rtl,\n ...others\n } = this.props;\n\n const stepCls = classNames({\n [`${prefix}step-item`]: true,\n [`${prefix}step-item-${status}`]: status,\n [`${prefix}step-item-first`]: index === 0,\n [`${prefix}step-item-last`]: index === total - 1,\n [`${prefix}step-item-disabled`]: disabled,\n [`${prefix}step-item-read-only`]: readOnly,\n [className]: className,\n });\n\n const overlayCls = status === 'finish' ? { width: '100%' } : null;\n const arrowElement = (\n <li {...others} style={this.getStyle()} className={stepCls} onClick={this.onClick}>\n <div className={`${prefix}step-item-container`}>\n <div className={`${prefix}step-item-title`}>{title}</div>\n </div>\n </li>\n );\n const otherElement = this.getNode({ others, stepCls, overlayCls });\n\n return shape === 'arrow' ? arrowElement : otherElement;\n }\n}\nexport default ConfigProvider.config(StepItem);\n","import ConfigProvider from '../config-provider';\nimport Step from './view/step';\nimport StepItem from './view/step-item';\n\nStep.Item = StepItem;\n\nexport default ConfigProvider.config(Step, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('type' in props) {\n deprecated('type', 'shape', 'Step');\n\n let { type, direction, labelPlacement, ...others } = props;\n direction = direction === 'vertical' ? 'ver' : direction === 'horizontal' ? 'hoz' : direction;\n labelPlacement =\n labelPlacement === 'vertical'\n ? 'ver'\n : labelPlacement === 'horizontal'\n ? 'hoz'\n : labelPlacement;\n props = { shape: type, direction, labelPlacement, ...others };\n }\n\n return props;\n },\n});\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport ConfigProvider from '../config-provider';\nimport Icon from '../icon';\nimport { KEYCODE, obj } from '../util';\nimport Balloon from '../balloon';\n\nconst { Tooltip } = Balloon;\n\nclass Star extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内敛样式\n */\n style: PropTypes.object,\n /**\n * 是否收藏(针对受控组件)\n */\n starred: PropTypes.bool,\n /**\n * 星标默认值(针对非受控组件)\n */\n defaultStarred: PropTypes.bool,\n /**\n * starred 为 false 的时候弹出文字\n */\n text: PropTypes.string,\n /**\n * starred 为 true 的时候弹出文字\n */\n starredText: PropTypes.string,\n /**\n * 与 tooltip 的 align 属性一致\n */\n align: PropTypes.string,\n /**\n * 星标状态改变时触发此事件\n * @param {Boolean} starred\n * @param {Event} e DOM事件对象\n */\n onChange: PropTypes.func,\n /**\n * 鼠标点击事件\n * @param {Event} e DOM事件对象\n */\n onClick: PropTypes.func,\n /**\n * 键盘按键事件\n * @param {Event} e DOM事件对象\n */\n onKeyDown: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n onChange: () => {},\n defaultStarred: false,\n align: 't',\n }\n\n constructor(props) {\n super(props);\n const starred = 'starred' in props ? props.starred : props.defaultStarred;\n this.state = {\n starred: typeof starred === 'undefined' ? '' : starred,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('starred' in nextProps) {\n let { starred } = nextProps;\n if (starred === undefined) {\n starred = false;\n }\n this.setState({\n starred,\n });\n }\n }\n\n onChange = e => {\n const starred = !this.state.starred;\n if (!('starred' in this.props)) {\n this.setState({\n starred,\n });\n }\n this.props.onChange(starred, e);\n this.props.onClick && this.props.onClick(e);\n }\n\n onKeyDown = e => {\n if (e.keyCode === KEYCODE.ENTER || e.keyCode === KEYCODE.SPACE) {\n this.onChange(e);\n }\n this.props.onKeyDown && this.props.onKeyDown(e);\n }\n\n render() {\n const {\n prefix,\n className,\n style,\n text,\n starredText,\n align,\n ...others\n } = this.props;\n\n const { starred } = this.state;\n const type = starred ? 'star-fill' : 'starstroke';\n\n const iconCls = classNames({\n [`${prefix}star`]: true,\n [`${prefix}starred`]: starred,\n [className]: className,\n });\n\n const trigger = (\n <span\n role=\"star\"\n tabIndex=\"0\"\n className={`${prefix}star-wrapper`}\n onClick={this.onChange}\n onKeyDown={this.onKeyDown}\n {...obj.pickAttrs(others)}\n >\n <Icon type={type} className={iconCls} />\n </span>\n );\n\n\n if (text) {\n return (\n <Tooltip\n trigger={trigger}\n align={align}\n >\n {starred ? starredText : text}\n </Tooltip>\n );\n } else {\n return trigger;\n }\n }\n}\n\nexport default ConfigProvider.config(Star);\n","import React from 'react';\n\nexport const triggerEvents = {\n CLICK: 'click',\n HOVER: 'hover',\n};\n\nexport function getOffsetWH(node, tabPosition) {\n let prop = 'width';\n if (tabPosition === 'left' || tabPosition === 'right') {\n prop = 'height';\n }\n return node ? node.getBoundingClientRect()[prop] : 0;\n}\n\nexport function getOffsetLT(node, tabPosition) {\n let prop = 'left';\n if (tabPosition === 'left' || tabPosition === 'right') {\n prop = 'top';\n }\n return node.getBoundingClientRect()[prop];\n}\n\nexport function isTransformSupported(style) {\n return 'transform' in style || 'webkitTransform' in style || 'MozTransform' in style;\n}\n\nexport function toArray(children) {\n const ret = [];\n React.Children.forEach(children, (child, index) => {\n if (React.isValidElement(child)) {\n ret.push(\n React.cloneElement(child, {\n key: child.key || index,\n }),\n );\n }\n });\n return ret;\n}\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Icon from '../../icon';\nimport Overlay from '../../overlay';\nimport Menu from '../../menu';\nimport Animate from '../../animate';\nimport { events, KEYCODE, dom } from '../../util';\nimport { triggerEvents, getOffsetLT, getOffsetWH, isTransformSupported } from './utils';\n\nconst floatRight = { float: 'right', zIndex: 1 };\nconst floatLeft = { float: 'left', zIndex: 1 };\nconst { Popup } = Overlay;\n\nclass Nav extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n animation: PropTypes.bool,\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n excessMode: PropTypes.string,\n extra: PropTypes.any,\n tabs: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n tabPosition: PropTypes.string,\n tabRender: PropTypes.func,\n triggerType: PropTypes.string,\n popupProps: PropTypes.object,\n onTriggerEvent: PropTypes.func,\n onKeyDown: PropTypes.func,\n onClose: PropTypes.func,\n style: PropTypes.object,\n className: PropTypes.string,\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n showBtn: false,\n dropdownTabs: [],\n };\n this.offset = 0;\n }\n\n componentDidMount() {\n if (!this.props.animation) {\n this.initialSettings();\n }\n events.on(window, 'resize', this.onWindowResized);\n }\n\n componentDidUpdate(prevProps) {\n const ctx = this;\n // 此处通过延时处理,屏蔽动画带来的定位不准确问题(由于要支持ie9,因此无法使用transitionend)\n clearTimeout(ctx.scrollTimer);\n ctx.scrollTimer = setTimeout(() => {\n ctx.scrollToActiveTab();\n }, 410); // transition-duration is set to be .4s, wait for the transition finishes before re-calc\n clearTimeout(ctx.slideTimer);\n ctx.slideTimer = setTimeout(() => {\n ctx.setSlideBtn();\n if (this.props.tabs !== prevProps.tabs) {\n this.getDropdownItems(this.props);\n }\n }, 200);\n }\n\n componentWillUnmount() {\n events.off(window, 'resize', this.onWindowResized);\n }\n\n initialSettings = () => {\n this.setSlideBtn();\n this.getDropdownItems(this.props);\n }\n\n /**\n * The key method about move\n * @param {number} target position to slide to\n * @param {bool} checkSlideBtn need to check the slide button status or not\n * @param {bool} setActive need to check the active status or not\n */\n setOffset(target, checkSlideBtn = true, setActive = true) {\n const { tabPosition, rtl } = this.props;\n const navWH = getOffsetWH(this.nav, tabPosition);\n const wrapperWH = getOffsetWH(this.wrapper);\n\n // target should not be great than 0, i.e. should not over slide to left-most\n target = target >= 0 ? 0 : target;\n // when need to slide, should not slide to exceed right-most\n target = target <= wrapperWH - navWH && wrapperWH - navWH < 0 ? wrapperWH - navWH : target;\n\n const relativeOffset = target - this.offset;\n if (this.activeTab && this.props.excessMode === 'slide' && setActive) {\n const activeTabWH = getOffsetWH(this.activeTab);\n const activeTabOffset = getOffsetLT(this.activeTab) + relativeOffset;\n const wrapperOffset = getOffsetLT(this.wrapper);\n target = this._adjustTarget({\n wrapperOffset,\n wrapperWH,\n activeTabWH,\n activeTabOffset,\n rtl,\n target,\n });\n }\n if (this.offset !== target) {\n // needs move\n this.offset = target;\n let navOffset = {};\n const navStyle = this.nav.style;\n\n const canTransform = isTransformSupported(navStyle);\n if (tabPosition === 'left' || tabPosition === 'right') {\n navOffset = canTransform\n ? {\n value: `translate3d(0, ${target}px, 0)`,\n }\n : {\n name: 'top',\n value: `${target}px`,\n };\n } else if (!this.props.rtl) {\n navOffset = canTransform\n ? {\n value: `translate3d(${target}px, 0, 0)`,\n }\n : {\n name: 'left',\n value: `${target}px`,\n };\n } else {\n navOffset = canTransform\n ? {\n value: `translate3d(${-target}px, 0, 0)`,\n }\n : {\n name: 'right',\n value: `${target}px`,\n };\n }\n if (canTransform) {\n Object.assign(navStyle, {\n transform: navOffset.value,\n webkitTransform: navOffset.value,\n mozTransform: navOffset.value,\n });\n } else {\n navStyle[navOffset.name] = navOffset.value;\n }\n\n if (checkSlideBtn) {\n this.setSlideBtn();\n }\n }\n }\n\n _adjustTarget({ wrapperOffset, wrapperWH, activeTabWH, activeTabOffset, rtl, target }) {\n if (\n // active tab covers wrapper right edge\n wrapperOffset + wrapperWH < activeTabOffset + activeTabWH &&\n activeTabOffset < wrapperOffset + wrapperWH\n ) {\n if (rtl) {\n target += activeTabOffset + activeTabWH - (wrapperOffset + wrapperWH); // Move more to make active tab totally in visible zone\n } else {\n target -= activeTabOffset + activeTabWH - (wrapperOffset + wrapperWH) + 1;\n }\n\n return target;\n }\n if (\n // active tab covers wrapper left edge\n wrapperOffset < activeTabOffset + activeTabWH &&\n activeTabOffset < wrapperOffset\n ) {\n if (rtl) {\n target -= wrapperOffset - activeTabOffset + 1;\n } else {\n target += wrapperOffset - activeTabOffset;\n }\n return target;\n }\n return target;\n }\n\n _setBtnStyle(prev, next) {\n if (this.prevBtn && this.nextBtn) {\n const cls = 'disabled';\n this.prevBtn.disabled = !prev;\n this.nextBtn.disabled = !next;\n if (prev) {\n dom.removeClass(this.prevBtn, cls);\n } else {\n dom.addClass(this.prevBtn, cls);\n }\n if (next) {\n dom.removeClass(this.nextBtn, cls);\n } else {\n dom.addClass(this.nextBtn, cls);\n }\n }\n }\n\n setSlideBtn() {\n const { tabPosition, excessMode } = this.props;\n if (excessMode !== 'slide') {\n return;\n }\n\n // TEMP: 这里会受 Animate 影响,re-render 过程中 this.nav 实际上指向的是上次的 tabList 元素,建议暂时关闭 animation 解决\n const navWH = getOffsetWH(this.nav, tabPosition);\n const wrapperWH = getOffsetWH(this.wrapper, tabPosition);\n const navbarWH = getOffsetWH(this.navbar, tabPosition);\n const minOffset = wrapperWH - navWH;\n\n let next;\n let prev;\n if (minOffset >= 0 || navWH <= navbarWH) {\n next = false;\n prev = false;\n this.setOffset(0, false); // no need to check slide again since this call is invoked from inside setSlideBtn\n } else if (this.offset < 0 && this.offset <= minOffset) {\n prev = true;\n next = false;\n } else if (this.offset >= 0) {\n prev = false;\n next = true;\n } else {\n prev = true;\n next = true;\n }\n if ((prev || next) !== this.state.showBtn) {\n this.setState({\n showBtn: prev || next,\n });\n } else {\n this._setBtnStyle(prev, next);\n }\n }\n\n getDropdownItems({ excessMode, tabs }) {\n if (excessMode !== 'dropdown') {\n return;\n }\n\n // 先清空所有下拉项,让其全部横向渲染\n this.setState({\n dropdownTabs: [],\n });\n\n const wrapperWidth = this.wrapper.offsetWidth;\n const { childNodes } = this.nav;\n\n let index;\n let tabsWidth = 0;\n for (index = 0; index < tabs.length; index++) {\n if (!childNodes[index]) {\n // 横向的不一定全展示,还有的放在drowndown中\n break;\n }\n tabsWidth += childNodes[index].offsetWidth + 24; // 24为右外边距\n if (tabsWidth > wrapperWidth) {\n break;\n }\n }\n\n if (index !== tabs.length) {\n this.setState({\n dropdownTabs: tabs.slice(index),\n });\n }\n }\n\n removeTab = (key, e) => {\n e && e.stopPropagation(); // stop bubble, so that it won't trigger upstream listener\n this.props.onClose(key);\n };\n\n onCloseKeyDown = (key, e) => {\n if (e.keyCode === KEYCODE.ENTER) {\n e.stopPropagation();\n e.preventDefault();\n this.props.onClose(key);\n }\n };\n\n defaultTabTemplateRender = (key, { prefix, title, closeable, badge, icon }) => {\n const tail = closeable ? (\n <Icon\n type=\"remove\"\n tabIndex=\"0\"\n onKeyDown={e => this.onCloseKeyDown(key, e)}\n onClick={e => this.removeTab(key, e)}\n className={`${prefix}tabs-tab-close`}\n />\n ) : null;\n\n const badgeV = badge ? (\n <span className={`${this.props.prefix}tabs-tab-badge`}>\n {badge}\n </span>\n ) : null;\n\n const iconV = icon ? (\n <span className={`${this.props.prefix}tabs-tab-icon`}>{icon}</span>\n ) : null;\n\n return (\n <div className={`${this.props.prefix}tabs-tab-inner`}>\n {iconV}\n <span className={`${this.props.prefix}tabs-tab-title`}>{title}</span>\n {badgeV}\n {tail}\n </div>\n );\n };\n\n renderTabList = () => {\n const { prefix, activeKey, tabRender, excessMode } = this.props;\n const { dropdownTabs } = this.state;\n let { tabs } = this.props;\n const tabTemplateFn = tabRender || this.defaultTabTemplateRender;\n\n if (excessMode === 'dropdown' && dropdownTabs.length && Array.isArray(tabs)) {\n tabs = tabs.slice(0, tabs.length - dropdownTabs.length);\n }\n const rst = [];\n React.Children.forEach(tabs, child => {\n const { disabled, className, onClick, onMouseEnter, onMouseLeave, style } = child.props;\n /* eslint-disable eqeqeq */\n const active = activeKey == child.key;\n const cls = classnames(\n {\n [`${prefix}tabs-tab`]: true,\n disabled,\n active,\n },\n className,\n );\n\n let events = {};\n\n if (!disabled) {\n events = {\n onClick: this.onNavItemClick.bind(this, child.key, onClick),\n onMouseEnter: this.onNavItemMouseEnter.bind(this, child.key, onMouseEnter),\n onMouseLeave: this.onNavItemMouseLeave.bind(this, child.key, onMouseLeave),\n };\n }\n\n rst.push(\n <li\n role=\"tab\"\n key={child.key}\n ref={active ? this.activeTabRefHandler : null}\n aria-hidden={disabled ? 'true' : 'false'}\n aria-selected={active ? 'true' : 'false'}\n tabIndex={active ? 0 : -1}\n className={cls}\n style={style}\n {...events}\n >\n {tabTemplateFn(child.key, child.props)}\n </li>,\n );\n });\n return rst;\n }\n\n scrollToActiveTab = () => {\n if (!this.activeTab || this.props.excessMode !== 'slide') {\n return;\n }\n\n const activeTabWH = getOffsetWH(this.activeTab);\n const wrapperWH = getOffsetWH(this.wrapper);\n const activeTabOffset = getOffsetLT(this.activeTab);\n const wrapperOffset = getOffsetLT(this.wrapper);\n const target = this.offset;\n if (\n activeTabOffset >= wrapperOffset + wrapperWH ||\n activeTabOffset + activeTabWH <= wrapperOffset\n ) {\n this.setOffset(this.offset + wrapperOffset - activeTabOffset, true, true);\n return;\n }\n this.setOffset(target, true, true);\n };\n\n onPrevClick = () => {\n const wrapperWH = getOffsetWH(this.wrapper);\n this.setOffset(this.offset + wrapperWH, true, false);\n };\n\n onNextClick = () => {\n const wrapperWH = getOffsetWH(this.wrapper);\n this.setOffset(this.offset - wrapperWH, true, false);\n };\n\n onNavItemClick(key, callback, e) {\n this.props.onTriggerEvent(triggerEvents.CLICK, key);\n if (callback) {\n return callback(key, e);\n }\n }\n\n onSelectMenuItem = keys => {\n const { onTriggerEvent, triggerType } = this.props;\n onTriggerEvent(triggerType, keys[0]);\n };\n\n onNavItemMouseEnter(key, callback, e) {\n this.props.onTriggerEvent(triggerEvents.HOVER, key);\n if (callback) {\n return callback(key, e);\n }\n }\n\n onNavItemMouseLeave(key, callback, e) {\n if (callback) {\n return callback(key, e);\n }\n }\n\n onWindowResized = () => {\n if (this.updateTimer) {\n clearTimeout(this.updateTimer);\n }\n\n this.updateTimer = setTimeout(() => {\n this.setSlideBtn();\n this.getDropdownItems(this.props);\n }, 100);\n };\n\n renderDropdownTabs(tabs = []) {\n if (!tabs.length) {\n return null;\n }\n\n const { prefix, activeKey, triggerType, popupProps, rtl } = this.props;\n const trigger = (\n <button className={`${prefix}tabs-btn-down`}>\n <Icon type=\"chevron-down\" />\n </button>\n );\n\n return (\n <Popup\n rtl={rtl}\n triggerType={triggerType}\n trigger={trigger}\n // container={target => target.parentNode}\n className={`${prefix}tabs-bar-popup`}\n {...popupProps}\n >\n <Menu\n rtl={rtl}\n selectedKeys={[activeKey]}\n onSelect={this.onSelectMenuItem}\n selectMode=\"single\"\n >\n {tabs.map(tab => {\n const { disabled, onClick, onMouseEnter, onMouseLeave } = tab.props;\n let events = {};\n if (!disabled) {\n events = {\n onClick: this.onNavItemClick.bind(this, tab.key, onClick),\n onMouseEnter: this.onNavItemMouseEnter.bind(this, tab.key, onMouseEnter),\n onMouseLeave: this.onNavItemMouseLeave.bind(this, tab.key, onMouseLeave),\n };\n }\n return (\n <Menu.Item key={tab.key} {...events}>\n {tab.props.title}\n </Menu.Item>\n );\n })}\n </Menu>\n </Popup>\n );\n }\n\n navRefHandler = ref => {\n this.nav = findDOMNode(ref);\n };\n\n wrapperRefHandler = ref => {\n this.wrapper = ref;\n };\n\n navbarRefHandler = ref => {\n this.navbar = ref;\n };\n\n activeTabRefHandler = ref => {\n this.activeTab = ref;\n };\n\n prevBtnHandler = ref => {\n this.prevBtn = findDOMNode(ref);\n };\n\n nextBtnHandler = ref => {\n this.nextBtn = findDOMNode(ref);\n };\n\n render() {\n const {\n prefix,\n tabPosition,\n excessMode,\n extra,\n onKeyDown,\n animation,\n style,\n className,\n rtl,\n } = this.props;\n const { state } = this;\n\n let nextButton;\n let prevButton;\n let restButton;\n\n const showNextPrev = state.showBtn;\n\n if (excessMode === 'dropdown' && state.dropdownTabs.length) {\n restButton = this.renderDropdownTabs(state.dropdownTabs);\n prevButton = null;\n nextButton = null;\n } else if (showNextPrev) {\n prevButton = (\n <button\n onClick={this.onPrevClick}\n className={`${prefix}tabs-btn-prev`}\n ref={this.prevBtnHandler}\n >\n <Icon rtl={rtl} type=\"chevron-left\" />\n </button>\n );\n\n nextButton = (\n <button\n onClick={this.onNextClick}\n className={`${prefix}tabs-btn-next`}\n ref={this.nextBtnHandler}\n >\n <Icon rtl={rtl} type=\"chevron-right\" />\n </button>\n );\n restButton = null;\n } else {\n nextButton = null;\n prevButton = null;\n restButton = null;\n }\n\n const containerCls = classnames({\n [`${prefix}tabs-nav-container`]: true,\n [`${prefix}tabs-nav-container-scrolling`]: showNextPrev,\n });\n\n const navCls = `${prefix}tabs-nav`;\n const tabList = this.renderTabList();\n\n const container = (\n <div className={containerCls} onKeyDown={onKeyDown} key=\"nav-container\">\n <div className={`${prefix}tabs-nav-wrap`} ref={this.wrapperRefHandler}>\n <div className={`${prefix}tabs-nav-scroll`}>\n {animation ? (\n <Animate\n role=\"tablist\"\n aria-multiselectable={false}\n component=\"ul\"\n className={navCls}\n animation={navCls}\n singleMode={false}\n ref={this.navRefHandler}\n afterAppear={this.initialSettings}\n >\n {tabList}\n </Animate>\n ) : (\n <ul role=\"tablist\" className={navCls} ref={this.navRefHandler}>\n {tabList}\n </ul>\n )}\n </div>\n </div>\n {prevButton}\n {nextButton}\n {restButton}\n </div>\n );\n\n const navChildren = [container];\n\n if (extra) {\n const extraProps = {\n className: `${prefix}tabs-nav-extra`,\n key: 'nav-extra',\n };\n if (tabPosition === 'top' || tabPosition === 'bottom') {\n const style = rtl ? floatLeft : floatRight;\n navChildren.unshift(\n <div {...extraProps} style={style}>\n {extra}\n </div>,\n );\n } else {\n navChildren.push(<div {...extraProps}>{extra}</div>);\n }\n }\n\n const navbarCls = classnames(\n {\n [`${prefix}tabs-bar`]: true,\n },\n className,\n );\n\n return (\n <div className={navbarCls} style={style} ref={this.navbarRefHandler}>\n {navChildren}\n </div>\n );\n }\n}\n\nexport default Nav;\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nclass TabContent extends PureComponent {\n static propTypes = {\n prefix: PropTypes.string,\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n lazyLoad: PropTypes.bool,\n children: PropTypes.any,\n };\n\n render() {\n const {\n prefix,\n activeKey,\n lazyLoad,\n unmountInactiveTabs,\n children,\n className,\n ...others\n } = this.props;\n const formatChildren = [];\n React.Children.forEach(children, child => {\n /* eslint-disable eqeqeq */\n const active = activeKey == child.key;\n formatChildren.push(\n React.cloneElement(child, {\n prefix,\n active,\n lazyLoad,\n unmountInactiveTabs,\n }),\n );\n });\n\n const classNames = classnames(\n {\n [`${prefix}tabs-content`]: true,\n },\n className,\n );\n\n return (\n <div {...others} className={classNames}>\n {formatChildren}\n </div>\n );\n }\n}\n\nexport default TabContent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\n/** Tab.Item */\nclass TabItem extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 选项卡标题\n */\n title: PropTypes.node,\n /**\n * 单个选项卡是否可关闭\n */\n closeable: PropTypes.bool,\n /**\n * 选项卡徽标\n */\n badge: PropTypes.node,\n /**\n * 选项卡是否被禁用\n */\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n lazyLoad: PropTypes.bool,\n unmountInactiveTabs: PropTypes.bool,\n children: PropTypes.any,\n };\n\n static defaultProps = {\n prefix: 'next-',\n closeable: false,\n };\n\n render() {\n const { prefix, active, lazyLoad, unmountInactiveTabs, children } = this.props;\n\n this._actived = this._actived || active;\n if (lazyLoad && !this._actived) {\n return null;\n }\n\n if (unmountInactiveTabs && !active) {\n return null;\n }\n\n const cls = classnames({\n [`${prefix}tabs-tabpane`]: true,\n [`${active ? 'active' : 'hidden'}`]: true,\n });\n\n return (\n <div role=\"tabpanel\" aria-hidden={active ? 'false' : 'true'} className={cls}>\n {children}\n </div>\n );\n }\n}\n\nexport default TabItem;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { KEYCODE, obj } from '../util';\nimport TabNav from './tabs/nav';\nimport TabContent from './tabs/content';\nimport TabItem from './tabs/tab-item';\nimport { toArray } from './tabs/utils';\n\nconst noop = () => {};\n\n/** Tab */\nexport default class Tab extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 被激活的选项卡的 key, 赋值则tab为受控组件, 用户无法切换\n */\n activeKey: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * 初始化时被激活的选项卡的 key\n */\n defaultActiveKey: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * 外观形态\n */\n shape: PropTypes.oneOf(['pure', 'wrapped', 'text', 'capsule']),\n /**\n * 是否开启动效\n */\n animation: PropTypes.bool,\n /**\n * 选项卡过多时的滑动模式\n */\n excessMode: PropTypes.oneOf(['slide', 'dropdown']),\n /**\n * 导航选项卡的位置,只适用于包裹型(wrapped)选项卡\n */\n tabPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n /**\n * 尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 激活选项卡的触发方式\n */\n triggerType: PropTypes.oneOf(['hover', 'click']),\n /**\n * 是否延迟加载 TabPane 的内容, 默认开启, 即不提前渲染\n */\n lazyLoad: PropTypes.bool,\n /**\n * 是否自动卸载未处于激活状态的选项卡\n */\n unmountInactiveTabs: PropTypes.bool,\n /**\n * 导航条的自定义样式\n */\n navStyle: PropTypes.object,\n /**\n * 导航条的自定义样式类\n */\n navClassName: PropTypes.string,\n /**\n * 内容区容器的自定义样式\n */\n contentStyle: PropTypes.object,\n /**\n * 内容区容器的自定义样式类\n */\n contentClassName: PropTypes.string,\n /**\n * 导航栏附加内容\n */\n extra: PropTypes.node,\n /**\n * 点击单个选项卡时触发的回调\n */\n onClick: PropTypes.func,\n /**\n * 选项卡发生切换时的事件回调\n * @param {String|Number} key 改变后的 key\n */\n onChange: PropTypes.func,\n /**\n * 选项卡被关闭时的事件回调\n * @param {String|Number} key 关闭的选项卡的 key\n */\n onClose: PropTypes.func,\n /**\n * 自定义选项卡模板渲染函数\n * @param {String} key 当前 Tab.Item 的 key 值\n * @param {Object} props 传给 Tab.Item 的所有属性键值对\n * @return {ReactNode} 返回自定义组件\n */\n tabRender: PropTypes.func,\n /**\n * 弹层属性透传, 只有当 excessMode 为 dropdown 时生效\n */\n popupProps: PropTypes.object,\n children: PropTypes.any,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n prefix: 'next-',\n shape: 'pure',\n size: 'medium',\n animation: false,\n tabPosition: 'top',\n excessMode: 'slide',\n triggerType: 'click',\n lazyLoad: true,\n unmountInactiveTabs: false,\n onClick: noop,\n onChange: noop,\n onClose: noop,\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n activeKey: this.getDefaultActiveKey(props),\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.activeKey && this.state.activeKey !== nextProps.activeKey) {\n this.setState({\n activeKey: nextProps.activeKey,\n });\n }\n }\n\n getDefaultActiveKey(props) {\n let activeKey = props.activeKey || props.defaultActiveKey;\n if (!activeKey) {\n React.Children.forEach(props.children, (child, index) => {\n if (React.isValidElement(child)) {\n /* eslint-disable eqeqeq */\n if (activeKey == undefined && !child.props.disabled) {\n activeKey = child.key || index;\n }\n }\n });\n }\n return activeKey;\n }\n\n getNextActiveKey(isNext) {\n const children = [];\n React.Children.forEach(this.props.children, child => {\n if (React.isValidElement(child)) {\n if (!child.props.disabled) {\n if (isNext) {\n children.push(child);\n } else {\n children.unshift(child);\n }\n }\n }\n });\n\n const { length } = children;\n let key = length && children[0].key;\n children.forEach((child, i) => {\n if (child.key === this.state.activeKey) {\n if (i === length - 1) {\n key = children[0].key;\n } else {\n key = children[i + 1].key;\n }\n }\n });\n return key;\n }\n\n setActiveKey(key) {\n const { activeKey } = this.state;\n\n // 如果 key 没变,或者受控状态下,则跳过\n if (key === activeKey || 'activeKey' in this.props) {\n return;\n }\n this.setState({\n activeKey: key,\n });\n }\n\n handleTriggerEvent = (eventType, key) => {\n const { triggerType, onClick, onChange } = this.props;\n if (triggerType === eventType) {\n onClick(key);\n this.setActiveKey(key);\n if (this.state.activeKey !== key) {\n onChange(key);\n }\n }\n };\n\n onNavKeyDown = e => {\n const { keyCode } = e;\n if (keyCode >= KEYCODE.LEFT && keyCode <= KEYCODE.DOWN) {\n e.preventDefault();\n }\n let newKey;\n if (keyCode === KEYCODE.RIGHT || keyCode === KEYCODE.DOWN) {\n newKey = this.getNextActiveKey(true);\n this.handleTriggerEvent(this.props.triggerType, newKey);\n } else if (keyCode === KEYCODE.LEFT || keyCode === KEYCODE.UP) {\n newKey = this.getNextActiveKey(false);\n this.handleTriggerEvent(this.props.triggerType, newKey);\n }\n };\n\n render() {\n const {\n prefix,\n animation,\n shape,\n size,\n extra,\n excessMode,\n tabPosition,\n tabRender,\n triggerType,\n lazyLoad,\n unmountInactiveTabs,\n popupProps,\n navStyle,\n navClassName,\n contentStyle,\n contentClassName,\n className,\n onClose,\n children,\n rtl,\n ...others\n } = this.props;\n const { activeKey } = this.state;\n\n const tabs = toArray(children);\n let newPosition = tabPosition;\n if (rtl && ['left', 'right'].indexOf(tabPosition) >= 0) {\n newPosition = tabPosition === 'left' ? 'right' : 'left';\n }\n const classNames = classnames(\n {\n [`${prefix}tabs`]: true,\n [`${prefix}tabs-${shape}`]: shape,\n [`${prefix}tabs-vertical`]:\n shape === 'wrapped' && ['left', 'right'].indexOf(tabPosition) >= 0,\n [`${prefix}tabs-${newPosition}`]: shape === 'wrapped',\n [`${prefix + size}`]: size,\n },\n className,\n );\n\n const navProps = {\n prefix,\n rtl,\n animation,\n activeKey,\n excessMode,\n extra,\n tabs,\n tabPosition,\n tabRender,\n triggerType,\n popupProps,\n onClose,\n onTriggerEvent: this.handleTriggerEvent,\n onKeyDown: this.onNavKeyDown,\n style: navStyle,\n className: navClassName,\n };\n\n const contentProps = {\n prefix,\n activeKey,\n lazyLoad,\n unmountInactiveTabs,\n style: contentStyle,\n className: contentClassName,\n };\n\n const tabChildren = [\n <TabNav key=\"tab-nav\" {...navProps} />,\n <TabContent key=\"tab-content\" {...contentProps}>\n {tabs}\n </TabContent>,\n ];\n\n if (tabPosition === 'bottom') {\n tabChildren.reverse();\n }\n\n return (\n <div\n dir={rtl ? 'rtl' : undefined}\n className={classNames}\n {...obj.pickOthers(Tab.propTypes, others)}\n >\n {tabChildren}\n </div>\n );\n }\n}\n\nTab.Item = TabItem;\n","import ConfigProvider from '../config-provider';\nimport Tab from './tab';\n\nexport default ConfigProvider.config(Tab, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('type' in props) {\n deprecated('type', 'shape', 'Tab');\n const { type, ...others } = props;\n props = { shape: type, ...others };\n }\n if ('resDirection' in props) {\n const { resDirection, ...others } = props;\n\n let excessMode;\n if (resDirection === 'horizontal') {\n deprecated('resDirection=horizontal', 'excessMode=slide', 'Tab');\n\n excessMode = 'slide';\n } else if (resDirection === 'vertical') {\n deprecated('resDirection=vertical', 'excessMode=dropdown', 'Tab');\n\n excessMode = 'dropdown';\n }\n props = { excessMode, ...others };\n }\n if ('tabBarExtraContent' in props) {\n deprecated('tabBarExtraContent', 'extra', 'Tab');\n const { tabBarExtraContent, ...others } = props;\n props = { extra: tabBarExtraContent, ...others };\n }\n\n return props;\n },\n});\n","const blackList = ['defaultProps', 'propTypes', 'contextTypes', 'childContextTypes', 'displayName'];\n\nexport const statics = (Target, Component) => {\n Object.keys(Component).forEach(property => {\n if (blackList.indexOf(property) === -1) {\n Target[property] = Component[property];\n }\n });\n};\n\nexport const fetchDataByPath = (object, path) => {\n if (!object || !path) {\n return false;\n }\n path = path.toString();\n const field = path.split('.');\n let val, key;\n if (field.length) {\n key = field[0];\n // lists[1].name\n if (key.indexOf('[') >= 0) {\n key = key.match(/(.*)\\[(.*)\\]/);\n if (key) {\n val = object[key[1]][key[2]];\n }\n } else {\n val = object[field[0]];\n }\n if (val) {\n for (let colIndex = 1; colIndex < field.length; colIndex++) {\n val = val[field[colIndex]];\n if (typeof val === 'undefined') {\n break;\n }\n }\n }\n }\n return val;\n};\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { obj, dom } from '../../util';\nimport { fetchDataByPath } from '../util';\n\nconst noop = () => {};\n\nexport default class Row extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n primaryKey: PropTypes.string,\n className: PropTypes.string,\n columns: PropTypes.array,\n record: PropTypes.any,\n Cell: PropTypes.func,\n rowIndex: PropTypes.number,\n getCellProps: PropTypes.func,\n onClick: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n children: PropTypes.any,\n cellRef: PropTypes.func,\n colGroup: PropTypes.object,\n locale: PropTypes.object,\n wrapper: PropTypes.func,\n table: PropTypes.object\n };\n\n static defaultProps = {\n prefix: 'next-',\n primaryKey: 'id',\n columns: [],\n record: {},\n getCellProps: noop,\n onClick: noop,\n onMouseEnter: noop,\n onMouseLeave: noop,\n cellRef: noop,\n colGroup: {},\n wrapper: row => row,\n table: null\n };\n\n static contextTypes = {\n notRenderCellIndex: PropTypes.array,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n shouldComponentUpdate(nextProps) {\n if (nextProps.pure) {\n const isEqual = obj.shallowEqual(this.props, nextProps);\n return !isEqual;\n }\n\n return true;\n }\n\n onClick = e => {\n const { record, rowIndex } = this.props;\n this.props.onClick(record, rowIndex, e);\n };\n\n onMouseEnter = e => {\n const { record, rowIndex } = this.props;\n this.onRowHover(record, rowIndex, true, e);\n };\n\n onMouseLeave = e => {\n const { record, rowIndex } = this.props;\n this.onRowHover(record, rowIndex, false, e);\n };\n\n onRowHover(record, index, isEnter, e) {\n const { onMouseEnter, onMouseLeave } = this.props,\n currentRow = findDOMNode(this);\n if (isEnter) {\n onMouseEnter(record, index, e);\n currentRow && dom.addClass(currentRow, 'hovered');\n } else {\n onMouseLeave(record, index, e);\n currentRow && dom.removeClass(currentRow, 'hovered');\n }\n }\n\n renderCells(record, rowIndex) {\n const {\n Cell,\n columns,\n getCellProps,\n cellRef,\n prefix,\n primaryKey,\n pure,\n locale,\n table,\n rtl,\n } = this.props;\n\n // use params first, it's for list\n rowIndex = rowIndex !== undefined ? rowIndex : this.props.rowIndex;\n\n const { lockType } = this.context;\n return columns.map((child, colIndex) => {\n /* eslint-disable no-unused-vars, prefer-const */\n const { dataIndex, align, alignHeader, width, ...others } = child;\n\n const value = fetchDataByPath(record, dataIndex);\n const attrs = getCellProps(rowIndex, colIndex, dataIndex, record) || {};\n\n if (this.context.notRenderCellIndex) {\n const matchCellIndex = this.context.notRenderCellIndex\n .map(cellIndex => cellIndex.toString())\n .indexOf([rowIndex, colIndex].toString());\n if (matchCellIndex > -1) {\n this.context.notRenderCellIndex.splice(matchCellIndex, 1);\n return null;\n }\n }\n if ((attrs.colSpan && attrs.colSpan > 1) || (attrs.rowSpan && attrs.rowSpan > 1)) {\n this._getNotRenderCellIndex(colIndex, rowIndex, attrs.colSpan || 1, attrs.rowSpan || 1);\n }\n\n const cellClass = attrs.className;\n const className = classnames({\n first: lockType !== 'right' && colIndex === 0,\n last:\n lockType !== 'left' &&\n (colIndex === columns.length - 1 || colIndex + attrs.colSpan === columns.length), // 考虑合并单元格的情况\n [child.className]: child.className,\n [cellClass]: cellClass,\n });\n\n return (\n <Cell\n key={colIndex}\n {...others}\n {...attrs}\n ref={cell => cellRef(rowIndex, colIndex, cell)}\n prefix={prefix}\n pure={pure}\n primaryKey={primaryKey}\n record={record}\n className={className}\n value={value}\n colIndex={colIndex}\n rowIndex={rowIndex}\n align={align}\n locale={locale}\n rtl={rtl}\n width={width}\n table={table}\n />\n );\n });\n }\n\n _getNotRenderCellIndex(colIndex, rowIndex, colSpan, rowSpan) {\n const maxColIndex = colSpan;\n const maxRowIndex = rowSpan;\n const notRenderCellIndex = [];\n for (let i = 0; i < maxColIndex; i++) {\n for (let j = 0; j < maxRowIndex; j++) {\n notRenderCellIndex.push([rowIndex + j, colIndex + i]);\n }\n }\n [].push.apply(this.context.notRenderCellIndex, notRenderCellIndex);\n }\n\n render() {\n /* eslint-disable no-unused-vars*/\n const {\n prefix,\n className,\n onClick,\n onMouseEnter,\n onMouseLeave,\n columns,\n Cell,\n getCellProps,\n rowIndex,\n record,\n children,\n primaryKey,\n cellRef,\n colGroup,\n pure,\n locale,\n expandedIndexSimulate,\n rtl,\n wrapper,\n ...others\n } = this.props;\n const cls = classnames({\n [`${prefix}table-row`]: true,\n [className]: className,\n });\n\n const tr = (\n <tr\n className={cls}\n role=\"row\"\n {...others}\n onClick={this.onClick}\n onMouseEnter={this.onMouseEnter}\n onMouseLeave={this.onMouseLeave}\n >\n {this.renderCells(record)}\n {children}\n </tr>\n );\n\n return wrapper(tr);\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { obj } from '../../util';\n\nexport default class Cell extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n primaryKey: PropTypes.string,\n className: PropTypes.string,\n record: PropTypes.any,\n value: PropTypes.any,\n colIndex: PropTypes.number,\n rowIndex: PropTypes.number,\n title: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n context: PropTypes.any,\n cell: PropTypes.oneOfType([PropTypes.element, PropTypes.node, PropTypes.func]),\n align: PropTypes.oneOf(['left', 'center', 'right']),\n component: PropTypes.oneOf(['td', 'th', 'div']),\n children: PropTypes.any,\n style: PropTypes.object,\n innerStyle: PropTypes.object,\n filterMode: PropTypes.oneOf(['single', 'multiple']),\n filterMenuProps: PropTypes.object,\n filters: PropTypes.array,\n sortable: PropTypes.bool,\n lock: PropTypes.any,\n type: PropTypes.oneOf(['header', 'body']),\n resizable: PropTypes.bool,\n __normalized: PropTypes.bool,\n columnId: PropTypes.string,\n table: PropTypes.object,\n isInHeader: PropTypes.bool,\n };\n\n static defaultProps = {\n component: 'td',\n type: 'body',\n cell: value => value,\n prefix: 'next-',\n columnId: null,\n table: null,\n isInHeader: false,\n };\n\n shouldComponentUpdate(nextProps) {\n if (nextProps.pure) {\n const isEqual = obj.shallowEqual(this.props, nextProps);\n return !isEqual;\n }\n return true;\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n prefix,\n className,\n cell,\n value,\n resizable,\n colIndex,\n rowIndex,\n record,\n context,\n align,\n style = {},\n component: Tag,\n children,\n title,\n width,\n innerStyle,\n primaryKey,\n __normalized,\n filterMode,\n filterMenuProps,\n filters,\n sortable,\n lock,\n pure,\n locale,\n expandedIndexSimulate,\n rtl,\n columnId,\n table,\n isInHeader,\n type,\n ...others\n } = this.props;\n\n delete others.columnId;\n delete others.table;\n delete others.isInHeader;\n\n const tagStyle = { ...style };\n const cellProps = { value, index: rowIndex, record, context };\n let content = cell;\n if (React.isValidElement(content)) {\n content = React.cloneElement(content, cellProps);\n } else if (typeof content === 'function') {\n content = content(value, rowIndex, record, context);\n }\n if (align) {\n tagStyle.textAlign = align;\n if (rtl) {\n tagStyle.textAlign = align === 'left' ? 'right' : align === 'right' ? 'left' : align;\n }\n }\n const cls = classnames({\n [`${prefix}table-cell`]: true,\n [className]: className,\n });\n\n return (\n <Tag {...obj.pickAttrs(others)} className={cls} style={tagStyle} role=\"gridcell\">\n <div className={`${prefix}table-cell-wrapper`} style={innerStyle}>\n {\n type === 'body' ?\n <>\n {children}\n {children ? <span style={{ verticalAlign: 'middle' }}>{content}</span> : content}\n </> :\n <>\n {children ? <span style={{ verticalAlign: 'middle' }}>{content}</span> : content}\n {children}\n </>\n }\n { table && table.AutoWidth && table.AutoWidth.renderCalculator(columnId, isInHeader, content, children) }\n </div>\n </Tag>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport RowComponent from './row';\nimport CellComponent from './cell';\n\nconst noop = () => {};\n\nexport default class Body extends React.Component {\n static propTypes = {\n loading: PropTypes.bool,\n emptyContent: PropTypes.any,\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n components: PropTypes.object,\n getCellProps: PropTypes.func,\n cellRef: PropTypes.func,\n primaryKey: PropTypes.string,\n getRowProps: PropTypes.func,\n rowRef: PropTypes.func,\n dataSource: PropTypes.array,\n children: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n colGroup: PropTypes.object,\n columns: PropTypes.array,\n onRowClick: PropTypes.func,\n onRowMouseEnter: PropTypes.func,\n onRowMouseLeave: PropTypes.func,\n locale: PropTypes.object,\n table: PropTypes.object,\n };\n static defaultProps = {\n loading: false,\n prefix: 'next-',\n components: {},\n getCellProps: noop,\n cellRef: noop,\n primaryKey: 'id',\n getRowProps: noop,\n rowRef: noop,\n dataSource: [],\n component: 'tbody',\n columns: [],\n table: null,\n };\n\n getRowRef = (i, row) => {\n this.props.rowRef(i, row);\n };\n\n onRowClick = (record, index, e) => {\n this.props.onRowClick(record, index, e);\n };\n\n onRowMouseEnter = (record, index, e) => {\n this.props.onRowMouseEnter(record, index, e);\n };\n\n onRowMouseLeave = (record, index, e) => {\n this.props.onRowMouseLeave(record, index, e);\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n prefix,\n className,\n children,\n component: Tag,\n colGroup,\n loading,\n emptyContent,\n components,\n getCellProps,\n primaryKey,\n getRowProps,\n dataSource,\n cellRef,\n columns,\n rowRef,\n onRowClick,\n onRowMouseEnter,\n onRowMouseLeave,\n locale,\n pure,\n expandedIndexSimulate,\n rtl,\n table,\n ...others\n } = this.props;\n delete others.table;\n\n const { Row = RowComponent, Cell = CellComponent } = components;\n const empty = loading ? <span>&nbsp;</span> : emptyContent || locale.empty;\n let rows = (\n <tr>\n <td colSpan={columns.length}>\n <div className={`${prefix}table-empty`}>{empty}</div>\n </td>\n </tr>\n );\n if (Tag === 'div') {\n rows = (\n <table role=\"table\">\n <tbody>{rows}</tbody>\n </table>\n );\n }\n if (dataSource.length) {\n rows = dataSource.map((record, index) => {\n let rowProps = {};\n\n if (expandedIndexSimulate) {\n rowProps = record.__expanded ? {} : getRowProps(record, index / 2);\n } else {\n rowProps = getRowProps(record, index);\n }\n\n rowProps = rowProps || {};\n\n const rowClass = rowProps.className;\n const rowClassName = classnames({\n first: index === 0,\n last: index === dataSource.length - 1,\n [rowClass]: rowClass,\n });\n const expanded = record.__expanded ? 'expanded' : '';\n return (\n <Row\n key={`${record[primaryKey] || index}${expanded}`}\n {...rowProps}\n ref={this.getRowRef.bind(this, index)}\n colGroup={colGroup}\n rtl={rtl}\n columns={columns}\n primaryKey={primaryKey}\n record={record}\n rowIndex={index}\n prefix={prefix}\n pure={pure}\n cellRef={cellRef}\n getCellProps={getCellProps}\n className={rowClassName}\n Cell={Cell}\n onClick={this.onRowClick}\n locale={locale}\n onMouseEnter={this.onRowMouseEnter}\n onMouseLeave={this.onRowMouseLeave}\n table={table}\n />\n );\n });\n }\n return (\n <Tag className={className} {...others}>\n {rows}\n {children}\n </Tag>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from '../../dropdown';\nimport Menu from '../../menu';\nimport Button from '../../button';\nimport Icon from '../../icon';\nimport { KEYCODE, dom } from '../../util';\n\n// 共享状态的组件需要变成非受控组件\nexport default class Filter extends React.Component {\n static propTypes = {\n dataIndex: PropTypes.string,\n filters: PropTypes.array,\n filterMode: PropTypes.string,\n filterParams: PropTypes.object,\n filterMenuProps: PropTypes.object,\n locale: PropTypes.object,\n onFilter: PropTypes.func,\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n onFilter: () => {},\n };\n\n constructor(props) {\n super(props);\n const filterParams = props.filterParams || {};\n const filterConfig = filterParams[props.dataIndex] || {};\n this.state = {\n visible: filterConfig.visible || false,\n selectedKeys: filterConfig.selectedKeys || [],\n };\n this._selectedKeys = [...this.state.selectedKeys];\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.hasOwnProperty('filterParams') && typeof nextProps.filterParams !== 'undefined') {\n const dataIndex = nextProps.dataIndex || this.props.dataIndex;\n const filterParams = nextProps.filterParams || {};\n const filterConfig = filterParams[dataIndex] || {};\n const selectedKeys = filterConfig.selectedKeys || [];\n this.setState({\n selectedKeys,\n });\n this._selectedKeys = [...selectedKeys];\n }\n }\n\n filterKeydown = e => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.keyCode === KEYCODE.ENTER) {\n this.setState({\n visible: !this.state.visible,\n });\n }\n };\n\n onFilterVisible = visible => {\n this.setState({\n visible,\n });\n\n if (visible && this.filterRef) {\n dom.addClass(this.filterRef, `${this.props.prefix}table-filter-active`);\n }\n\n if (!visible && this.filterRef) {\n dom.removeClass(this.filterRef, `${this.props.prefix}table-filter-active`);\n }\n\n if (!visible) {\n const selectedKeys = [...this._selectedKeys];\n\n this.setState({\n selectedKeys,\n });\n }\n };\n\n onFilterSelect = selectedKeys => {\n this.setState({\n visible: true,\n selectedKeys,\n });\n };\n\n onFilterConfirm = () => {\n const { selectedKeys } = this.state;\n const filterParams = {};\n const { dataIndex } = this.props;\n\n filterParams[dataIndex] = {\n visible: false,\n selectedKeys,\n };\n this._selectedKeys = [...selectedKeys];\n this.setState({\n visible: false,\n });\n if (this.filterRef) {\n dom.removeClass(this.filterRef, `${this.props.prefix}table-filter-active`);\n }\n // 兼容之前的格式\n this.props.onFilter(filterParams);\n };\n\n onFilterClear = () => {\n const filterParams = {};\n const { dataIndex } = this.props;\n\n filterParams[dataIndex] = {\n visible: false,\n selectedKeys: [],\n };\n this._selectedKeys = [];\n this.setState({\n selectedKeys: [],\n visible: false,\n });\n if (this.filterRef) {\n dom.removeClass(this.filterRef, `${this.props.prefix}table-filter-active`);\n }\n // 兼容之前的格式\n this.props.onFilter(filterParams);\n };\n\n render() {\n const { filters, prefix, locale, filterMode, filterMenuProps, rtl } = this.props;\n const { visible, selectedKeys } = this.state;\n const { subMenuSelectable, ...others } = filterMenuProps;\n\n function renderMenuItem(item) {\n return <Menu.Item key={item.value}>{item.label}</Menu.Item>;\n }\n\n function renderSubMenu(parent, children) {\n return (\n <Menu.SubMenu label={parent.label} key={parent.value} selectable={subMenuSelectable}>\n {renderMenuContent(children)}\n </Menu.SubMenu>\n );\n }\n\n function renderMenuContent(list) {\n return list.map(item => {\n if (item.children) {\n return renderSubMenu(item, item.children);\n } else {\n return renderMenuItem(item);\n }\n });\n }\n\n const content = renderMenuContent(filters);\n const footer = (\n <div className={`${prefix}table-filter-footer`}>\n <Button type=\"primary\" size=\"small\" onClick={this.onFilterConfirm}>\n {locale.ok}\n </Button>\n <Button onClick={this.onFilterClear} size=\"small\">{locale.reset}</Button>\n </div>\n );\n\n return (\n <Dropdown\n trigger={\n <span\n role=\"button\"\n aria-label={locale.filter}\n onKeyDown={this.filterKeydown}\n tabIndex=\"0\"\n className={`${prefix}table-filter`}\n ref={el => { this.filterRef = el; }}\n >\n <Icon type=\"filter\" size=\"small\" />\n </span>\n }\n triggerType=\"click\"\n visible={visible}\n autoFocus\n rtl={rtl}\n container={node => node.parentNode}\n onVisibleChange={this.onFilterVisible}\n >\n <Menu\n footer={footer}\n rtl={rtl}\n mode=\"inline\"\n selectedKeys={selectedKeys}\n selectMode={filterMode}\n onSelect={this.onFilterSelect}\n {...others}\n >\n {content}\n </Menu>\n </Dropdown>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../icon';\nimport { KEYCODE } from '../../util';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class Sort extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n sort: PropTypes.object,\n sortIcons: PropTypes.object,\n initialOrder: PropTypes.oneOf(['asc', 'desc']),\n onSort: PropTypes.func,\n dataIndex: PropTypes.string,\n locale: PropTypes.object,\n };\n\n static defaultProps = {\n sort: {},\n initialOrder: 'desc',\n };\n\n // 渲染排序\n renderSort() {\n const { prefix, sort, sortIcons, dataIndex, locale, rtl } = this.props;\n const sortStatus = sort[dataIndex];\n const map = {\n desc: 'arrows-long-down',\n asc: 'arrows-long-up',\n };\n\n const icons = ['asc', 'desc'].map(sortOrder => {\n return (\n <span\n key={sortOrder}\n style={{ cursor: 'pointer' }}\n className={sortStatus === sortOrder ? 'current' : ''}\n >\n {sortIcons ? sortIcons[sortOrder] : <Icon rtl={rtl} type={map[sortOrder]} size=\"small\" />}\n </span>\n );\n });\n\n return (\n <span\n role=\"button\"\n tabIndex=\"0\"\n aria-label={locale[sortStatus]}\n className={`${prefix}table-sort`}\n onClick={this.handleClick}\n onKeyDown={this.keydownHandler}\n >\n {icons}\n </span>\n );\n }\n\n handleClick = () => {\n const { sort, dataIndex, initialOrder } = this.props;\n let order = initialOrder;\n if (sort[dataIndex]) {\n order = sort[dataIndex] === 'desc' ? 'asc' : 'desc';\n }\n this.onSort(dataIndex, order);\n };\n\n keydownHandler = e => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.keyCode === KEYCODE.ENTER) {\n this.handleClick();\n }\n };\n\n onSort = (dataIndex, order) => {\n const sort = {};\n sort[dataIndex] = order;\n\n this.props.onSort(dataIndex, order, sort);\n };\n\n render() {\n return this.renderSort();\n }\n}\n","import React from 'react';\nimport T from 'prop-types';\nimport { events, dom } from '../../util';\n\nclass Resize extends React.Component {\n static propTypes = {\n prefix: T.string,\n rtl: T.bool,\n onChange: T.func,\n dataIndex: T.string,\n };\n static defaultProps = {\n onChange: () => {},\n };\n componentWillUnmount() {\n this.destory();\n }\n onMouseDown = e => {\n this.lastPageX = e.pageX;\n events.on(document, 'mousemove', this.onMouseMove);\n events.on(document, 'mouseup', this.onMouseUp);\n this.unSelect();\n };\n onMouseMove = e => {\n const pageX = e.pageX;\n let changedPageX = pageX - this.lastPageX;\n\n if (this.props.rtl) {\n changedPageX = -changedPageX;\n }\n\n this.props.onChange(this.props.dataIndex, changedPageX);\n this.lastPageX = pageX;\n };\n onMouseUp = () => {\n this.destory();\n };\n destory() {\n events.off(document, 'mousemove', this.onMouseMove);\n events.off(document, 'mouseup', this.onMouseMove);\n this.select();\n }\n unSelect() {\n dom.setStyle(document.body, {\n userSelect: 'none',\n cursor: 'ew-resize',\n });\n document.body.setAttribute('unselectable', 'on');\n }\n select() {\n dom.setStyle(document.body, {\n userSelect: '',\n cursor: '',\n });\n document.body.removeAttribute('unselectable');\n }\n render() {\n const { prefix } = this.props;\n return <a className={`${prefix}table-resize-handler`} onMouseDown={this.onMouseDown} />;\n }\n}\n\nexport default Resize;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport FilterComponent from './filter';\nimport SortComponent from './sort';\nimport CellComponent from './cell';\nimport ResizeComponent from './resize';\n\nconst noop = () => {};\nexport default class Header extends React.Component {\n static propTypes = {\n children: PropTypes.any,\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n className: PropTypes.string,\n component: PropTypes.string,\n columns: PropTypes.array,\n colGroup: PropTypes.object,\n headerCellRef: PropTypes.func,\n locale: PropTypes.object,\n filterParams: PropTypes.object,\n onFilter: PropTypes.func,\n components: PropTypes.object,\n sort: PropTypes.object,\n sortIcons: PropTypes.object,\n onSort: PropTypes.func,\n onResizeChange: PropTypes.func,\n table: PropTypes.object\n };\n\n static defaultProps = {\n component: 'thead',\n columns: [],\n headerCellRef: noop,\n onFilter: noop,\n components: {},\n onSort: noop,\n onResizeChange: noop,\n table: null\n };\n\n static contextTypes = {\n rowSelection: PropTypes.object,\n selectedRowKeys: PropTypes.array,\n };\n\n getCellRef = (i, j, cell) => {\n this.props.headerCellRef(i, j, cell);\n };\n\n onSort = (dataIndex, order, sort) => {\n this.props.onSort(dataIndex, order, sort);\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n prefix,\n className,\n children,\n component: Tag,\n colGroup,\n columns,\n locale,\n filterParams,\n onFilter,\n components,\n affixRef,\n headerCellRef,\n onSort,\n sort,\n sortIcons,\n onResizeChange,\n pure,\n rtl,\n table,\n ...others\n } = this.props;\n\n delete others.table;\n\n const { selectedRowKeys = [], rowSelection } = this.context;\n\n const {\n Cell = CellComponent,\n Filter = FilterComponent,\n Sort = SortComponent,\n Resize = ResizeComponent,\n } = components;\n const rowSpan = columns.length;\n\n const header = columns.map((cols, index) => {\n const col = (selectedRowKeys.length && rowSelection.titleAddons ? cols.slice(0, 1) : cols).map((col, j) => {\n /* eslint-disable no-unused-vars, prefer-const */\n let {\n title,\n colSpan,\n sortable,\n initialOrder,\n resizable,\n dataIndex,\n filters,\n filterMode,\n filterMenuProps,\n width,\n align,\n alignHeader,\n className,\n __normalized,\n lock,\n columnId,\n ...others\n } = col;\n\n className = classnames({\n [`${prefix}table-header-node`]: true,\n [`${prefix}table-header-resizable`]: resizable,\n [className]: className,\n });\n let attrs = {};\n let sortElement;\n let filterElement;\n let resizeElement;\n\n if (col.children && col.children.length) {\n attrs.colSpan = colSpan;\n } else {\n if (sortable) {\n sortElement = (\n <Sort\n prefix={prefix}\n dataIndex={dataIndex}\n onSort={this.onSort}\n sortIcons={sortIcons}\n initialOrder={initialOrder}\n sort={sort}\n rtl={rtl}\n locale={locale}\n />\n );\n }\n if (resizable) {\n resizeElement = (\n <Resize prefix={prefix} rtl={rtl} dataIndex={dataIndex} onChange={onResizeChange} />\n );\n }\n\n if (filters) {\n filterElement = filters.length ? (\n <Filter\n dataIndex={dataIndex}\n filters={filters}\n prefix={prefix}\n locale={locale}\n rtl={rtl}\n filterParams={filterParams}\n filterMode={filterMode}\n filterMenuProps={filterMenuProps}\n onFilter={onFilter}\n />\n ) : null;\n }\n attrs.rowSpan = rowSpan - index;\n }\n\n if (selectedRowKeys.length && rowSelection.titleAddons) {\n attrs.colSpan = columns[0].length;\n }\n return (\n <Cell\n {...others}\n {...attrs}\n table={ table }\n isInHeader={ true }\n key={j}\n prefix={prefix}\n pure={pure}\n rtl={rtl}\n cell={title}\n component=\"th\"\n align={alignHeader || align}\n className={className}\n ref={this.getCellRef.bind(this, index, j)}\n columnId={columnId}\n type=\"header\"\n >\n {sortElement}\n {filterElement}\n {resizeElement}\n </Cell>\n );\n });\n return <tr key={index}>{col}</tr>;\n });\n\n return (\n <Tag className={className} {...others}>\n {header}\n {children}\n </Tag>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class Wrapper extends Component {\n render() {\n const { colGroup, children, component: Tag } = this.props;\n return (\n <Tag role=\"table\">\n {colGroup}\n {children}\n </Tag>\n );\n }\n}\n\nWrapper.defaultProps = {\n component: 'table',\n};\n\nWrapper.propTypes = {\n children: PropTypes.any,\n prefix: PropTypes.string,\n colGroup: PropTypes.any,\n component: PropTypes.string,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Table.Column\n * @order 0\n * */\nexport default class Column extends React.Component {\n static propTypes = {\n /**\n * 指定列对应的字段,支持`a.b`形式的快速取值\n */\n dataIndex: PropTypes.string,\n /**\n * 行渲染的逻辑\n * value, rowIndex, record, context四个属性只可读不可被更改\n * Function(value, index, record) => Element\n */\n cell: PropTypes.oneOfType([PropTypes.element, PropTypes.node, PropTypes.func]),\n /**\n * 表头显示的内容\n */\n title: PropTypes.oneOfType([PropTypes.element, PropTypes.node, PropTypes.func]),\n /**\n * 是否支持排序\n */\n sortable: PropTypes.bool,\n /**\n * 未指定列升降序时,首次点击返回的顺序\n */\n initialOrder: PropTypes.oneOf(['asc', 'desc']),\n /**\n * 列宽,注意在锁列的情况下一定需要配置宽度\n */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * 单元格的对齐方式\n */\n align: PropTypes.oneOf(['left', 'center', 'right']),\n /**\n * 单元格标题的对齐方式, 不配置默认读取align值\n */\n alignHeader: PropTypes.oneOf(['left', 'center', 'right']),\n /**\n * 生成标题过滤的菜单, 格式为`[{label:'xxx', value:'xxx'}]`\n */\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n }),\n ),\n /**\n * 过滤的模式是单选还是多选\n */\n filterMode: PropTypes.oneOf(['single', 'multiple']),\n /**\n * filter 模式下传递给 Menu 菜单的属性, 默认继承 `Menu` 组件的API\n * @property {Boolean} subMenuSelectable 默认为`false` subMenu是否可选择\n * @property {Boolean} isSelectIconRight 默认为`false` 是否将选中图标居右。注意:SubMenu 上的选中图标一直居左,不受此API控制\n */\n filterMenuProps: PropTypes.object,\n /**\n * 是否支持锁列,可选值为`left`,`right`, `true`\n */\n lock: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /**\n * 是否支持列宽调整, 当该值设为true,table的布局方式会修改为fixed.\n */\n resizable: PropTypes.bool,\n };\n\n static contextTypes = {\n parent: PropTypes.any,\n };\n\n static defaultProps = {\n cell: value => value,\n filterMode: 'multiple',\n filterMenuProps: {\n subMenuSelectable: false,\n },\n initialOrder: 'desc',\n resizable: false,\n };\n\n static _typeMark = 'column';\n\n render() {\n return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Table.ColumnGroup\n * @order 1\n **/\nexport default class ColumnGroup extends React.Component {\n static propTypes = {\n /**\n * 表头显示的内容\n */\n title: PropTypes.oneOfType([PropTypes.element, PropTypes.node, PropTypes.func]),\n };\n\n static childContextTypes = {\n parent: PropTypes.any,\n };\n\n static defaultProps = {\n title: 'column-group',\n };\n\n static _typeMark = 'columnGroup';\n\n getChildContext() {\n return {\n parent: this,\n };\n }\n\n render() {\n return null;\n }\n}\n","import React from 'react';\nimport guid from '../../util/guid';\nimport { findDOMNode } from 'react-dom';\n\nconst groupBy = (array, field) => {\n let id;\n const result = Object.create(null);\n\n if (typeof field === 'string') {\n for (const item of array) {\n id = String(item[field]);\n\n if (!result[id]) {\n result[id] = [item];\n } else {\n result[id].push(item);\n }\n }\n } else if (typeof field === 'function') {\n for (const item of array) {\n id = String(field(item));\n\n if (!result[id]) {\n result[id] = [item];\n } else {\n result[id].push(item);\n }\n }\n }\n\n return result;\n};\n\nconst getBestWidth = ({ headerWidth, bodyWidths }) => {\n const sizeGroup = groupBy(bodyWidths, (size) => {\n const groupIndex = (size / 10).toFixed();\n return groupIndex;\n });\n\n const values = Object.values(sizeGroup).sort(\n (sizesA, sizesB) => sizesB.length - sizesA.length\n )[0];\n // const value = values.reduce( ( pv, cv, i ) => ( ( pv * i + cv ) / ( i + 1 ) ), 0 );\n const value = Math.max.apply(null, values);\n\n return Math.max(headerWidth, value);\n};\n\nexport default class AutoWidth {\n padding = 15;\n\n enable = true;\n\n columns = Object.create(null);\n\n Calculators = Object.create(null);\n\n colGroups = [];\n\n constructor({ padding = null, table } = {}) {\n if (typeof padding === 'number') {\n this.padding = padding;\n }\n\n this.table = table;\n }\n\n init() {\n this.columns = Object.create(null);\n this.Calculators = Object.create(null);\n this.colGroups.length = 0;\n }\n\n analyzeColDefine(column) {\n if (column && column.width === 'auto') {\n this.columns[column.columnId] = {\n calced: false,\n headerCalculator: null,\n headerWidth: null,\n bodyCalculators: [],\n bodyWidths: [],\n bestWidth: null,\n isMax: false,\n };\n }\n }\n\n bindColGroup(colGroup) {\n if (!this.enable) {\n return;\n }\n\n const { colGroups } = this;\n\n if (!colGroups.includes(colGroup)) {\n colGroups.push(colGroup);\n }\n }\n\n bindCalculator(id, target) {\n this.Calculators[id] = target;\n }\n\n renderCalculator(columnId, isInHeader, content, children) {\n if (!this.enable) {\n return null;\n }\n\n const column = this.columns[columnId];\n\n if (column) {\n const calculatorId = guid('aw-');\n\n if (isInHeader) {\n column.headerCalculator = calculatorId;\n } else {\n column.bodyCalculators.push(calculatorId);\n }\n\n return (\n <Calculator id={calculatorId} AutoWidthInstance={this}>\n {content}\n {children}\n </Calculator>\n );\n } else {\n return null;\n }\n }\n\n calcAndUpdate() {\n const { colGroups, columns } = this;\n const columnIds = Object.keys(columns);\n let maxValue = 0;\n let maxValueId = null;\n\n for (const id of columnIds) {\n const column = columns[id];\n const { headerCalculator, bodyCalculators } = column;\n\n if (headerCalculator) {\n column.headerWidth = this.Calculators[headerCalculator].getWidth();\n }\n\n if (bodyCalculators.length) {\n column.bodyWidths = bodyCalculators.map((i) => this.Calculators[i].getWidth());\n }\n\n if (column.bodyWidths.length) {\n column.bestWidth = getBestWidth(column);\n\n if (column.bestWidth > maxValue) {\n maxValue = column.bestWidth;\n maxValueId = id;\n }\n }\n }\n\n if (maxValueId) {\n const column = columns[maxValueId];\n column.bestWidth = null;\n }\n\n for (const colGroup of colGroups) {\n colGroup.forceUpdate();\n }\n }\n\n getBestWidth(columnId) {\n const column = this.columns[columnId];\n\n if (column && column.bestWidth) {\n return column.bestWidth + this.padding * 2;\n } else {\n return null;\n }\n }\n}\n\nclass Calculator extends React.Component {\n constructor(props) {\n super(props);\n const { AutoWidthInstance, id } = this.props;\n AutoWidthInstance.bindCalculator(id, this);\n }\n\n componentDidUpdate() {\n const { AutoWidthInstance, id } = this.props;\n AutoWidthInstance.bindCalculator(id, this);\n\n const container = findDOMNode(this);\n container.style.display = 'block';\n }\n\n getWidth() {\n const container = findDOMNode(this);\n const content = container.querySelector('.auto-width-calculator-content');\n const { width } = content.getBoundingClientRect();\n container.style.display = 'none';\n return width;\n }\n\n render() {\n const { content, children } = this.props;\n\n return (\n <div style={{ cssText: 'position: relative; opacity: 0; pointer-events: none' }}>\n <div style={{ cssText: 'position: absolute; width: 2000px' }}>\n <div className=\"auto-width-calculator-content\" style={{ cssText: 'position: absolute' }}>\n {content}\n {children}\n </div>\n </div>\n </div>\n );\n }\n}\n","/* eslint-disable react/no-multi-comp */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport shallowElementEquals from 'shallow-element-equals';\nimport Loading from '../loading';\nimport zhCN from '../locale/zh-cn';\nimport { log, obj } from '../util';\nimport BodyComponent from './base/body';\nimport HeaderComponent from './base/header';\nimport WrapperComponent from './base/wrapper';\nimport RowComponent from './base/row';\nimport CellComponent from './base/cell';\nimport FilterComponent from './base/filter';\nimport SortComponent from './base/sort';\nimport Column from './column';\nimport ColumnGroup from './column-group';\nimport guid from '../util/guid';\nimport AutoWidth from './base/auto-width';\n\nconst { Children } = React;\nconst noop = () => {};\n\nclass ColGroup extends React.Component {\n componentDidMount() {\n const { table } = this.props;\n table.AutoWidth.bindColGroup(this);\n }\n\n componentDidUpdate() {\n const { table } = this.props;\n table.AutoWidth.bindColGroup(this);\n }\n\n render() {\n const { flatChildren, table } = this.props;\n\n const cols = flatChildren.map((col, index) => {\n const { width, columnId } = col;\n let style = {};\n let w = width;\n\n if (width === 'auto' && table.AutoWidth.enable) {\n w = table.AutoWidth.getBestWidth(columnId);\n }\n\n if (w) {\n style = { width: w };\n }\n\n return <col style={style} key={index} />;\n });\n\n return <colgroup key=\"table-colgroup\">{cols}</colgroup>;\n }\n}\n\n/** Table */\nexport default class Table extends React.Component {\n static Column = Column;\n\n static ColumnGroup = ColumnGroup;\n\n static Header = HeaderComponent;\n\n static Body = BodyComponent;\n\n static Wrapper = WrapperComponent;\n\n static Row = RowComponent;\n\n static Cell = CellComponent;\n\n static Filter = FilterComponent;\n\n static Sort = SortComponent;\n\n static propTypes = {\n /**\n * 样式类名的品牌前缀\n */\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n /**\n * 自定义内联样式\n */\n style: PropTypes.object,\n /**\n * 表格展示的数据源\n */\n dataSource: PropTypes.array,\n entireDataSource: PropTypes.array,\n /**\n * 点击表格每一行触发的事件\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @param {Event} e DOM事件对象\n */\n onRowClick: PropTypes.func,\n /**\n * 悬浮在表格每一行的时候触发的事件\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @param {Event} e DOM事件对象\n */\n onRowMouseEnter: PropTypes.func,\n /**\n * 离开表格每一行的时候触发的事件\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @param {Event} e DOM事件对象\n */\n onRowMouseLeave: PropTypes.func,\n /**\n * 点击列排序触发的事件\n * @param {String} dataIndex 指定的排序的字段\n * @param {String} order 排序对应的顺序, 有`desc`和`asc`两种\n */\n onSort: PropTypes.func,\n /**\n * 点击过滤确认按钮触发的事件\n * @param {Object} filterParams 过滤的字段信息\n */\n onFilter: PropTypes.func,\n /**\n * 重设列尺寸的时候触发的事件\n * @param {String} dataIndex 指定重设的字段\n * @param {Number} value 列宽变动的数值\n */\n onResizeChange: PropTypes.func,\n /**\n * 设置每一行的属性,如果返回值和其他针对行操作的属性冲突则无效。\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @returns {Object} 需要设置的行属性\n */\n rowProps: PropTypes.func,\n /**\n * 设置单元格的属性,通过该属性可以进行合并单元格\n * @param {Number} rowIndex 该行所对应的序列\n * @param {Number} colIndex 该列所对应的序列\n * @param {String} dataIndex 该列所对应的字段名称\n * @param {Object} record 该行对应的记录\n * @returns {Object} 返回td元素的所支持的属性对象\n */\n cellProps: PropTypes.func,\n /**\n * 表格是否具有边框\n */\n hasBorder: PropTypes.bool,\n /**\n * 表格是否具有头部\n */\n hasHeader: PropTypes.bool,\n /**\n * 表格是否是斑马线\n */\n isZebra: PropTypes.bool,\n /**\n * 表格是否在加载中\n */\n loading: PropTypes.bool,\n /**\n * 自定义 Loading 组件\n * 请务必传递 props, 使用方式: loadingComponent={props => <Loading {...props}/>}\n * @param {Object} props 当前点击行的key\n */\n loadingComponent: PropTypes.func,\n /**\n * 当前过滤的的keys,使用此属性可以控制表格的头部的过滤选项中哪个菜单被选中,格式为 {dataIndex: {selectedKeys:[]}}\n * 示例:\n * 假设要控制dataIndex为id的列的过滤菜单中key为one的菜单项选中\n * `<Table filterParams={{id: {selectedKeys: ['one']}}}/>`\n */\n filterParams: PropTypes.object,\n /**\n * 当前排序的字段,使用此属性可以控制表格的字段的排序,格式为{dataIndex: 'asc'}\n */\n sort: PropTypes.object,\n /**\n * 自定义排序按钮,例如上下排布的: `{desc: <Icon style={{top: '6px', left: '4px'}} type={'chevron-down'} size=\"small\" />, asc: <Icon style={{top: '-6px', left: '4px'}} type={'chevron-up'} size=\"small\" />}`\n */\n sortIcons: PropTypes.object,\n /**\n * 自定义国际化文案对象\n * @property {String} ok 过滤器中确认按钮文案\n * @property {String} reset 过滤器中重置按钮文案\n * @property {String} empty 没有数据情况下 table内的文案\n * @property {String} asc 排序升序状态下的文案\n * @property {String} desc 排序将序状态下的文案\n * @property {String} expanded 可折叠行,展开状态下的文案\n * @property {String} folded 可折叠行,折叠状态下的文案\n * @property {String} filter 过滤器文案\n * @property {String} selectAll header里全选的按钮文案\n */\n locale: PropTypes.object,\n components: PropTypes.object,\n columns: PropTypes.array,\n /**\n * 设置数据为空的时候的表格内容展现\n */\n emptyContent: PropTypes.node,\n /**\n * dataSource当中数据的主键,如果给定的数据源中的属性不包含该主键,会造成选择状态全部选中\n */\n primaryKey: PropTypes.string,\n lockType: PropTypes.oneOf(['left', 'right']),\n wrapperContent: PropTypes.any,\n refs: PropTypes.object,\n /**\n * 额外渲染行的渲染函数\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @returns {Element} 渲染内容\n */\n expandedRowRender: PropTypes.func,\n /**\n * 额外渲染行的缩进\n */\n expandedRowIndent: PropTypes.array,\n /**\n * 默认情况下展开的渲染行或者Tree, 传入此属性为受控状态\n */\n openRowKeys: PropTypes.array,\n /**\n * 是否显示点击展开额外渲染行的+号按钮\n */\n hasExpandedRowCtrl: PropTypes.bool,\n /**\n * 设置额外渲染行的属性\n */\n getExpandedColProps: PropTypes.func,\n /**\n * 在额外渲染行或者Tree展开或者收起的时候触发的事件\n * @param {Array} openRowKeys 展开的渲染行的key\n * @param {String} currentRowKey 当前点击的渲染行的key\n * @param {Boolean} expanded 当前点击是展开还是收起\n * @param {Object} currentRecord 当前点击额外渲染行的记录\n */\n onRowOpen: PropTypes.func,\n /**\n * 点击额外渲染行触发的事件\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @param {Event} e DOM事件对象\n */\n onExpandedRowClick: PropTypes.func,\n /**\n * 表头是否固定,该属性配合maxBodyHeight使用,当内容区域的高度超过maxBodyHeight的时候,在内容区域会出现滚动条\n */\n fixedHeader: PropTypes.bool,\n /**\n * 最大内容区域的高度,在`fixedHeader`为`true`的时候,超过这个高度会出现滚动条\n */\n maxBodyHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * 是否启用选择模式\n * @property {Function} getProps `Function(record, index)=>Object` 获取selection的默认属性\n * @property {Function} onChange `Function(selectedRowKeys:Array, records:Array)` 选择改变的时候触发的事件,**注意:** 其中records只会包含当前dataSource的数据,很可能会小于selectedRowKeys的长度。\n * @property {Function} onSelect `Function(selected:Boolean, record:Object, records:Array)` 用户手动选择/取消选择某行的回调\n * @property {Function} onSelectAll `Function(selected:Boolean, records:Array)` 用户手动选择/取消选择所有行的回调\n * @property {Array} selectedRowKeys 设置了此属性,将rowSelection变为受控状态,接收值为该行数据的primaryKey的值\n * @property {String} mode 选择selection的模式, 可选值为`single`, `multiple`,默认为`multiple`\n * @property {Function} columnProps `Function()=>Object` 选择列 的props,例如锁列、对齐等,可使用`Table.Column` 的所有参数\n * @property {Function} titleProps `Function()=>Object` 选择列 表头的props,仅在 `multiple` 模式下生效\n * @property {Function} titleAddons `Function()=>Node` 选择列 表头添加的元素,在`single` `multiple` 下都生效\n */\n rowSelection: PropTypes.object,\n /**\n * 表头是否是sticky\n */\n stickyHeader: PropTypes.bool,\n /**\n * 距离窗口顶部达到指定偏移量后触发\n */\n offsetTop: PropTypes.number,\n /**\n * affix组件的的属性\n */\n affixProps: PropTypes.object,\n /**\n * 在tree模式下的缩进尺寸, 仅在isTree为true时候有效\n */\n indent: PropTypes.number,\n /**\n * 开启Table的tree模式, 接收的数据格式中包含children则渲染成tree table\n */\n isTree: PropTypes.bool,\n /**\n * 是否开启虚拟滚动\n */\n useVirtual: PropTypes.bool,\n /**\n * 设置行高\n */\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n /**\n * 在内容区域滚动的时候触发的函数\n */\n onBodyScroll: PropTypes.func,\n /**\n * 开启时,getExpandedColProps() / rowProps() / expandedRowRender() 的第二个参数 index (该行所对应的序列) 将按照01,2,3,4...的顺序返回,否则返回真实index(0,2,4,6... / 1,3,5,7...)\n */\n expandedIndexSimulate: PropTypes.bool,\n };\n\n static defaultProps = {\n dataSource: [],\n onRowClick: noop,\n onRowMouseEnter: noop,\n onRowMouseLeave: noop,\n onSort: noop,\n onFilter: noop,\n onResizeChange: noop,\n rowProps: noop,\n cellProps: noop,\n prefix: 'next-',\n hasBorder: true,\n hasHeader: true,\n isZebra: false,\n loading: false,\n expandedIndexSimulate: false,\n primaryKey: 'id',\n components: {},\n locale: zhCN.Table,\n };\n\n static childContextTypes = {\n notRenderCellIndex: PropTypes.array,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n static contextTypes = {\n getTableInstance: PropTypes.func,\n getTableInstanceForVirtual: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n const { getTableInstance, getTableInstanceForVirtual } = this.context;\n getTableInstance && getTableInstance(props.lockType, this);\n getTableInstanceForVirtual && getTableInstanceForVirtual(props.lockType, this);\n this.notRenderCellIndex = [];\n this.refColGroup = null;\n this.AutoWidth = new AutoWidth({ padding: 15, table: this });\n }\n\n state = {\n sort: this.props.sort || {},\n };\n\n getChildContext() {\n return {\n notRenderCellIndex: this.notRenderCellIndex,\n lockType: this.props.lockType,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (typeof this.props.sort !== 'undefined') {\n this.setState({\n sort: nextProps.sort,\n });\n }\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if (nextProps.pure) {\n const isEqual =\n shallowElementEquals(nextProps, this.props) &&\n obj.shallowEqual(nextState, this.state) &&\n obj.shallowEqual(nextContext, this.context);\n return !isEqual;\n }\n\n return true;\n }\n\n UNSAFE_componentWillUpdate() {\n this.notRenderCellIndex = [];\n }\n\n componentDidMount() {\n if (this.AutoWidth && this.AutoWidth.enable) {\n this.AutoWidth.calcAndUpdate();\n }\n }\n\n componentDidUpdate() {\n if (this.AutoWidth && this.AutoWidth.enable) {\n this.AutoWidth.calcAndUpdate();\n }\n }\n\n normalizeChildrenState(props) {\n let { columns } = props;\n if (props.children) {\n columns = this.normalizeChildren(props);\n }\n return this.fetchInfoFromBinaryChildren(columns);\n }\n\n // 将React结构化数据提取props转换成数组\n normalizeChildren(props) {\n let { columns } = props;\n const getChildren = children => {\n const ret = [];\n Children.forEach(children, child => {\n if (child) {\n const props = { ...child.props };\n\n if (\n !(\n child &&\n typeof child.type === 'function' &&\n (child.type._typeMark === 'column' || child.type._typeMark === 'columnGroup')\n )\n ) {\n log.warning('Use <Table.Column/>, <Table.ColumnGroup/> as child.');\n }\n ret.push(props);\n if (child.props.children) {\n props.children = getChildren(child.props.children);\n }\n }\n });\n return ret;\n };\n if (props.children) {\n columns = getChildren(props.children);\n }\n return columns;\n }\n\n fetchInfoFromBinaryChildren(children) {\n let hasGroupHeader = false;\n const flatChildren = [];\n const groupChildren = [];\n const getChildren = (propsChildren, level) => {\n groupChildren[level] = groupChildren[level] || [];\n propsChildren.forEach(child => {\n if (child.children) {\n hasGroupHeader = true;\n getChildren(child.children, level + 1);\n } else {\n child.columnId = guid('cloumn-');\n\n if (this.AutoWidth.enable) {\n this.AutoWidth.analyzeColDefine(child);\n }\n\n flatChildren.push(child);\n }\n groupChildren[level].push(child);\n });\n };\n const getColSpan = (children, colSpan) => {\n colSpan = colSpan || 0;\n children.forEach(child => {\n if (child.children) {\n colSpan = getColSpan(child.children, colSpan);\n } else {\n colSpan += 1;\n }\n });\n return colSpan;\n };\n\n getChildren(children, 0);\n\n groupChildren.forEach((groupChild, i) => {\n groupChild.forEach((child, j) => {\n let colSpan;\n const { children } = child;\n\n if (children) {\n colSpan = getColSpan(children);\n child.colSpan = colSpan;\n groupChildren[i][j] = child;\n }\n });\n });\n\n return {\n flatChildren,\n groupChildren,\n hasGroupHeader,\n };\n }\n\n renderColGroup = (flatChildren) => {\n return <ColGroup flatChildren={flatChildren} table={this} />;\n }\n\n onSort = (dataIndex, order, sort) => {\n if (typeof this.props.sort === 'undefined') {\n this.setState(\n {\n sort,\n },\n () => {\n this.props.onSort(dataIndex, order, sort);\n },\n );\n } else {\n this.props.onSort(dataIndex, order, sort);\n }\n };\n\n onFilter = filterParams => {\n this.props.onFilter(filterParams);\n };\n\n onResizeChange = (dataIndex, value) => {\n this.props.onResizeChange(dataIndex, value);\n };\n\n // 通过头部和扁平的结构渲染表格\n renderTable(groupChildren, flatChildren) {\n if (flatChildren.length || (!flatChildren.length && !this.props.lockType)) {\n const {\n hasHeader,\n components,\n prefix,\n wrapperContent,\n filterParams,\n locale,\n dataSource,\n emptyContent,\n loading,\n primaryKey,\n cellProps,\n rowProps,\n onRowClick,\n onRowMouseEnter,\n onRowMouseLeave,\n expandedIndexSimulate,\n pure,\n rtl,\n sortIcons,\n } = this.props;\n const { sort } = this.state;\n\n const {\n Header = HeaderComponent,\n Wrapper = WrapperComponent,\n Body = BodyComponent,\n } = components;\n\n const colGroup = this.renderColGroup(flatChildren);\n\n return (\n <Wrapper colGroup={colGroup} ref={this.getWrapperRef} prefix={prefix}>\n {hasHeader ? (\n <Header\n prefix={prefix}\n rtl={rtl}\n pure={pure}\n affixRef={this.getAffixRef}\n colGroup={colGroup}\n className={`${prefix}table-header`}\n filterParams={filterParams}\n columns={groupChildren}\n locale={locale}\n headerCellRef={this.getHeaderCellRef}\n components={components}\n onFilter={this.onFilter}\n sort={sort}\n onResizeChange={this.onResizeChange}\n onSort={this.onSort}\n sortIcons={sortIcons}\n table={this}\n />\n ) : null}\n <Body\n prefix={prefix}\n rtl={rtl}\n pure={pure}\n colGroup={colGroup}\n className={`${prefix}table-body`}\n components={components}\n loading={loading}\n emptyContent={emptyContent}\n getCellProps={cellProps}\n primaryKey={primaryKey}\n getRowProps={rowProps}\n columns={flatChildren}\n rowRef={this.getRowRef}\n cellRef={this.getCellRef}\n onRowClick={onRowClick}\n expandedIndexSimulate={expandedIndexSimulate}\n onRowMouseEnter={onRowMouseEnter}\n onRowMouseLeave={onRowMouseLeave}\n dataSource={dataSource}\n locale={locale}\n table={this}\n />\n {wrapperContent}\n </Wrapper>\n );\n } else {\n return null;\n }\n }\n\n getWrapperRef = wrapper => {\n if (!wrapper) {\n return this.wrapper;\n }\n this.wrapper = wrapper;\n };\n\n getAffixRef = affixRef => {\n if (!affixRef) {\n return this.affixRef;\n }\n this.affixRef = affixRef;\n };\n\n getHeaderCellRef = (i, j, cell) => {\n const cellRef = `header_cell_${i}_${j}`;\n if (!cell) {\n return this[cellRef];\n }\n this[cellRef] = cell;\n };\n\n getRowRef = (i, row) => {\n const rowRef = `row_${i}`;\n if (!row) {\n return this[rowRef];\n }\n this[rowRef] = row;\n };\n\n getCellRef = (i, j, cell) => {\n const cellRef = `cell_${i}_${j}`;\n if (!cell) {\n return this[cellRef];\n }\n this[cellRef] = cell;\n };\n\n render() {\n if (this.AutoWidth && this.AutoWidth.enable) {\n this.AutoWidth.init();\n }\n\n const ret = this.normalizeChildrenState(this.props);\n this.groupChildren = ret.groupChildren;\n this.flatChildren = ret.flatChildren;\n /* eslint-disable no-unused-vars, prefer-const */\n\n let table = this.renderTable(ret.groupChildren, ret.flatChildren);\n const {\n className,\n hasBorder,\n isZebra,\n loading,\n hasHeader,\n prefix,\n dataSource,\n entireDataSource,\n onSort,\n onResizeChange,\n onRowClick,\n onRowMouseEnter,\n onRowMouseLeave,\n onFilter,\n rowProps,\n cellProps,\n primaryKey,\n components,\n wrapperContent,\n lockType,\n locale,\n expandedIndexSimulate,\n refs,\n pure,\n rtl,\n emptyContent,\n filterParams,\n columns,\n sortIcons,\n loadingComponent: LoadingComponent = Loading,\n ...others\n } = this.props;\n const cls = classnames({\n [`${prefix}table`]: true,\n 'only-bottom-border': !hasBorder,\n 'no-header': !hasHeader,\n zebra: isZebra,\n [className]: className,\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n const content = (\n <div className={cls} {...others}>\n {table}\n </div>\n );\n if (loading) {\n const loadingClassName = `${prefix}table-loading`;\n return <LoadingComponent className={loadingClassName}>{content}</LoadingComponent>;\n }\n\n return content;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Row from '../base/row';\n\nexport default class LockRow extends React.Component {\n static propTypes = {\n ...Row.propTypes,\n };\n\n static contextTypes = {\n onRowMouseEnter: PropTypes.func,\n onRowMouseLeave: PropTypes.func,\n };\n\n static defaultProps = {\n ...Row.defaultProps,\n };\n\n onMouseEnter = (record, index, e) => {\n const { onRowMouseEnter } = this.context;\n const { onMouseEnter } = this.props;\n onRowMouseEnter && onRowMouseEnter(record, index, e);\n onMouseEnter(record, index, e);\n };\n\n onMouseLeave = (record, index, e) => {\n const { onRowMouseLeave } = this.context;\n const { onMouseLeave } = this.props;\n onRowMouseLeave && onRowMouseLeave(record, index, e);\n onMouseLeave(record, index, e);\n };\n\n render() {\n /* eslint-disable no-unused-vars*/\n return (\n <Row {...this.props} onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave} />\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { log } from '../../util';\nimport Row from '../lock/row';\n\nexport default class ExpandedRow extends React.Component {\n static propTypes = {\n ...Row.propTypes,\n };\n\n static defaultProps = {\n ...Row.defaultProps,\n };\n\n static contextTypes = {\n openRowKeys: PropTypes.array,\n expandedRowRender: PropTypes.func,\n expandedRowIndent: PropTypes.array,\n expandedIndexSimulate: PropTypes.bool,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n renderExpandedRow(record, index, colSpan) {\n const { expandedRowRender, expandedRowIndent, openRowKeys, lockType } = this.context;\n\n const { columns, cellRef } = this.props;\n if (expandedRowRender) {\n const { primaryKey, prefix } = this.props,\n leftIndent = expandedRowIndent[0],\n rightIndent = expandedRowIndent[1],\n totalIndent = leftIndent + rightIndent,\n renderCols = number => {\n const ret = [];\n for (let i = 0; i < number; i++) {\n ret.push(\n <td key={i} ref={cell => cellRef(index, i, cell)}>\n &nbsp;\n </td>,\n );\n }\n return ret;\n };\n let content;\n\n if (totalIndent > colSpan && !lockType) {\n log.warning(\"It's not allowed expandedRowIndent is more than the number of columns.\");\n }\n if (leftIndent < columns.length && lockType === 'left') {\n log.warning('expandedRowIndent left is less than the number of left lock columns.');\n }\n if (rightIndent < columns.length && lockType === 'right') {\n log.warning('expandedRowIndent right is less than the number of right lock columns.');\n }\n if (lockType) {\n return openRowKeys.indexOf(record[primaryKey]) > -1 ? (\n <tr className={`${prefix}table-expanded-row`} key={`expanded-${index}`}>\n <td colSpan={colSpan} ref={cell => cellRef(index, 0, cell)}>\n &nbsp;\n </td>\n </tr>\n ) : null;\n }\n content = expandedRowRender(record, index);\n if (!React.isValidElement(content)) {\n content = <div className={`${prefix}table-cell-wrapper`}>{content}</div>;\n }\n return openRowKeys.indexOf(record[primaryKey]) > -1 ? (\n <tr\n className={`${prefix}table-expanded-row`}\n key={`expanded-${record[primaryKey] || index}`}\n >\n {renderCols(leftIndent)}\n <td colSpan={colSpan - totalIndent}>{content}</td>\n {renderCols(rightIndent)}\n </tr>\n ) : null;\n } else {\n return null;\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars*/\n const { record, rowIndex, columns, ...others } = this.props;\n const { expandedIndexSimulate } = this.context;\n\n if (record.__expanded) {\n const expandedIndex = expandedIndexSimulate ? (rowIndex - 1) / 2 : rowIndex;\n return this.renderExpandedRow(record, expandedIndex, columns.length);\n }\n\n const newRowIndex = expandedIndexSimulate ? rowIndex / 2 : rowIndex;\n return <Row {...others} record={record} columns={columns} rowIndex={newRowIndex} />;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Row from '../expanded/row';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class SelectionRow extends React.Component {\n static propTypes = {\n ...Row.propTypes,\n };\n\n static defaultProps = {\n ...Row.defaultProps,\n };\n\n static contextTypes = {\n selectedRowKeys: PropTypes.array,\n };\n\n render() {\n /* eslint-disable no-unused-vars*/\n const { className, record, primaryKey } = this.props;\n const { selectedRowKeys } = this.context;\n const cls = classnames({\n selected: selectedRowKeys.indexOf(record[primaryKey]) > -1,\n [className]: className,\n });\n return <Row {...this.props} className={cls} />;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Row from '../selection/row';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class TreeRow extends React.Component {\n static propTypes = {\n ...Row.propTypes,\n };\n\n static defaultProps = {\n ...Row.defaultProps,\n };\n\n static contextTypes = {\n treeStatus: PropTypes.array,\n openRowKeys: PropTypes.array,\n };\n\n render() {\n /* eslint-disable no-unused-vars*/\n const { className, record, primaryKey, prefix, ...others } = this.props;\n const { treeStatus, openRowKeys } = this.context;\n const cls = classnames({\n hidden: !(treeStatus.indexOf(record[primaryKey]) > -1) && record.__level !== 0,\n [`${prefix}table-row-level-${record.__level}`]: true,\n opened: openRowKeys.indexOf(record[primaryKey]) > -1,\n [className]: className,\n });\n return (\n <Row {...others} record={record} className={cls} primaryKey={primaryKey} prefix={prefix} />\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../../icon';\nimport Button from '../../button';\nimport { KEYCODE } from '../../util';\nimport CellComponent from '../base/cell';\n\nexport default class TreeCell extends React.Component {\n static propTypes = {\n indent: PropTypes.number,\n locale: PropTypes.object,\n ...CellComponent.propTypes,\n };\n\n static defaultProps = {\n ...CellComponent.defaultProps,\n component: 'td',\n indent: 20,\n };\n\n static contextTypes = {\n openTreeRowKeys: PropTypes.array,\n indent: PropTypes.number,\n onTreeNodeClick: PropTypes.func,\n isTree: PropTypes.bool,\n rowSelection: PropTypes.object,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n onTreeNodeClick = (record, e) => {\n e.stopPropagation();\n this.context.onTreeNodeClick(record);\n };\n\n expandedKeydown = (record, e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.keyCode === KEYCODE.ENTER) {\n this.onTreeNodeClick(record, e);\n }\n };\n\n render() {\n const { colIndex, record, prefix, primaryKey, locale, rtl, children } = this.props;\n const { openTreeRowKeys: openRowKeys, indent, isTree, rowSelection, lockType } = this.context;\n const treeArrowNodeIndex = rowSelection ? 1 : 0;\n let firstCellStyle;\n let treeArrowNode;\n if (colIndex === treeArrowNodeIndex) {\n let treeArrowType;\n if (isTree) {\n const paddingType = rtl ? 'paddingRight' : 'paddingLeft';\n firstCellStyle = {\n [paddingType]: indent * (record.__level + 1),\n };\n treeArrowNode = <Icon size=\"xs\" rtl={rtl} className={`${prefix}table-tree-placeholder`} />;\n if (record.children && record.children.length) {\n const hasExpanded = openRowKeys.indexOf(record[primaryKey]) > -1;\n\n treeArrowType = hasExpanded ? 'triangle-down-s' : 'triangle-right-s';\n\n treeArrowNode = (\n <Button.Icon\n className={`${prefix}table-tree-arrow`}\n type=\"secondary\"\n color=\"gray\"\n name={treeArrowType}\n rtl={rtl}\n onClick={e => this.onTreeNodeClick(record, e)}\n onKeyDown={e => this.expandedKeydown(record, e)}\n role=\"button\"\n tabIndex=\"0\"\n aria-expanded={hasExpanded}\n aria-label={hasExpanded ? locale.expanded : locale.folded}\n />\n );\n }\n }\n }\n return (\n <CellComponent {...this.props} innerStyle={firstCellStyle}>\n {((!rtl && lockType !== 'right') || (rtl && lockType !== 'left')) && treeArrowNode}\n {children}\n </CellComponent>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport RowComponent from './tree/row';\nimport CellComponent from './tree/cell';\nimport { statics } from './util';\n\nconst noop = () => {};\n\nexport default function tree(BaseComponent) {\n class TreeTable extends React.Component {\n static TreeRow = RowComponent;\n\n static TreeCell = CellComponent;\n\n static propTypes = {\n /**\n * 默认情况下展开的树形表格,传入了此属性代表tree的展开为受控操作\n */\n openRowKeys: PropTypes.array,\n /**\n * 点击tree展开或者关闭的时候触发的事件\n * @param {Array} openRowKeys tree模式下展开的key\n * @param {String} currentRowKey 当前点击行的key\n * @param {Boolean} opened 当前点击是展开还是收起\n * @param {Object} currentRecord 当前点击行的记录\n */\n onRowOpen: PropTypes.func,\n /**\n * dataSource当中数据的主键,如果给定的数据源中的属性不包含该主键,会造成选择状态全部选中\n */\n primaryKey: PropTypes.string,\n /**\n * 在tree模式下的缩进尺寸, 仅在isTree为true时候有效\n */\n indent: PropTypes.number,\n /**\n * 开启Table的tree模式, 接收的数据格式中包含children则渲染成tree table\n */\n isTree: PropTypes.bool,\n locale: PropTypes.object,\n ...BaseComponent.propTypes,\n };\n\n static defaultProps = {\n ...BaseComponent.defaultProps,\n primaryKey: 'id',\n onRowOpen: noop,\n components: {},\n indent: 12,\n };\n\n static childContextTypes = {\n openTreeRowKeys: PropTypes.array,\n indent: PropTypes.number,\n treeStatus: PropTypes.array,\n onTreeNodeClick: PropTypes.func,\n isTree: PropTypes.bool,\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n openRowKeys: props.openRowKeys || [],\n };\n }\n\n getChildContext() {\n return {\n openTreeRowKeys: this.state.openRowKeys,\n indent: this.props.indent,\n treeStatus: this.getTreeNodeStatus(this.ds),\n onTreeNodeClick: this.onTreeNodeClick,\n isTree: this.props.isTree,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('openRowKeys' in nextProps) {\n const { openRowKeys } = nextProps;\n this.setState({\n openRowKeys,\n });\n }\n }\n\n normalizeDataSource(dataSource) {\n const ret = [];\n const loop = function (dataSource, level) {\n dataSource.forEach(item => {\n item.__level = level;\n ret.push(item);\n if (item.children) {\n loop(item.children, level + 1);\n }\n });\n };\n loop(dataSource, 0);\n this.ds = ret;\n return ret;\n }\n\n getTreeNodeStatus(dataSource = []) {\n const { openRowKeys } = this.state;\n const { primaryKey } = this.props;\n const ret = [];\n\n openRowKeys.forEach(openKey => {\n dataSource.forEach(item => {\n if (item[primaryKey] === openKey) {\n if (item.children) {\n item.children.forEach(child => {\n ret.push(child[primaryKey]);\n });\n }\n }\n });\n });\n return ret;\n }\n\n onTreeNodeClick = record => {\n const { primaryKey } = this.props;\n const id = record[primaryKey];\n const dataSource = this.ds;\n const openRowKeys = [...this.state.openRowKeys];\n const index = openRowKeys.indexOf(id);\n const getChildrenKeyById = function (id) {\n const ret = [id];\n const loop = data => {\n data.forEach(item => {\n ret.push(item[primaryKey]);\n if (item.children) {\n loop(item.children);\n }\n });\n };\n dataSource.forEach(item => {\n if (item[primaryKey] === id) {\n if (item.children) {\n loop(item.children);\n }\n }\n });\n return ret;\n };\n\n if (index > -1) {\n // 不仅要删除当前的openRowKey,还需要删除关联子节点的openRowKey\n const ids = getChildrenKeyById(id);\n ids.forEach(id => {\n const i = openRowKeys.indexOf(id);\n if (i > -1) {\n openRowKeys.splice(i, 1);\n }\n });\n } else {\n openRowKeys.push(id);\n }\n\n if (!('openRowKeys' in this.props)) {\n this.setState({\n openRowKeys,\n });\n }\n this.props.onRowOpen(openRowKeys, id, index === -1, record);\n };\n\n render() {\n /* eslint-disable no-unused-vars, prefer-const */\n let { components, isTree, dataSource, indent, ...others } = this.props;\n\n if (isTree) {\n components = { ...components };\n if (!components.Row) {\n components.Row = RowComponent;\n }\n if (!components.Cell) {\n components.Cell = CellComponent;\n }\n\n dataSource = this.normalizeDataSource(dataSource);\n }\n return <BaseComponent {...others} dataSource={dataSource} components={components} />;\n }\n }\n statics(TreeTable, BaseComponent);\n return TreeTable;\n}\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport HeaderComponent from '../base/header';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class FixedHeader extends React.Component {\n static propTypes = {\n children: PropTypes.any,\n prefix: PropTypes.string,\n className: PropTypes.string,\n colGroup: PropTypes.any,\n };\n\n static contextTypes = {\n getNode: PropTypes.func,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n componentDidMount() {\n this.context.getNode('header', findDOMNode(this));\n }\n\n render() {\n const { prefix, className, colGroup, ...others } = this.props;\n return (\n <div className={className}>\n <div className={`${prefix}table-header-inner`}>\n <table>\n {colGroup}\n <HeaderComponent {...others} prefix={prefix} />\n </table>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport BodyComponent from '../base/body';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class FixedBody extends React.Component {\n static propTypes = {\n children: PropTypes.any,\n prefix: PropTypes.string,\n className: PropTypes.string,\n colGroup: PropTypes.any,\n onScroll: PropTypes.func,\n };\n\n static defaultProps = {\n onScroll: () => {},\n };\n\n static contextTypes = {\n fixedHeader: PropTypes.bool,\n maxBodyHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBodyScroll: PropTypes.func,\n getNode: PropTypes.func,\n };\n\n componentDidMount() {\n const { getNode } = this.context;\n getNode && getNode('body', findDOMNode(this));\n }\n\n onBodyScroll = () => {\n const { onBodyScroll } = this.context;\n onBodyScroll && onBodyScroll();\n this.props.onScroll();\n };\n\n render() {\n const { className, colGroup, ...others } = this.props;\n const { maxBodyHeight, fixedHeader } = this.context;\n const style = {};\n if (fixedHeader) {\n style.maxHeight = maxBodyHeight;\n }\n return (\n <div style={style} className={className} onScroll={this.onBodyScroll}>\n <table>\n {colGroup}\n <BodyComponent {...others} colGroup={colGroup} />\n </table>\n </div>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class FixedWrapper extends React.Component {\n static propTypes = {\n children: PropTypes.any,\n prefix: PropTypes.string,\n colGroup: PropTypes.any,\n wrapperContent: PropTypes.any,\n };\n render() {\n const { children, wrapperContent, prefix } = this.props;\n return (\n <div className={`${prefix}table-inner`}>\n {children}\n {wrapperContent}\n </div>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { dom } from '../util';\nimport HeaderComponent from './fixed/header';\nimport BodyComponent from './fixed/body';\nimport WrapperComponent from './fixed/wrapper';\nimport { statics } from './util';\n\nexport default function fixed(BaseComponent) {\n /** Table */\n class FixedTable extends React.Component {\n static FixedHeader = HeaderComponent;\n static FixedBody = BodyComponent;\n static FixedWrapper = WrapperComponent;\n static propTypes = {\n /**\n * 是否具有表头\n */\n hasHeader: PropTypes.bool,\n /**\n * 表头是否固定,该属性配合maxBodyHeight使用,当内容区域的高度超过maxBodyHeight的时候,在内容区域会出现滚动条\n */\n fixedHeader: PropTypes.bool,\n /**\n * 最大内容区域的高度,在`fixedHeader`为`true`的时候,超过这个高度会出现滚动条\n */\n maxBodyHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n ...BaseComponent.propTypes,\n };\n\n static defaultProps = {\n ...BaseComponent.defaultProps,\n hasHeader: true,\n fixedHeader: false,\n maxBodyHeight: 200,\n components: {},\n refs: {},\n prefix: 'next-',\n };\n\n static childContextTypes = {\n fixedHeader: PropTypes.bool,\n maxBodyHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBodyScroll: PropTypes.func,\n getNode: PropTypes.func,\n };\n\n getChildContext() {\n return {\n fixedHeader: this.props.fixedHeader,\n maxBodyHeight: this.props.maxBodyHeight,\n onBodyScroll: this.onBodyScroll,\n getNode: this.getNode,\n };\n }\n\n componentDidMount() {\n this.adjustFixedHeaderSize();\n }\n\n componentDidUpdate() {\n this.adjustFixedHeaderSize();\n }\n\n adjustFixedHeaderSize() {\n const { hasHeader, fixedHeader, rtl } = this.props;\n const paddingName = rtl ? 'paddingLeft' : 'paddingRight';\n\n if (hasHeader && fixedHeader && !this.props.lockType) {\n if (this.bodyNode.scrollHeight > this.bodyNode.clientHeight) {\n dom.setStyle(this.headerNode, paddingName, dom.scrollbar().width);\n } else {\n dom.setStyle(this.headerNode, paddingName, 0);\n }\n }\n }\n\n getNode = (type, node, lockType) => {\n lockType = lockType ? lockType.charAt(0).toUpperCase() + lockType.substr(1) : '';\n this[`${type}${lockType}Node`] = node;\n if (type === 'header' && !lockType) {\n this.innerHeaderNode = this.headerNode.querySelector('div');\n }\n };\n\n onBodyScroll = () => {\n this.scrollTo(this.bodyNode.scrollLeft, this.bodyNode.scrollTop);\n };\n\n scrollTo(x) {\n if (this.innerHeaderNode) {\n this.innerHeaderNode.scrollLeft = x;\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars, prefer-const */\n let { components, className, prefix, fixedHeader, maxBodyHeight, ...others } = this.props;\n if (fixedHeader) {\n components = { ...components };\n if (!components.Header) {\n components.Header = HeaderComponent;\n }\n if (!components.Body) {\n components.Body = BodyComponent;\n }\n if (!components.Wrapper) {\n components.Wrapper = WrapperComponent;\n }\n className = classnames({\n [`${prefix}table-fixed`]: true,\n [className]: className,\n });\n }\n return (\n <BaseComponent {...others} components={components} className={className} prefix={prefix} />\n );\n }\n }\n statics(FixedTable, BaseComponent);\n return FixedTable;\n}\n","import React, { Children } from 'react';\nimport PropTypes from 'prop-types';\nimport Checkbox from '../checkbox';\nimport Radio from '../radio';\nimport { func, log } from '../util';\nimport zhCN from '../locale/zh-cn';\nimport SelectionRow from './selection/row';\nimport Col from './column';\nimport { statics } from './util';\n\nconst { makeChain } = func;\n\nconst unique = (arr, key = 'this') => {\n const temp = {};\n const ret = [];\n arr.forEach(item => {\n let value;\n if (key === 'this') {\n value = item;\n } else {\n value = item[key];\n }\n if (!temp[value]) {\n ret.push(item);\n temp[value] = true;\n }\n });\n return ret;\n};\n\nexport default function selection(BaseComponent) {\n /** Table */\n class SelectionTable extends React.Component {\n static SelectionRow = SelectionRow;\n\n static propTypes = {\n /**\n * 是否启用选择模式\n * @property {Function} getProps `Function(record, index)=>Object` 获取selection的默认属性\n * @property {Function} onChange `Function(selectedRowKeys:Array, records:Array)` 选择改变的时候触发的事件,**注意:** 其中records只会包含当前dataSource的数据,很可能会小于selectedRowKeys的长度。\n * @property {Function} onSelect `Function(selected:Boolean, record:Object, records:Array)` 用户手动选择/取消选择某行的回调\n * @property {Function} onSelectAll `Function(selected:Boolean, records:Array)` 用户手动选择/取消选择所有行的回调\n * @property {Array} selectedRowKeys 设置了此属性,将rowSelection变为受控状态,接收值为该行数据的primaryKey的值\n * @property {String} mode 选择selection的模式, 可选值为`single`, `multiple`,默认为`multiple`\n * @property {Function} columnProps `Function()=>Object` 选择列 的props,例如锁列、对齐等,可使用`Table.Column` 的所有参数\n * @property {Function} titleProps `Function()=>Object` 选择列 表头的props,仅在 `multiple` 模式下生效\n * @property {Function} titleAddons `Function()=>Node` 选择列 表头添加的元素,在`single` `multiple` 下都生效\n */\n rowSelection: PropTypes.object,\n primaryKey: PropTypes.string,\n dataSource: PropTypes.array,\n entireDataSource: PropTypes.array,\n ...BaseComponent.propTypes,\n };\n\n static defaultProps = {\n ...BaseComponent.defaultProps,\n locale: zhCN.Table,\n primaryKey: 'id',\n prefix: 'next-',\n };\n\n static contextTypes = {\n listHeader: PropTypes.any,\n };\n\n static childContextTypes = {\n rowSelection: PropTypes.object,\n selectedRowKeys: PropTypes.array,\n };\n\n constructor(props, context) {\n super(props, context);\n this.state = {\n selectedRowKeys:\n props.rowSelection && 'selectedRowKeys' in props.rowSelection\n ? props.rowSelection.selectedRowKeys || []\n : [],\n };\n }\n\n getChildContext() {\n return {\n rowSelection: this.props.rowSelection,\n selectedRowKeys: this.state.selectedRowKeys,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.rowSelection && 'selectedRowKeys' in nextProps.rowSelection) {\n const selectedRowKeys = nextProps.rowSelection.selectedRowKeys || [];\n this.setState({\n selectedRowKeys,\n });\n }\n }\n\n normalizeChildren = (children) => {\n const { prefix, rowSelection } = this.props;\n if (rowSelection) {\n children = Children.map(children, (child, index) => {\n return React.cloneElement(child, {\n key: index,\n });\n });\n\n const attrs = (rowSelection.columnProps && rowSelection.columnProps()) || {};\n\n children.unshift(\n <Col\n key=\"selection\"\n title={this.renderSelectionHeader}\n cell={this.renderSelectionBody}\n width={44}\n className={`${prefix}table-selection`}\n __normalized\n {...attrs}\n />,\n );\n return children;\n }\n return children;\n }\n\n renderSelectionHeader = () => {\n const onChange = this.selectAllRow;\n const attrs = {};\n const { rowSelection, primaryKey, dataSource, entireDataSource, locale } = this.props;\n const { selectedRowKeys } = this.state;\n const mode = rowSelection.mode ? rowSelection.mode : 'multiple';\n\n let checked = !!selectedRowKeys.length;\n let indeterminate = false;\n\n const source = entireDataSource || dataSource;\n\n this.flatDataSource(source)\n .filter((record, index) => {\n if (!rowSelection.getProps) {\n return true;\n } else {\n return !(rowSelection.getProps(record, index) || {}).disabled;\n }\n })\n .map(record => record[primaryKey])\n .forEach(id => {\n if (selectedRowKeys.indexOf(id) === -1) {\n checked = false;\n } else {\n indeterminate = true;\n }\n });\n attrs.onClick = makeChain(e => {\n e.stopPropagation();\n }, attrs.onClick);\n\n const userAttrs = (rowSelection.titleProps && rowSelection.titleProps()) || {};\n\n if (checked) {\n indeterminate = false;\n }\n return [\n mode === 'multiple' ? (\n <Checkbox\n key=\"_total\"\n indeterminate={indeterminate}\n aria-label={locale.selectAll}\n checked={checked}\n onChange={onChange}\n {...attrs}\n {...userAttrs}\n />\n ) : null,\n rowSelection.titleAddons && rowSelection.titleAddons(),\n ];\n };\n\n renderSelectionBody = (value, index, record) => {\n const { rowSelection, primaryKey } = this.props;\n const { selectedRowKeys } = this.state;\n const mode = rowSelection.mode ? rowSelection.mode : 'multiple';\n const checked = selectedRowKeys.indexOf(record[primaryKey]) > -1;\n const onChange = this.selectOneRow.bind(this, index, record);\n const attrs = rowSelection.getProps ? rowSelection.getProps(record, index) || {} : {};\n\n attrs.onClick = makeChain(e => {\n e.stopPropagation();\n }, attrs.onClick);\n return mode === 'multiple' ? (\n <Checkbox checked={checked} onChange={onChange} {...attrs} />\n ) : (\n <Radio checked={checked} onChange={onChange} {...attrs} />\n );\n };\n\n selectAllRow = (checked, e) => {\n const ret = [...this.state.selectedRowKeys];\n const { rowSelection, primaryKey, dataSource, entireDataSource } = this.props;\n const { selectedRowKeys } = this.state;\n const { getProps } = rowSelection;\n let attrs = {};\n let records = [];\n\n const source = entireDataSource || dataSource;\n\n this.flatDataSource(source).forEach((record, index) => {\n const id = record[primaryKey];\n if (getProps) {\n attrs = getProps(record, index) || {};\n }\n // 反选和全选的时候不要丢弃禁用项的选中状态\n if (checked && (!attrs.disabled || selectedRowKeys.indexOf(id) > -1)) {\n ret.push(id);\n records.push(record);\n } else if (attrs.disabled && selectedRowKeys.indexOf(id) > -1) {\n ret.push(id);\n records.push(record);\n } else {\n const i = ret.indexOf(id);\n i > -1 && ret.splice(i, 1);\n }\n });\n\n records = unique(records, primaryKey);\n if (typeof rowSelection.onSelectAll === 'function') {\n rowSelection.onSelectAll(checked, records);\n }\n this.triggerSelection(rowSelection, unique(ret), records);\n e.stopPropagation();\n };\n\n selectOneRow = (index, record, checked, e) => {\n let selectedRowKeys = [...this.state.selectedRowKeys];\n let i;\n const { primaryKey, rowSelection, dataSource } = this.props;\n const mode = rowSelection.mode ? rowSelection.mode : 'multiple';\n const id = record[primaryKey];\n if (!id) {\n log.warning(`Can't get value from record using given ${primaryKey} as primaryKey.`);\n }\n if (mode === 'multiple') {\n if (checked) {\n selectedRowKeys.push(id);\n } else {\n i = selectedRowKeys.indexOf(id);\n selectedRowKeys.splice(i, 1);\n }\n } else if (checked) {\n selectedRowKeys = [id];\n }\n const records = unique(\n dataSource.filter(item => selectedRowKeys.indexOf(item[primaryKey]) > -1),\n primaryKey,\n );\n if (typeof rowSelection.onSelect === 'function') {\n rowSelection.onSelect(checked, record, records);\n }\n\n this.triggerSelection(rowSelection, selectedRowKeys, records);\n\n e.stopPropagation();\n }\n\n triggerSelection = (rowSelection, selectedRowKeys, records) => {\n if (!('selectedRowKeys' in rowSelection)) {\n this.setState({\n selectedRowKeys,\n });\n }\n if (typeof rowSelection.onChange === 'function') {\n rowSelection.onChange(selectedRowKeys, records);\n }\n }\n\n flatDataSource = (dataSource) => {\n let ret = dataSource;\n const { listHeader } = this.context;\n\n if (listHeader) {\n ret = [];\n const { hasChildrenSelection, hasSelection } = listHeader;\n dataSource.forEach(item => {\n const { children } = item;\n // 如果需要渲染selection才将这条记录插入到dataSource\n // 或者没有孩子节点\n if (hasSelection) {\n ret.push(item);\n }\n if (children && hasChildrenSelection) {\n ret = ret.concat(children);\n }\n });\n }\n return ret;\n }\n\n render() {\n /* eslint-disable prefer-const */\n let { rowSelection, components, children, ...others } = this.props;\n\n if (rowSelection) {\n children = this.normalizeChildren(children);\n components = { ...components };\n components.Row = components.Row || SelectionRow;\n }\n return (\n <BaseComponent {...others} components={components}>\n {children}\n </BaseComponent>\n );\n }\n }\n statics(SelectionTable, BaseComponent);\n return SelectionTable;\n}\n","import React, { Children } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Button from '../button';\nimport { KEYCODE } from '../util';\nimport RowComponent from './expanded/row';\nimport Col from './column';\nimport { statics } from './util';\n\nconst noop = () => {};\n\nexport default function expanded(BaseComponent) {\n /** Table */\n class ExpandedTable extends React.Component {\n static ExpandedRow = RowComponent;\n\n static propTypes = {\n /**\n * 额外渲染行的渲染函数\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @returns {Element}\n */\n expandedRowRender: PropTypes.func,\n /**\n * 额外渲染行的缩进\n */\n expandedRowIndent: PropTypes.array,\n /**\n * 默认情况下展开的渲染行或者Tree, 传入此属性为受控状态\n */\n openRowKeys: PropTypes.array,\n /**\n * 是否显示点击展开额外渲染行的+号按钮\n */\n hasExpandedRowCtrl: PropTypes.bool,\n /**\n * 设置额外渲染行的属性\n */\n getExpandedColProps: PropTypes.func,\n /**\n * 在额外渲染行或者Tree展开或者收起的时候触发的事件\n * @param {Array} openRowKeys 展开的渲染行的key\n * @param {String} currentRowKey 当前点击的渲染行的key\n * @param {Boolean} expanded 当前点击是展开还是收起\n * @param {Object} currentRecord 当前点击额外渲染行的记录\n */\n onRowOpen: PropTypes.func,\n /**\n * 点击额外渲染行触发的事件\n * @param {Object} record 该行所对应的数据\n * @param {Number} index 该行所对应的序列\n * @param {Event} e DOM事件对象\n */\n onExpandedRowClick: PropTypes.func,\n locale: PropTypes.object,\n ...BaseComponent.propTypes,\n };\n\n static defaultProps = {\n ...BaseComponent.defaultProps,\n getExpandedColProps: noop,\n onRowOpen: noop,\n hasExpandedRowCtrl: true,\n components: {},\n expandedRowIndent: [1, 0],\n prefix: 'next-',\n };\n\n static childContextTypes = {\n openRowKeys: PropTypes.array,\n expandedRowRender: PropTypes.func,\n expandedIndexSimulate: PropTypes.bool,\n expandedRowIndent: PropTypes.array,\n };\n\n state = {\n openRowKeys: this.props.openRowKeys || [],\n };\n\n getChildContext() {\n return {\n openRowKeys: this.state.openRowKeys,\n expandedRowRender: this.props.expandedRowRender,\n expandedIndexSimulate: this.props.expandedIndexSimulate,\n expandedRowIndent: this.props.expandedRowIndent,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('openRowKeys' in nextProps) {\n const { openRowKeys } = nextProps;\n this.setState({\n openRowKeys,\n });\n }\n }\n\n expandedKeydown = (value, record, index, e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.keyCode === KEYCODE.ENTER) {\n this.onExpandedClick(value, record, index, e);\n }\n };\n\n renderExpandedCell = (value, index, record) => {\n const { getExpandedColProps, prefix, locale } = this.props;\n\n const { openRowKeys } = this.state;\n const { primaryKey } = this.props;\n const hasExpanded = openRowKeys.indexOf(record[primaryKey]) > -1;\n const switchNode = hasExpanded ? <Button.Icon type=\"secondary\" color=\"gray\" name=\"triangle-down-s\" /> : <Button.Icon type=\"secondary\" color=\"gray\" name=\"triangle-right-s\" />;\n const attrs = getExpandedColProps(record, index) || {};\n const cls = classnames({\n [`${prefix}table-expanded-ctrl`]: true,\n disabled: attrs.disabled,\n [attrs.className]: attrs.className,\n });\n\n if (!attrs.disabled) {\n attrs.onClick = this.onExpandedClick.bind(this, value, record, index);\n }\n return (\n <span\n {...attrs}\n role=\"button\"\n tabIndex=\"0\"\n onKeyDown={this.expandedKeydown.bind(this, value, record, index)}\n aria-label={hasExpanded ? locale.expanded : locale.folded}\n aria-expanded={hasExpanded}\n className={cls}\n >\n {switchNode}\n </span>\n );\n };\n\n onExpandedClick(value, record, i, e) {\n const openRowKeys = [...this.state.openRowKeys];\n const { primaryKey } = this.props;\n const id = record[primaryKey];\n const index = openRowKeys.indexOf(id);\n if (index > -1) {\n openRowKeys.splice(index, 1);\n } else {\n openRowKeys.push(id);\n }\n if (!('openRowKeys' in this.props)) {\n this.setState({\n openRowKeys,\n });\n }\n this.props.onRowOpen(openRowKeys, id, index === -1, record);\n e.stopPropagation();\n }\n\n normalizeChildren(children) {\n const toArrayChildren = Children.map(children, (child, index) => (\n React.cloneElement(child, {\n key: index,\n })\n ));\n const { prefix } = this.props;\n toArrayChildren.unshift(\n <Col\n title=\"\"\n key=\"expanded\"\n cell={this.renderExpandedCell}\n width={44}\n className={`${prefix}table-expanded`}\n __normalized\n />,\n );\n return toArrayChildren;\n }\n\n normalizeDataSource(ds) {\n const ret = [];\n ds.forEach(item => {\n const itemCopy = { ...item };\n itemCopy.__expanded = true;\n ret.push(item, itemCopy);\n });\n return ret;\n }\n\n render() {\n /* eslint-disable no-unused-vars, prefer-const */\n let {\n components,\n openRowKeys,\n expandedRowRender,\n hasExpandedRowCtrl,\n children,\n dataSource,\n getExpandedColProps,\n expandedRowIndent,\n onRowOpen,\n onExpandedRowClick,\n ...others\n } = this.props;\n if (expandedRowRender && !components.Row) {\n components = { ...components };\n components.Row = RowComponent;\n dataSource = this.normalizeDataSource(dataSource);\n }\n if (expandedRowRender && hasExpandedRowCtrl) {\n children = this.normalizeChildren(children);\n }\n\n return (\n <BaseComponent {...others} dataSource={dataSource} components={components}>\n {children}\n </BaseComponent>\n );\n }\n }\n statics(ExpandedTable, BaseComponent);\n return ExpandedTable;\n}\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport BodyComponent from '../base/body';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class VirtualBody extends React.Component {\n static propTypes = {\n children: PropTypes.any,\n prefix: PropTypes.string,\n className: PropTypes.string,\n colGroup: PropTypes.any,\n };\n\n static contextTypes = {\n maxBodyHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBodyScroll: PropTypes.func,\n onVirtualScroll: PropTypes.func,\n onLockBodyScroll: PropTypes.func,\n bodyHeight: PropTypes.number,\n innerTop: PropTypes.number,\n getNode: PropTypes.func,\n getBodyNode: PropTypes.func,\n getLockNode: PropTypes.func,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n componentDidMount() {\n const bodyNode = findDOMNode(this);\n // // for fixed\n this.context.getNode('body', bodyNode);\n // for virtual\n this.context.getBodyNode(bodyNode, this.context.lockType);\n // for lock\n this.context.getLockNode('body', bodyNode, this.context.lockType);\n }\n\n tableRef = table => {\n this.tableNode = table;\n };\n\n virtualScrollRef = virtualScroll => {\n this.virtualScrollNode = virtualScroll;\n };\n\n onScroll = () => {\n // for fixed\n this.context.onBodyScroll();\n // for lock\n this.context.onLockBodyScroll();\n // for virtual\n this.context.onVirtualScroll();\n };\n\n render() {\n const { prefix, className, colGroup, ...others } = this.props;\n const { maxBodyHeight, bodyHeight, innerTop } = this.context;\n return (\n <div style={{ maxHeight: maxBodyHeight }} className={className} onScroll={this.onScroll}>\n <div\n style={{\n height: bodyHeight,\n overflow: 'hidden',\n position: 'relative',\n }}\n ref={this.virtualScrollRef}\n >\n <div\n style={{\n height: '100%',\n position: 'relative',\n transform: `translateY(${innerTop}px)`,\n }}\n >\n <table ref={this.tableRef}>\n {colGroup}\n <BodyComponent {...others} prefix={prefix} />\n </table>\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { dom } from '../util';\nimport VirtualBody from './virtual/body';\nimport { statics } from './util';\n\nconst noop = () => {};\nexport default function virtual(BaseComponent) {\n class VirtualTable extends React.Component {\n static VirtualBody = VirtualBody;\n static propTypes = {\n /**\n * 是否开启虚拟滚动\n */\n useVirtual: PropTypes.bool,\n /**\n * 设置行高\n */\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n maxBodyHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n primaryKey: PropTypes.string,\n dataSource: PropTypes.array,\n /**\n * 在内容区域滚动的时候触发的函数\n */\n onBodyScroll: PropTypes.func,\n ...BaseComponent.propTypes,\n };\n\n static defaultProps = {\n ...BaseComponent.defaultProps,\n primaryKey: 'id',\n rowHeight: noop,\n maxBodyHeight: 200,\n components: {},\n prefix: 'next-',\n onBodyScroll: noop,\n };\n\n static childContextTypes = {\n onVirtualScroll: PropTypes.func,\n bodyHeight: PropTypes.number,\n innerTop: PropTypes.number,\n getBodyNode: PropTypes.func,\n getTableInstanceForVirtual: PropTypes.func,\n rowSelection: PropTypes.object,\n };\n\n state = {\n rowHeight: this.props.rowHeight,\n scrollToRow: this.props.scrollToRow,\n height: this.props.maxBodyHeight,\n };\n\n getChildContext() {\n return {\n onVirtualScroll: this.onScroll,\n bodyHeight: this.computeBodyHeight(),\n innerTop: this.computeInnerTop(),\n getBodyNode: this.getBodyNode,\n getTableInstanceForVirtual: this.getTableInstance,\n rowSelection: this.rowSelection,\n };\n }\n\n UNSAFE_componentWillMount() {\n const { useVirtual, dataSource } = this.props;\n\n this.hasVirtualData = useVirtual && dataSource && dataSource.length > 0;\n }\n\n componentDidMount() {\n if (this.hasVirtualData) {\n this.lastScrollTop = this.bodyNode.scrollTop;\n }\n\n this.adjustScrollTop();\n this.adjustSize();\n this.reComputeSize();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { useVirtual, dataSource } = nextProps;\n\n this.hasVirtualData = useVirtual && dataSource && dataSource.length > 0;\n\n if ('maxBodyHeight' in nextProps) {\n if (this.state.height !== nextProps.maxBodyHeight) {\n this.setState({\n height: nextProps.maxBodyHeight,\n });\n }\n }\n\n if ('scrollToRow' in nextProps) {\n this.setState({\n scrollToRow: nextProps.scrollToRow,\n });\n }\n\n if (this.state.rowHeight && 'rowHeight' in nextProps) {\n const row = this.getRowNode();\n const rowClientHeight = row && row.clientHeight;\n if (rowClientHeight && rowClientHeight !== this.state.rowHeight) {\n this.setState({\n rowHeight: rowClientHeight,\n });\n }\n }\n }\n\n componentDidUpdate() {\n this.adjustScrollTop();\n this.adjustSize();\n this.reComputeSize();\n }\n\n reComputeSize() {\n const { rowHeight } = this.state;\n if (typeof rowHeight === 'function' && this.hasVirtualData) {\n const row = this.getRowNode();\n const rowClientHeight = row && row.clientHeight;\n if (rowClientHeight !== this.state.rowHeight) {\n this.setState({\n rowHeight: rowClientHeight,\n });\n }\n }\n }\n\n computeBodyHeight() {\n const { rowHeight } = this.state;\n const { dataSource } = this.props;\n if (typeof rowHeight === 'function') {\n return 0;\n }\n return dataSource.length * rowHeight;\n }\n\n computeInnerTop() {\n const { rowHeight } = this.state;\n if (typeof rowHeight === 'function') {\n return 0;\n }\n return this.start * rowHeight;\n }\n\n getVisibleRange(ExpectStart) {\n const { height, rowHeight } = this.state;\n const len = this.props.dataSource.length;\n\n let end;\n let visibleCount = 0;\n let start = 0;\n if (typeof rowHeight === 'function') {\n // try get cell height;\n end = 1;\n } else {\n visibleCount = parseInt(height / rowHeight, 10);\n\n if (typeof ExpectStart === 'number') {\n start = ExpectStart < len ? ExpectStart : 0;\n }\n\n end = Math.min(+start + 1 + visibleCount + 10, len);\n }\n this.end = end;\n this.visibleCount = visibleCount;\n return {\n start,\n end,\n };\n }\n\n adjustScrollTop() {\n if (this.hasVirtualData) {\n this.bodyNode.scrollTop =\n (this.lastScrollTop % this.state.rowHeight) +\n this.state.rowHeight * this.state.scrollToRow;\n }\n }\n\n adjustSize() {\n if (this.hasVirtualData) {\n const body = this.bodyNode;\n const virtualScrollNode = body.querySelector('div');\n const { clientHeight, clientWidth } = body;\n\n const { tableInc } = this;\n const tableNode = findDOMNode(tableInc);\n const { prefix } = this.props;\n const headerNode = tableNode.querySelector(`.${prefix}table-header table`);\n const headerClientWidth = headerNode && headerNode.clientWidth;\n\n if (clientWidth < headerClientWidth) {\n dom.setStyle(virtualScrollNode, 'min-width', headerClientWidth);\n const leftNode = this.bodyLeftNode;\n const rightNode = this.bodyRightNode;\n leftNode && dom.setStyle(leftNode, 'max-height', clientHeight);\n rightNode && dom.setStyle(rightNode, 'max-height', clientHeight);\n this.hasScrollbar = true;\n } else {\n dom.setStyle(virtualScrollNode, 'min-width', 'auto');\n this.hasScrollbar = false;\n }\n }\n }\n\n onScroll = () => {\n // 避免横向滚动带来的性能问题\n const { scrollTop } = this.bodyNode;\n if (scrollTop === this.lastScrollTop) {\n return;\n }\n const start = this.computeScrollToRow(scrollTop);\n if (!('scrollToRow' in this.props)) {\n this.setState({\n scrollToRow: start,\n });\n }\n this.props.onBodyScroll(start);\n this.lastScrollTop = scrollTop;\n };\n\n computeScrollToRow(offset) {\n const { rowHeight } = this.state;\n const start = parseInt(offset / rowHeight);\n this.start = start;\n return start;\n }\n\n getBodyNode = (node, lockType) => {\n lockType = lockType ? lockType.charAt(0).toUpperCase() + lockType.substr(1) : '';\n this[`body${lockType}Node`] = node;\n };\n\n getTableInstance = (type, instance) => {\n type = type ? type.charAt(0).toUpperCase() + type.substr(1) : '';\n this[`table${type}Inc`] = instance;\n };\n\n getRowNode() {\n try {\n // in case of finding an unmounted component due to cached data\n // need to clear refs of this.tableInc when dataSource Changed\n // use try catch for temporary\n return findDOMNode(this.tableInc.getRowRef(0));\n } catch (error) {\n return null;\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars, prefer-const */\n let {\n useVirtual,\n components,\n dataSource,\n fixedHeader,\n rowHeight,\n scrollToRow,\n onBodyScroll,\n ...others\n } = this.props;\n\n const entireDataSource = dataSource;\n\n this.rowSelection = this.props.rowSelection;\n if (this.hasVirtualData) {\n components = { ...components };\n const { start, end } = this.getVisibleRange(this.state.scrollToRow);\n dataSource = dataSource.slice(start, end);\n\n if (!components.Body) {\n components.Body = VirtualBody;\n }\n fixedHeader = true;\n }\n\n return (\n <BaseComponent\n {...others}\n dataSource={dataSource}\n entireDataSource={entireDataSource}\n components={components}\n fixedHeader={fixedHeader}\n />\n );\n }\n }\n statics(VirtualTable, BaseComponent);\n return VirtualTable;\n}\n","import React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport FixedBody from '../fixed/body';\n\n/* eslint-disable react/prefer-stateless-function */\nexport default class LockBody extends React.Component {\n static propTypes = {\n ...FixedBody.propTypes,\n };\n\n static contextTypes = {\n ...FixedBody.contextTypes,\n getLockNode: PropTypes.func,\n onLockBodyScroll: PropTypes.func,\n onLockBodyWheel: PropTypes.func,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n componentDidMount() {\n this.context.getLockNode('body', findDOMNode(this), this.context.lockType);\n }\n\n onBodyScroll = () => {\n this.context.onLockBodyScroll();\n };\n\n onBodyWheel = e => {\n this.context.onLockBodyWheel(e);\n };\n\n render() {\n return <FixedBody {...this.props} onScroll={this.onBodyScroll} onWheel={this.onBodyWheel} />;\n }\n}\n","import { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport FixedHeader from '../fixed/header';\n\nexport default class LockHeader extends FixedHeader {\n static propTypes = {\n ...FixedHeader.propTypes,\n };\n\n static contextTypes = {\n ...FixedHeader.contextTypes,\n getLockNode: PropTypes.func,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n componentDidMount() {\n const { getNode, getLockNode } = this.context;\n getNode && getNode('header', findDOMNode(this), this.context.lockType);\n getLockNode && getLockNode('header', findDOMNode(this), this.context.lockType);\n }\n}\n","import React, { Children } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport shallowElementEquals from 'shallow-element-equals';\nimport { dom, log, obj, events } from '../util';\nimport LockRow from './lock/row';\nimport LockBody from './lock/body';\nimport LockHeader from './lock/header';\nimport LockWrapper from './fixed/wrapper';\nimport { statics } from './util';\n\nexport default function lock(BaseComponent) {\n /** Table */\n class LockTable extends React.Component {\n static LockRow = LockRow;\n\n static LockBody = LockBody;\n\n static LockHeader = LockHeader;\n\n static propTypes = {\n scrollToCol: PropTypes.number,\n /**\n * 指定滚动到某一行,仅在`useVirtual`的时候生效\n */\n scrollToRow: PropTypes.number,\n ...BaseComponent.propTypes,\n };\n\n static defaultProps = {\n ...BaseComponent.defaultProps,\n };\n\n static childContextTypes = {\n getTableInstance: PropTypes.func,\n getLockNode: PropTypes.func,\n onLockBodyScroll: PropTypes.func,\n onLockBodyWheel: PropTypes.func,\n onRowMouseEnter: PropTypes.func,\n onRowMouseLeave: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n this.lockLeftChildren = [];\n this.lockRightChildren = [];\n }\n\n getChildContext() {\n return {\n getTableInstance: this.getTableInstance,\n getLockNode: this.getNode,\n onLockBodyWheel: this.onLockBodyWheel,\n onLockBodyScroll: this.onLockBodyScroll,\n onRowMouseEnter: this.onRowMouseEnter,\n onRowMouseLeave: this.onRowMouseLeave,\n };\n }\n\n componentDidMount() {\n this.adjustSize = this.adjustSize.bind(this);\n\n this.adjustSize();\n this.scroll();\n\n events.on(window, 'resize', this.adjustSize);\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if (nextProps.pure) {\n const isEqual = shallowElementEquals(nextProps, this.props);\n return !(isEqual && obj.shallowEqual(nextContext, this.context));\n }\n\n return true;\n }\n\n UNSAFE_componentWillUpdate() {\n this._isLock = false;\n }\n\n componentDidUpdate() {\n this.adjustSize();\n }\n\n componentWillUnmount() {\n events.off(window, 'resize', this.adjustSize);\n }\n\n normalizeChildrenState(props) {\n let { children } = props;\n children = this.normalizeChildren(children);\n const splitChildren = this.splitFromNormalizeChildren(children);\n const { lockLeftChildren, lockRightChildren } = splitChildren;\n return {\n lockLeftChildren,\n lockRightChildren,\n children: this.mergeFromSplitLockChildren(splitChildren),\n };\n }\n\n // 将React结构化数据提取props转换成数组\n normalizeChildren(children) {\n let isLock = false;\n const getChildren = children => {\n const ret = [];\n Children.forEach(children, child => {\n if (child) {\n const props = { ...child.props };\n if ([true, 'left', 'right'].indexOf(props.lock) > -1) {\n isLock = true;\n if (!('width' in props)) {\n log.warning(`Should config width for lock column named [ ${props.dataIndex} ].`);\n }\n }\n ret.push(props);\n if (child.props.children) {\n props.children = getChildren(child.props.children);\n }\n }\n });\n return ret;\n };\n const ret = getChildren(children);\n ret.forEach(child => {\n // 为自定义的列特殊处理\n if (child.__normalized && isLock) {\n // users can set lock type for column selection now, so its origin lock type comes first\n child.lock = child.lock || 'left';\n delete child.__normalized;\n }\n });\n this._isLock = isLock;\n return ret;\n }\n\n // 从数组中分离出lock的列和正常的列\n splitFromNormalizeChildren(children) {\n const originChildren = deepCopy(children);\n const lockLeftChildren = deepCopy(children);\n const lockRightChildren = deepCopy(children);\n const loop = (lockChildren, condition) => {\n const ret = [];\n lockChildren.forEach(child => {\n if (child.children) {\n const res = loop(child.children, condition);\n if (!res.length) {\n ret.push(child);\n }\n } else {\n const order = condition(child);\n if (!order) {\n ret.push(child);\n }\n }\n });\n ret.forEach(res => {\n const index = lockChildren.indexOf(res);\n lockChildren.splice(index, 1);\n });\n return lockChildren;\n };\n loop(lockLeftChildren, child => {\n if (child.lock === true || child.lock === 'left') {\n return 'left';\n }\n });\n loop(lockRightChildren, child => {\n if (child.lock === 'right') {\n return 'right';\n }\n });\n loop(originChildren, child => {\n return child.lock !== true && child.lock !== 'left' && child.lock !== 'right';\n });\n return {\n lockLeftChildren,\n lockRightChildren,\n originChildren,\n };\n }\n\n // 将左侧的锁列树和中间的普通树及右侧的锁列树进行合并\n mergeFromSplitLockChildren(splitChildren) {\n const { lockLeftChildren, lockRightChildren } = splitChildren;\n let { originChildren } = splitChildren;\n Array.prototype.unshift.apply(originChildren, lockLeftChildren);\n originChildren = originChildren.concat(lockRightChildren);\n return originChildren;\n }\n\n getTableInstance = (type, instance) => {\n type = type ? type.charAt(0).toUpperCase() + type.substr(1) : '';\n this[`table${type}Inc`] = instance;\n };\n\n getNode = (type, node, lockType) => {\n lockType = lockType ? lockType.charAt(0).toUpperCase() + lockType.substr(1) : '';\n this[`${type}${lockType}Node`] = node;\n if (type === 'header' && !this.innerHeaderNode && !lockType) {\n this.innerHeaderNode = this.headerNode.querySelector('div');\n }\n };\n\n onRowMouseEnter = (record, index) => {\n if (this.isLock()) {\n const row = this.getRowNode(index);\n const leftRow = this.getRowNode(index, 'left');\n const rightRow = this.getRowNode(index, 'right');\n [row, leftRow, rightRow].forEach(row => {\n row && dom.addClass(row, 'hovered');\n });\n }\n };\n\n onRowMouseLeave = (record, index) => {\n if (this.isLock()) {\n const row = this.getRowNode(index);\n const leftRow = this.getRowNode(index, 'left');\n const rightRow = this.getRowNode(index, 'right');\n [row, leftRow, rightRow].forEach(row => {\n row && dom.removeClass(row, 'hovered');\n });\n }\n };\n\n scroll() {\n const { scrollToCol = 0, scrollToRow = 0 } = this.props;\n if (!scrollToCol && !scrollToRow) {\n return;\n }\n const colCellNode = this.getCellNode(0, scrollToCol);\n const rowCellNode = this.getCellNode(scrollToRow, 0);\n const bodyNodeOffset = this.bodyNode.getBoundingClientRect();\n if (colCellNode) {\n const cellNodeoffset = colCellNode.getBoundingClientRect();\n const scrollLeft = cellNodeoffset.left - bodyNodeOffset.left;\n this.bodyNode.scrollLeft = scrollLeft;\n }\n if (rowCellNode) {\n const cellNodeoffset = rowCellNode.getBoundingClientRect();\n const scrollTop = cellNodeoffset.top - bodyNodeOffset.top;\n this.bodyNode.scrollTop = scrollTop;\n }\n }\n\n onLockBodyWheel = e => {\n const y = e.deltaY;\n const x = e.deltaX;\n const thresholdX = 15;\n const safeScrollX = x > -thresholdX && x < thresholdX;\n if (this.isLock()) {\n const lockRightBody = this.bodyRightNode;\n const lockLeftBody = this.bodyLeftNode;\n const scrollNode = this.bodyNode;\n const { scrollTop, clientHeight, scrollHeight } = scrollNode;\n\n if (lockLeftBody) {\n lockLeftBody.scrollTop = y;\n }\n if (lockRightBody) {\n lockRightBody.scrollTop = y;\n }\n scrollNode.scrollTop = scrollTop + y;\n const { scrollTop: newScrollTop } = scrollNode;\n if (newScrollTop + clientHeight < scrollHeight && newScrollTop && safeScrollX) {\n e.preventDefault();\n }\n }\n };\n\n onLockBodyScroll = () => {\n if (this.isLock()) {\n const { rtl } = this.props;\n const lockRightBody = this.bodyRightNode;\n const lockLeftBody = this.bodyLeftNode;\n const lockRightTable = rtl ? this.getWrapperNode('left') : this.getWrapperNode('right');\n const lockLeftTable = rtl ? this.getWrapperNode('right') : this.getWrapperNode('left');\n const shadowClassName = 'shadow';\n\n const x = this.bodyNode.scrollLeft;\n const y = this.bodyNode.scrollTop;\n\n if (lockLeftBody) {\n lockLeftBody.scrollTop = y;\n }\n if (lockRightBody) {\n lockRightBody.scrollTop = y;\n }\n if (x === 0) {\n lockLeftTable && dom.removeClass(lockLeftTable, shadowClassName);\n lockRightTable && dom.addClass(lockRightTable, shadowClassName);\n } else if (x === this.bodyNode.scrollWidth - this.bodyNode.clientWidth) {\n lockLeftTable && dom.addClass(lockLeftTable, shadowClassName);\n lockRightTable && dom.removeClass(lockRightTable, shadowClassName);\n } else {\n lockLeftTable && dom.addClass(lockLeftTable, shadowClassName);\n lockRightTable && dom.addClass(lockRightTable, shadowClassName);\n }\n }\n };\n\n // Table处理过后真实的lock状态\n isLock() {\n return this.lockLeftChildren.length || this.lockRightChildren.length;\n }\n\n // 用户设置的lock状态\n isOriginLock() {\n return this._isLock;\n }\n\n adjustSize() {\n if (!this.adjustIfTableNotNeedLock()) {\n this.adjustHeaderSize();\n this.adjustBodySize();\n this.adjustCellSize();\n this.onLockBodyScroll();\n }\n }\n\n removeLockTable() {\n const lockLeftLen = this.lockLeftChildren.length;\n const lockRightLen = this.lockRightChildren.length;\n\n if (lockLeftLen) {\n this._notNeedAdjustLockLeft = true;\n }\n if (lockRightLen) {\n this._notNeedAdjustLockRight = true;\n }\n if (lockRightLen || lockLeftLen) {\n this.forceUpdate();\n return true;\n }\n }\n\n adjustIfTableNotNeedLock() {\n if (this.isOriginLock()) {\n const widthObj = this.tableInc.flatChildren\n .map((item, index) => {\n const cell = this.getCellNode(0, index) || {};\n const headerCell = this.getHeaderCellNode(0, index) || {};\n\n return {\n cellWidths: cell.clientWidth || 0,\n headerWidths: headerCell.clientWidth || 0,\n };\n })\n .reduce(\n (a, b) => {\n return {\n cellWidths: a.cellWidths + b.cellWidths,\n headerWidths: a.headerWidths + b.headerWidths,\n };\n },\n {\n cellWidths: 0,\n headerWidths: 0,\n },\n );\n\n const node = findDOMNode(this);\n const width = node.clientWidth;\n\n // if the table doesn't exist, there is no need to adjust\n if (width === 0) {\n return true;\n }\n\n const configWidths = widthObj.cellWidths || widthObj.headerWidths;\n\n if (configWidths <= width && configWidths > 0) {\n this.removeLockTable();\n } else if (this._notNeedAdjustLockLeft || this._notNeedAdjustLockRight) {\n this._notNeedAdjustLockLeft = this._notNeedAdjustLockRight = false;\n this.forceUpdate();\n } else {\n this._notNeedAdjustLockLeft = this._notNeedAdjustLockRight = false;\n return false;\n }\n }\n\n return false;\n }\n\n adjustBodySize() {\n if (this.isLock()) {\n const { rtl } = this.props;\n const body = this.bodyNode;\n const lockLeftBody = this.bodyLeftNode;\n const lockRightBody = this.bodyRightNode;\n const lockRightBodyWrapper = this.getWrapperNode('right');\n const scrollbar = dom.scrollbar();\n const bodyHeight = body.offsetHeight;\n const hasHozScroll = body.scrollWidth > body.clientWidth;\n const hasVerScroll = body.scrollHeight > body.clientHeight;\n const width = hasVerScroll ? scrollbar.width : 0;\n const lockBodyHeight = bodyHeight - (hasHozScroll ? scrollbar.height : 0);\n\n lockLeftBody && dom.setStyle(lockLeftBody, 'max-height', lockBodyHeight);\n lockRightBody && dom.setStyle(lockRightBody, 'max-height', lockBodyHeight);\n\n lockRightBodyWrapper &&\n dom.setStyle(lockRightBodyWrapper, rtl ? 'left' : 'right', `${width}px`);\n }\n }\n\n adjustHeaderSize() {\n if (this.isLock()) {\n this.tableInc.groupChildren.forEach((child, index) => {\n const lastIndex = this.tableInc.groupChildren[index].length - 1;\n const headerRightRow = this.getHeaderCellNode(index, lastIndex);\n const headerLeftRow = this.getHeaderCellNode(index, 0);\n const headerRightLockRow = this.getHeaderCellNode(index, 0, 'right');\n const headerLeftLockRow = this.getHeaderCellNode(index, 0, 'left');\n\n if (headerRightRow && headerRightLockRow) {\n const maxRightRowHeight = headerRightRow.offsetHeight;\n\n dom.setStyle(headerRightLockRow, 'height', maxRightRowHeight);\n\n setTimeout(() => {\n const { affixRef } = this.tableRightInc;\n // if rendered then update postion of affix\n return affixRef && affixRef.getInstance() && affixRef.getInstance().updatePosition();\n });\n }\n\n if (headerLeftRow && headerLeftLockRow) {\n const maxLeftRowHeight = headerLeftRow.offsetHeight;\n\n dom.setStyle(headerLeftLockRow, 'height', maxLeftRowHeight);\n\n setTimeout(() => {\n const { affixRef } = this.tableLeftInc;\n // if rendered then update postion of affix\n return affixRef && affixRef.getInstance() && affixRef.getInstance().updatePosition();\n });\n }\n });\n }\n }\n\n adjustCellSize() {\n if (this.isLock()) {\n this.tableInc.props.dataSource.forEach((item, index) => {\n const lockLeftRow = this.getCellNode(index, 0, 'left');\n const lockRightRow = this.getCellNode(index, 0, 'right');\n const row = this.getFirstNormalCellNode(index);\n const rowHeight = (row && parseFloat(getComputedStyle(row).height)) || 0;\n let lockLeftHeight = 0;\n let lockRightHeight = 0;\n\n if (lockLeftRow) {\n lockLeftHeight = lockLeftRow.offsetHeight;\n }\n if (lockRightRow) {\n lockRightHeight = lockRightRow.offsetHeight;\n }\n if (lockLeftRow && rowHeight !== lockLeftHeight) {\n dom.setStyle(lockLeftRow, 'height', rowHeight);\n }\n if (lockRightRow && rowHeight !== lockRightHeight) {\n dom.setStyle(lockRightRow, 'height', rowHeight);\n }\n });\n }\n }\n\n getWrapperNode(type) {\n type = type ? type.charAt(0).toUpperCase() + type.substr(1) : '';\n try {\n // in case of finding an unmounted component due to cached data\n // need to clear refs of table when dataSource Changed\n // use try catch for temporary\n return findDOMNode(this.refs[`lock${type}`]);\n } catch (error) {\n return null;\n }\n }\n\n getFirstNormalCellNode(index) {\n let i = 0;\n let row;\n do {\n row = this.getCellNode(index, i);\n i++;\n } while (\n (!row || (row && row.rowSpan && row.rowSpan > 1)) &&\n this.tableInc.flatChildren.length > i\n );\n\n return row;\n }\n\n getRowNode(index, type) {\n type = type ? type.charAt(0).toUpperCase() + type.substr(1) : '';\n const table = this[`table${type}Inc`];\n\n try {\n // in case of finding an unmounted component due to cached data\n // need to clear refs of table when dataSource Changed\n // use try catch for temporary\n return findDOMNode(table.getRowRef(index));\n } catch (error) {\n return null;\n }\n }\n\n getHeaderCellNode(index, i, type) {\n type = type ? type.charAt(0).toUpperCase() + type.substr(1) : '';\n const table = this[`table${type}Inc`];\n\n try {\n // in case of finding an unmounted component due to cached data\n // need to clear refs of table when dataSource Changed\n // use try catch for temporary\n return findDOMNode(table.getHeaderCellRef(index, i));\n } catch (error) {\n return null;\n }\n }\n\n getCellNode(index, i, type) {\n type = type ? type.charAt(0).toUpperCase() + type.substr(1) : '';\n const table = this[`table${type}Inc`];\n\n try {\n // in case of finding an unmounted component due to cached data\n // need to clear refs of table when dataSource Changed\n // use try catch for temporary\n return findDOMNode(table.getCellRef(index, i));\n } catch (error) {\n return null;\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars, prefer-const */\n let { children, prefix, components, className, ...others } = this.props;\n let {\n lockLeftChildren,\n lockRightChildren,\n children: normalizedChildren,\n } = this.normalizeChildrenState(this.props);\n if (this._notNeedAdjustLockLeft) {\n lockLeftChildren = [];\n }\n if (this._notNeedAdjustLockRight) {\n lockRightChildren = [];\n }\n this.lockLeftChildren = lockLeftChildren;\n this.lockRightChildren = lockRightChildren;\n\n if (this.isOriginLock()) {\n components = { ...components };\n components.Body = components.Body || LockBody;\n components.Header = components.Header || LockHeader;\n components.Wrapper = components.Wrapper || LockWrapper;\n components.Row = components.Row || LockRow;\n className = classnames({\n [`${prefix}table-lock`]: true,\n [className]: className,\n });\n const content = [\n <BaseComponent\n {...others}\n key=\"lock-left\"\n columns={lockLeftChildren}\n className={`${prefix}table-lock-left`}\n prefix={prefix}\n lockType=\"left\"\n components={components}\n ref=\"lockLeft\"\n loading={false}\n aria-hidden\n />,\n <BaseComponent\n {...others}\n key=\"lock-right\"\n columns={lockRightChildren}\n className={`${prefix}table-lock-right`}\n prefix={prefix}\n lockType=\"right\"\n components={components}\n ref=\"lockRight\"\n loading={false}\n aria-hidden\n />,\n ];\n return (\n <BaseComponent\n {...others}\n columns={normalizedChildren}\n prefix={prefix}\n wrapperContent={content}\n components={components}\n className={className}\n />\n );\n }\n return <BaseComponent {...this.props} />;\n }\n }\n statics(LockTable, BaseComponent);\n return LockTable;\n}\n\nfunction deepCopy(arr) {\n let copy = arr => {\n return arr.map(item => {\n const newItem = { ...item };\n if (item.children) {\n item.children = copy(item.children);\n }\n return newItem;\n });\n };\n return copy(arr);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Table.GroupHeader\n * @order 2\n **/\nexport default class ListHeader extends React.Component {\n static propTypes = {\n /**\n * 行渲染的逻辑\n */\n cell: PropTypes.oneOfType([PropTypes.element, PropTypes.node, PropTypes.func]),\n /**\n * 是否在Children上面渲染selection\n */\n hasChildrenSelection: PropTypes.bool,\n /**\n * 是否在GroupHeader上面渲染selection\n */\n hasSelection: PropTypes.bool,\n /**\n * 当 dataSouce 里没有 children 时,是否使用内容作为数据\n */\n useFirstLevelDataWhenNoChildren: PropTypes.bool,\n };\n\n static defaultProps = {\n cell: () => '',\n hasSelection: true,\n hasChildrenSelection: false,\n useFirstLevelDataWhenNoChildren: false,\n };\n\n static _typeMark = 'listHeader';\n\n render() {\n return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/* istanbul ignore file */\n/**\n * Table.GroupFooter\n * @order 3\n **/\nexport default class ListFooter extends React.Component {\n static propTypes = {\n /**\n * 行渲染的逻辑\n */\n cell: PropTypes.oneOfType([PropTypes.element, PropTypes.node, PropTypes.func]),\n };\n\n static defaultProps = {\n cell: () => '',\n };\n\n static _typeMark = 'listFooter';\n\n render() {\n return null;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { log, obj } from '../../util';\nimport Row from '../base/row';\n\nexport default class GroupListRow extends Row {\n static contextTypes = {\n listHeader: PropTypes.any,\n listFooter: PropTypes.any,\n rowSelection: PropTypes.object,\n notRenderCellIndex: PropTypes.array,\n lockType: PropTypes.oneOf(['left', 'right']),\n };\n\n render() {\n /* eslint-disable no-unused-vars*/\n const {\n prefix,\n className,\n onClick,\n onMouseEnter,\n onMouseLeave,\n columns,\n Cell,\n rowIndex,\n record,\n children,\n primaryKey,\n colGroup,\n cellRef,\n getCellProps,\n locale,\n rtl,\n ...others\n } = this.props;\n const cls = classnames({\n [`${prefix}table-row`]: true,\n [className]: className,\n });\n\n // clear notRenderCellIndex, incase of cached data\n this.context.notRenderCellIndex = [];\n\n return (\n <table\n className={cls}\n role=\"row\"\n {...obj.pickAttrs(others)}\n onClick={this.onClick}\n onMouseEnter={this.onMouseEnter}\n onMouseLeave={this.onMouseLeave}\n >\n {colGroup}\n <tbody>\n {this.renderContent('header')}\n {this.renderChildren()}\n {this.renderContent('footer')}\n </tbody>\n </table>\n );\n }\n\n isChildrenSelection() {\n return this.context.listHeader && this.context.listHeader.hasChildrenSelection;\n }\n\n isFirstLevelDataWhenNoChildren() {\n return this.context.listHeader && this.context.listHeader.useFirstLevelDataWhenNoChildren;\n }\n\n isSelection() {\n return this.context.listHeader && this.context.listHeader.hasSelection;\n }\n\n renderChildren() {\n const { record, primaryKey } = this.props;\n const { children } = record;\n\n let toRenderList = children;\n if (this.isFirstLevelDataWhenNoChildren()) {\n log.warning(\n `useFirstLevelDataWhenNoChildren is deprecated, change your dataSource structure, make sure there is 'children' in your dataSource.`,\n );\n\n toRenderList = children || [record];\n }\n\n if (toRenderList) {\n return toRenderList.map((child, index) => {\n const cells = this.renderCells(child, index);\n if (this.isChildrenSelection()) {\n if (!child[primaryKey]) {\n log.warning(\n 'record.children/recored should contains primaryKey when childrenSelection is true.',\n );\n }\n return <tr key={child[primaryKey]}>{cells}</tr>;\n }\n if (this.context.rowSelection) {\n cells.shift();\n cells[0] = React.cloneElement(cells[0], {\n colSpan: 2,\n ...cells[0].props,\n });\n }\n return <tr key={index}>{cells}</tr>;\n });\n }\n return null;\n }\n renderContent(type) {\n const { columns, prefix, record, rowIndex } = this.props;\n const cameType = type.charAt(0).toUpperCase() + type.substr(1);\n const list = this.context[`list${cameType}`];\n let listNode;\n if (list) {\n if (React.isValidElement(list.cell)) {\n listNode = React.cloneElement(list.cell, {\n record,\n index: rowIndex,\n });\n } else if (typeof list.cell === 'function') {\n listNode = list.cell(record, rowIndex);\n }\n if (listNode) {\n let cells = this.renderCells(record);\n if (type === 'header' && this.context.rowSelection && this.isSelection()) {\n cells = cells.slice(0, 1);\n cells.push(\n <td colSpan={columns.length - 1} key=\"listNode\">\n <div className={`${prefix}table-cell-wrapper`}>{listNode}</div>\n </td>,\n );\n listNode = <tr className={`${prefix}table-group-${type}`}>{cells}</tr>;\n } else {\n listNode = (\n <tr className={`${prefix}table-group-${type}`}>\n <td colSpan={columns.length}>\n <div className={`${prefix}table-cell-wrapper`}>{listNode}</div>\n </td>\n </tr>\n );\n }\n }\n }\n return listNode;\n }\n}\n","import React from 'react';\nimport BodyComponent from '../base/body';\n\nexport default function ListBody(props) {\n return <BodyComponent component=\"div\" {...props} />;\n}\n","import React, { Children } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport ListHeader from './list-header';\nimport ListFooter from './list-footer';\nimport RowComponent from './list/row';\nimport BodyComponent from './list/body';\nimport HeaderComponent from './fixed/header';\nimport WrapperComponent from './fixed/wrapper';\nimport { statics } from './util';\n\nexport default function list(BaseComponent) {\n class ListTable extends React.Component {\n static ListHeader = ListHeader;\n static ListFooter = ListFooter;\n static ListRow = RowComponent;\n static ListBody = BodyComponent;\n static propTypes = {\n ...BaseComponent.propTypes,\n };\n static defaultProps = {\n ...BaseComponent.defaultProps,\n };\n\n static childContextTypes = {\n listHeader: PropTypes.any,\n listFooter: PropTypes.any,\n rowSelection: PropTypes.object,\n };\n\n getChildContext() {\n return {\n listHeader: this.listHeader,\n listFooter: this.listFooter,\n rowSelection: this.rowSelection,\n };\n }\n\n normalizeDataSource(dataSource) {\n const ret = [];\n const loop = function(dataSource, level) {\n dataSource.forEach(item => {\n item.__level = level;\n ret.push(item);\n if (item.children) {\n loop(item.children, level + 1);\n }\n });\n };\n loop(dataSource, 0);\n this.ds = ret;\n return ret;\n }\n\n render() {\n /* eslint-disable prefer-const */\n let { components, children, className, prefix, ...others } = this.props;\n let isList = false,\n ret = [];\n Children.forEach(children, child => {\n if (child) {\n if (typeof child.type === 'function') {\n if (child.type._typeMark === 'listHeader') {\n this.listHeader = child.props;\n isList = true;\n } else if (child.type._typeMark === 'listFooter') {\n this.listFooter = child.props;\n } else {\n ret.push(child);\n }\n } else {\n ret.push(child);\n }\n }\n });\n this.rowSelection = this.props.rowSelection;\n if (isList) {\n components = { ...components };\n components.Row = components.Row || RowComponent;\n components.Body = components.Body || BodyComponent;\n components.Header = components.Header || HeaderComponent;\n components.Wrapper = components.Wrapper || WrapperComponent;\n className = classnames({\n [`${prefix}table-group`]: true,\n [className]: className,\n });\n }\n return (\n <BaseComponent\n {...others}\n components={components}\n children={ret}\n className={className}\n prefix={prefix}\n />\n );\n }\n }\n statics(ListTable, BaseComponent);\n return ListTable;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Affix from '../../affix';\n\n/* eslint-disable react/prefer-stateless-function*/\nexport default class StickHeader extends React.Component {\n static propTypes = {\n prefix: PropTypes.string,\n };\n static contextTypes = {\n Header: PropTypes.any,\n offsetTop: PropTypes.number,\n affixProps: PropTypes.object,\n };\n\n getAffixRef = ref => {\n this.props.affixRef && this.props.affixRef(ref);\n };\n\n render() {\n const { prefix } = this.props;\n const { Header, offsetTop, affixProps } = this.context;\n\n const newAffixProps = affixProps || {};\n const { className, ...others } = newAffixProps;\n const cls = classnames({\n [`${prefix}table-affix`]: true,\n className,\n });\n\n return (\n <Affix ref={this.getAffixRef} {...others} className={cls} offsetTop={offsetTop}>\n <Header {...this.props} />\n </Affix>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Header from './fixed/header';\nimport StickyHeader from './sticky/header';\nimport { statics } from './util';\n\nexport default function sticky(BaseComponent) {\n /** Table */\n class StickyTable extends React.Component {\n static StickyHeader = StickyHeader;\n static propTypes = {\n /**\n * 表头是否是sticky\n */\n stickyHeader: PropTypes.bool,\n /**\n * 距离窗口顶部达到指定偏移量后触发\n */\n offsetTop: PropTypes.number,\n /**\n * affix组件的的属性\n */\n affixProps: PropTypes.object,\n components: PropTypes.object,\n ...BaseComponent.propTypes,\n };\n\n static defaultProps = {\n components: {},\n ...BaseComponent.defaultProps,\n };\n\n static childContextTypes = {\n Header: PropTypes.any,\n offsetTop: PropTypes.number,\n affixProps: PropTypes.object,\n };\n\n getChildContext() {\n return {\n Header: this.props.components.Header || Header,\n offsetTop: this.props.offsetTop,\n affixProps: this.props.affixProps,\n };\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const { stickyHeader, offsetTop, affixProps, ...others } = this.props;\n let { components, maxBodyHeight, fixedHeader } = this.props;\n if (stickyHeader) {\n components = { ...components };\n components.Header = StickyHeader;\n fixedHeader = true;\n maxBodyHeight = Math.max(maxBodyHeight, 10000);\n }\n return (\n <BaseComponent\n {...others}\n components={components}\n fixedHeader={fixedHeader}\n maxBodyHeight={maxBodyHeight}\n />\n );\n }\n }\n statics(StickyTable, BaseComponent);\n return StickyTable;\n}\n","import ConfigProvider from '../config-provider';\nimport Base from './base';\nimport tree from './tree';\nimport fixed from './fixed';\nimport selection from './selection';\nimport expanded from './expanded';\nimport virtual from './virtual';\nimport lock from './lock';\nimport list from './list';\nimport sticky from './sticky';\nimport ListHeader from './list-header';\nimport ListFooter from './list-footer';\n\nconst ORDER_LIST = [fixed, lock, selection, expanded, tree, virtual, list, sticky];\nconst Table = ORDER_LIST.reduce((ret, current) => {\n ret = current(ret);\n return ret;\n}, Base);\nTable.Base = Base;\nTable.fixed = fixed;\nTable.lock = lock;\nTable.selection = selection;\nTable.expanded = expanded;\nTable.tree = tree;\nTable.virtual = virtual;\nTable.list = list;\nTable.sticky = sticky;\n\nTable.GroupHeader = ListHeader;\nTable.GroupFooter = ListFooter;\n\nexport default ConfigProvider.config(Table, {\n componentName: 'Table',\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('expandedRowKeys' in props) {\n deprecated('expandedRowKeys', 'openRowKeys', 'Table');\n\n const { expandedRowKeys, ...others } = props;\n props = { openRowKeys: expandedRowKeys, ...others };\n }\n if ('onExpandedChange' in props) {\n deprecated('onExpandedChange', 'onRowOpen', 'Table');\n\n const { onExpandedChange, ...others } = props;\n props = { onRowOpen: onExpandedChange, ...others };\n }\n if ('isLoading' in props) {\n deprecated('isLoading', 'loading', 'Table');\n\n const { isLoading, ...others } = props;\n props = { loading: isLoading, ...others };\n }\n if ('indentSize' in props) {\n deprecated('indentSize', 'indent', 'Table');\n\n const { indentSize, ...others } = props;\n props = { indent: indentSize, ...others };\n }\n if ('optimization' in props) {\n deprecated('optimization', 'pure', 'Table');\n\n const { optimization, ...others } = props;\n props = { pure: optimization, ...others };\n }\n\n if ('getRowClassName' in props) {\n deprecated('getRowClassName', 'getRowProps', 'Table');\n\n const { getRowClassName, getRowProps, ...others } = props;\n if (getRowClassName) {\n const newGetRowProps = (...args) => {\n return {\n className: getRowClassName(...args),\n ...(getRowProps ? getRowProps(...args) : {}),\n };\n };\n\n props = { getRowProps: newGetRowProps, ...others };\n } else {\n props = { getRowProps, ...others };\n }\n }\n\n if ('getRowProps' in props) {\n deprecated('getRowProps', 'rowProps', 'Table in 1.15.0');\n\n const { getRowProps, ...others } = props;\n props = { rowProps: getRowProps, ...others };\n }\n\n if ('getCellProps' in props) {\n deprecated('getCellProps', 'cellProps', 'Table in 1.15.0');\n\n const { getCellProps, ...others } = props;\n props = { cellProps: getCellProps, ...others };\n }\n\n return props;\n },\n});\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport Input from '../input';\nimport Overlay from '../overlay';\nimport nextLocale from '../locale/zh-cn';\nimport { func, obj } from '../util';\nimport TimePickerPanel from './panel';\nimport { checkDateValue, formatDateValue } from './utils';\nimport { onTimeKeydown } from '../date-picker/util';\n\nconst { Popup } = Overlay;\nconst { noop } = func;\nconst timePickerLocale = nextLocale.TimePicker;\n\n/**\n * TimePicker\n */\nexport default class TimePicker extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 按钮的文案\n */\n label: PropTypes.node,\n /**\n * 输入框状态\n */\n state: PropTypes.oneOf(['error', 'success']),\n /**\n * 输入框提示\n */\n placeholder: PropTypes.string,\n /**\n * 时间值(moment 对象或时间字符串,受控状态使用)\n */\n value: checkDateValue,\n /**\n * 时间初值(moment 对象或时间字符串,非受控状态使用)\n */\n defaultValue: checkDateValue,\n /**\n * 时间选择框的尺寸\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 是否允许清空时间\n */\n hasClear: PropTypes.bool,\n /**\n * 时间的格式\n * https://momentjs.com/docs/#/parsing/string-format/\n */\n format: PropTypes.string,\n /**\n * 小时选项步长\n */\n hourStep: PropTypes.number,\n /**\n * 分钟选项步长\n */\n minuteStep: PropTypes.number,\n /**\n * 秒钟选项步长\n */\n secondStep: PropTypes.number,\n /**\n * 禁用小时函数\n * @param {Number} index 时 0 - 23\n * @return {Boolean} 是否禁用\n */\n disabledHours: PropTypes.func,\n /**\n * 禁用分钟函数\n * @param {Number} index 分 0 - 59\n * @return {Boolean} 是否禁用\n */\n disabledMinutes: PropTypes.func,\n /**\n * 禁用秒钟函数\n * @param {Number} index 秒 0 - 59\n * @return {Boolean} 是否禁用\n */\n disabledSeconds: PropTypes.func,\n /**\n * 弹层是否显示(受控)\n */\n visible: PropTypes.bool,\n /**\n * 弹层默认是否显示(非受控)\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层容器\n * @param {Object} target 目标节点\n * @return {ReactNode} 容器节点\n */\n popupContainer: PropTypes.func,\n /**\n * 弹层对齐方式, 详情见Overlay 文档\n */\n popupAlign: PropTypes.string,\n /**\n * 弹层触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层展示状态变化时的回调\n * @param {Boolean} visible 弹层是否隐藏和显示\n * @param {String} type 触发弹层显示和隐藏的来源 fromTrigger 表示由trigger的点击触发; docClick 表示由document的点击触发\n */\n onVisibleChange: PropTypes.func,\n /**\n * 弹层自定义样式\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 时间值改变时的回调\n * @param {Object|String} value 时间对象或时间字符串\n */\n onChange: PropTypes.func,\n className: PropTypes.string,\n style: PropTypes.object,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n locale: timePickerLocale,\n size: 'medium',\n format: 'HH:mm:ss',\n hasClear: true,\n disabled: false,\n popupAlign: 'tl bl',\n popupTriggerType: 'click',\n onChange: noop,\n onVisibleChange: noop,\n };\n\n constructor(props, context) {\n super(props, context);\n const value = formatDateValue(props.value || props.defaultValue, props.format);\n this.inputAsString = typeof (props.value || props.defaultValue) === 'string';\n this.state = {\n value,\n inputStr: '',\n inputing: false,\n visible: props.visible || props.defaultVisible,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps) {\n const value = formatDateValue(nextProps.value, nextProps.format || this.props.format);\n this.setState({\n value,\n });\n }\n\n if ('visible' in nextProps) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n }\n\n onValueChange(newValue) {\n const ret = this.inputAsString && newValue ? newValue.format(this.props.format) : newValue;\n this.props.onChange(ret);\n }\n\n onClearValue = () => {\n this.setState({\n value: null,\n });\n if (this.state.value) {\n this.onValueChange(null);\n }\n };\n\n onInputChange = (inputValue, e, eventType) => {\n if (!('value' in this.props)) {\n if (eventType === 'clear' || !inputValue) {\n e.stopPropagation();\n this.onClearValue();\n }\n\n this.setState({\n inputStr: inputValue,\n inputing: true,\n });\n } else if (eventType === 'clear') {\n // 受控状态下用户点击 clear\n e.stopPropagation();\n this.onValueChange(null);\n }\n };\n\n onInputBlur = () => {\n const { value, inputStr } = this.state;\n if (!value && inputStr) {\n const { format } = this.props;\n const parsed = moment(inputStr, format, true);\n if (parsed.isValid()) {\n this.setState({\n value: parsed,\n inputStr: '',\n });\n this.onValueChange(parsed);\n }\n this.setState({\n inputing: false,\n });\n }\n };\n\n onKeyown = e => {\n const { value, inputStr } = this.state;\n const {\n format,\n hourStep = 1,\n minuteStep = 1,\n secondStep = 1,\n disabledMinutes,\n disabledSeconds,\n } = this.props;\n\n let unit = 'second';\n\n if (disabledSeconds) {\n unit = disabledMinutes ? 'hour' : 'minute';\n }\n const timeStr = onTimeKeydown(\n e,\n {\n format,\n timeInputStr: inputStr,\n steps: {\n hour: hourStep,\n minute: minuteStep,\n second: secondStep,\n },\n value,\n },\n unit,\n );\n\n if (!timeStr) return;\n\n this.onInputChange(timeStr);\n };\n\n onTimePanelSelect = value => {\n if (!('value' in this.props)) {\n this.setState({\n value,\n inputing: false,\n });\n }\n if (!this.state.value || value.valueOf() !== this.state.value.valueOf()) {\n this.onValueChange(value);\n }\n };\n\n onVisibleChange = (visible, type) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, type);\n };\n\n render() {\n const {\n prefix,\n label,\n state,\n placeholder,\n size,\n format,\n hasClear,\n hourStep,\n minuteStep,\n secondStep,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n popupAlign,\n popupTriggerType,\n popupContainer,\n popupStyle,\n popupClassName,\n popupProps,\n followTrigger,\n disabled,\n className,\n style,\n locale,\n rtl,\n ...others\n } = this.props;\n\n const { value, inputStr, inputing, visible } = this.state;\n\n const triggerCls = classnames({\n [`${prefix}time-picker-trigger`]: true,\n });\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const inputValue = inputing ? inputStr : (value && value.format(format)) || '';\n const sharedInputProps = {\n disabled,\n value: inputValue,\n onChange: this.onInputChange,\n onBlur: this.onInputBlur,\n onPressEnter: this.onInputBlur,\n onKeyDown: this.onKeyown,\n };\n\n const triggerInput = (\n <div className={triggerCls}>\n <Input\n {...sharedInputProps}\n size={size}\n hint=\"clock\"\n hasClear\n label={label}\n state={state}\n placeholder={placeholder || locale.placeholder}\n className={`${prefix}time-picker-input`}\n />\n </div>\n );\n\n const panelProps = {\n prefix,\n locale,\n value,\n disabled,\n showHour: format.indexOf('H') > -1,\n showSecond: format.indexOf('s') > -1,\n hourStep,\n minuteStep,\n secondStep,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n onSelect: this.onTimePanelSelect,\n };\n\n const classNames = classnames(\n {\n [`${prefix}time-picker`]: true,\n [`${prefix}time-picker-${size}`]: size,\n [`${prefix}disabled`]: disabled,\n },\n className,\n );\n\n return (\n <div\n {...obj.pickOthers(TimePicker.propTypes, others)}\n className={classNames}\n tabIndex={disabled ? null : 0}\n style={style}\n >\n <Popup\n {...popupProps}\n offset={[0, 4]}\n followTrigger={followTrigger}\n autoFocus\n visible={visible}\n onVisibleChange={this.onVisibleChange}\n trigger={triggerInput}\n container={popupContainer}\n disabled={disabled}\n align={popupAlign}\n triggerType={popupTriggerType}\n style={popupStyle}\n className={popupClassName}\n >\n <div dir={others.dir} className={`${prefix}time-picker-body`}>\n <div className={`${prefix}time-picker-panel-header`}>\n <Input\n {...sharedInputProps}\n size=\"xs\"\n placeholder={format}\n className={`${prefix}time-picker-panel-input`}\n />\n </div>\n <TimePickerPanel {...panelProps} />\n </div>\n </Popup>\n </div>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cls from 'classnames';\nimport moment from 'moment';\nimport TimePickerPanel from './panel';\nimport Input from '../input';\nimport Overlay from '../overlay';\nimport nextLocale from '../locale/zh-cn';\nimport { formatDateValue } from './utils';\n\nconst { Popup } = Overlay;\nconst timePickerLocale = nextLocale.TimePicker;\nconst noop = () => {};\n\nconst getFormatValues = (values, format) => {\n if (!Array.isArray(values)) {\n return [null, null];\n }\n return [formatDateValue(values[0], format), formatDateValue(values[1], format)];\n};\n\nclass RangePicker extends React.Component {\n static propTypes = {\n /**\n * 设置trigger的className\n */\n className: PropTypes.string,\n /**\n * 设置trigger的style\n */\n style: PropTypes.object,\n /**\n * 设置trigger的style\n */\n size: PropTypes.oneOf(['small', 'medium']),\n /**\n * 设置组件className前缀\n */\n prefix: PropTypes.string,\n /**\n * 语言包\n */\n locale: PropTypes.object,\n /**\n * 弹层是否默认可见,初始化时有效\n */\n defaultVisible: PropTypes.bool,\n /**\n * 弹层是否可见,受控\n */\n visible: PropTypes.bool,\n /**\n * 弹层显隐回调\n */\n onVisibleChange: PropTypes.func,\n /**\n * 默认值,moment或字符串数组,非受控\n */\n defaultValue: PropTypes.array,\n /**\n * moment或字符串数组,受控\n */\n value: PropTypes.array,\n /**\n * 整体值发生变化时触发的回调方法\n */\n onChange: PropTypes.func,\n /**\n * 时间格式\n */\n format: PropTypes.string,\n /**\n * 小时选择步长\n */\n hourStep: PropTypes.number,\n /**\n * 分钟选择步长\n */\n minuteStep: PropTypes.number,\n /**\n * 秒选择步长\n */\n secondStep: PropTypes.number,\n /**\n * 禁用的小时,数组\n * @return {Boolean} 是否禁用\n */\n disabledHours: PropTypes.arrayOf(PropTypes.func),\n /**\n * 禁用的分钟,数组\n * @return {Boolean} 是否禁用\n */\n disabledMinutes: PropTypes.arrayOf(PropTypes.func),\n /**\n * 禁用的秒,数组\n * @return {Boolean} 是否禁用\n */\n disabledSeconds: PropTypes.arrayOf(PropTypes.func),\n /**\n * 弹层容器\n * @param {Object} target 目标节点\n * @return {ReactNode} 容器节点\n */\n popupContainer: PropTypes.func,\n /**\n * 弹层对齐方式, 详情见Overlay 文档\n */\n popupAlign: PropTypes.string,\n /**\n * 弹层触发方式\n */\n popupTriggerType: PropTypes.oneOf(['click', 'hover']),\n /**\n * 弹层自定义样式\n */\n popupStyle: PropTypes.object,\n /**\n * 弹层自定义样式类\n */\n popupClassName: PropTypes.string,\n /**\n * 弹层属性\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n }\n\n static defaultProps = {\n prefix: 'next-',\n size: 'medium',\n onVisibleChange: noop,\n onChange: noop,\n format: 'HH:mm:ss',\n locale: timePickerLocale,\n hourStep: 1,\n minuteStep: 1,\n secondStep: 1,\n disabled: false,\n disabledHours: [() => false, () => false],\n disabledMinutes: [() => false, () => false],\n disabledSeconds: [() => false, () => false],\n popupAlign: 'tl bl',\n popupTriggerType: 'click',\n }\n\n constructor(props) {\n super(props);\n const val = props.value || props.defaultValue;\n const value = getFormatValues(val, props.format);\n this.inputAsString = val && typeof val[0] === 'string' && typeof val[1] === 'string';\n this.state = {\n startInputStr: '',\n endInputStr: '',\n startInputing: false,\n endInputing: false,\n visible: props.visible || props.defaultVisible,\n startValue: value[0] || '',\n endValue: value[1] || '',\n isHover: false,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.props.visible !== nextProps.visible) {\n this.setState({\n visible: nextProps.visible,\n });\n }\n if (this.props.value !== nextProps.value) {\n const value = getFormatValues(nextProps.value, nextProps.format);\n this.setState({\n startValue: value[0],\n endValue: value[1],\n });\n }\n }\n\n onMouseOver = () => {\n this.setState({\n isHover: true,\n });\n }\n\n onMouseOut = () => {\n this.setState({\n isHover: false,\n });\n }\n\n onVisibleChange = (visible, type) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n this.props.onVisibleChange(visible, type);\n };\n\n onSelectStartTime = value => {\n const { startValue, endValue } = this.state;\n if (!('value' in this.props)) {\n this.setState({\n startValue: value,\n startInputing: false,\n });\n }\n if (!startValue || (startValue && value.valueOf() !== startValue.valueOf())) {\n this.onValueChange([value, endValue]);\n }\n }\n\n onSelectEndTime = value => {\n const { startValue, endValue } = this.state;\n if (!('value' in this.props)) {\n this.setState({\n endValue: value,\n endInputing: false,\n });\n }\n if (!endValue || (endValue && value.valueOf() !== endValue.valueOf())) {\n this.onValueChange([startValue, value]);\n }\n }\n\n onValueChange = (v) => {\n const { format } = this.props;\n const ret = this.inputAsString ? [v[0].format(format), v[1].format(format)] : v;\n this.props.onChange(ret);\n }\n\n onClearValue = () => {\n this.setState({\n startValue: '',\n endValue: '',\n startInputStr: '',\n endInputStr: '',\n });\n const ret = this.inputAsString ? ['', ''] : [null, null];\n this.props.onChange(ret);\n }\n\n onTriggerChange = (v, e, eventType) => {\n if (!('value' in this.props)) {\n if (eventType === 'clear') {\n e.stopPropagation();\n this.onClearValue();\n }\n } else if (eventType === 'clear') {\n // 受控状态下用户点击 clear\n e.stopPropagation();\n const ret = this.inputAsString ? ['', ''] : [null, null];\n this.props.onChange(ret);\n }\n }\n\n onStartInputChange = (value) => {\n if (!('value' in this.props)) {\n this.setState({\n startInputing: true,\n startInputStr: value,\n });\n }\n }\n\n onEndInputChange = (value) => {\n if (!('value' in this.props)) {\n this.setState({\n endInputing: true,\n endInputStr: value,\n });\n }\n }\n\n onStartInputBlur = () => {\n const { startValue, startInputStr, endValue } = this.state;\n if (!startValue && startInputStr) {\n const { format } = this.props;\n const parsed = moment(startInputStr, format, true);\n if (parsed.isValid()) {\n this.setState({\n startValue: parsed,\n startInputStr: '',\n });\n this.onValueChange([parsed, endValue]);\n }\n this.setState({\n startInputing: false,\n });\n }\n }\n\n onEndInputBlur = () => {\n const { startValue, endInputStr, endValue } = this.state;\n if (!endValue && endInputStr) {\n const { format } = this.props;\n const parsed = moment(endInputStr, format, true);\n if (parsed.isValid()) {\n this.setState({\n endValue: parsed,\n endInputStr: '',\n });\n this.onValueChange([startValue, parsed]);\n }\n this.setState({\n endInputing: false,\n });\n }\n }\n\n renderTrigger = () => {\n const {\n prefix,\n size,\n locale,\n disabled,\n format,\n } = this.props;\n const { startValue, endValue, startInputStr, endInputStr, startInputing, endInputing } = this.state;\n const startInputValue = startInputing ? startInputStr : (startValue && startValue.format(format)) || '';\n const endInputValue = endInputing ? endInputStr : (endValue && endValue.format(format)) || '';\n return (\n <div tabIndex={disabled ? null : 0}>\n <Input\n size={size}\n readOnly\n disabled={disabled}\n placeholder={locale.startPlaceholder}\n onChange={this.onTrigger}\n value={startInputValue}\n hasBorder={false}\n className={`${prefix}time-range-picker-trigger-start-input`}\n />\n <span className={`${prefix}time-range-picker-trigger-separator`}>~</span>\n <Input\n size={size}\n readOnly\n disabled={disabled}\n placeholder={locale.endPlaceholder}\n value={endInputValue}\n hasBorder={false}\n hint=\"clock\"\n hasClear\n onChange={this.onTriggerChange}\n className={`${prefix}time-range-picker-trigger-start-input`}\n />\n </div>\n );\n }\n\n renderTimePanel = () => {\n const {\n prefix,\n locale,\n disabled,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n format,\n hourStep,\n minuteStep,\n secondStep,\n } = this.props;\n const { startValue, endValue, startInputStr, endInputStr, startInputing, endInputing } = this.state;\n const startInputValue = startInputing ? startInputStr : (startValue && startValue.format(format)) || '';\n const endInputValue = endInputing ? endInputStr : (endValue && endValue.format(format)) || '';\n const showSecond = format.indexOf('s') > -1;\n\n const sharedTimePickerProps = {\n prefix,\n locale,\n disabled,\n showSecond,\n hourStep,\n minuteStep,\n secondStep,\n };\n return (\n <div className={`${prefix}time-range-picker-panel`}>\n <div className={`${prefix}time-range-picker-panel-header`}>\n <Input\n size=\"xs\"\n onChange={this.onStartInputChange}\n onBlur={this.onStartInputBlur}\n onPressEnter={this.onStartInputBlur}\n disabled={disabled}\n value={startInputValue}\n placeholder={format}\n className={`${prefix}time-range-picker-panel-start-input`}\n />\n <span className={`${prefix}time-range-picker-trigger-separator`}>~</span>\n <Input\n size=\"xs\"\n onChange={this.onEndInputChange}\n onBlur={this.onEndInputBlur}\n onPressEnter={this.onEndInputBlur}\n disabled={disabled}\n value={endInputValue}\n placeholder={format}\n className={`${prefix}time-range-picker-panel-end-input`}\n />\n </div>\n <TimePickerPanel\n {...sharedTimePickerProps}\n disabledHours={disabledHours[0]}\n disabledMinutes={disabledMinutes[0]}\n disabledSeconds={disabledSeconds[0]}\n className={`${prefix}time-range-picker-start-panel`}\n value={startValue}\n onSelect={this.onSelectStartTime}\n />\n <TimePickerPanel\n {...sharedTimePickerProps}\n disabledHours={disabledHours[1]}\n disabledMinutes={disabledMinutes[1]}\n disabledSeconds={disabledSeconds[1]}\n className={`${prefix}time-range-picker-end-panel`}\n value={endValue}\n onSelect={this.onSelectEndTime}\n />\n </div>\n );\n }\n\n render() {\n const { visible, isHover } = this.state;\n const {\n prefix,\n followTrigger,\n popupProps,\n popupContainer,\n popupAlign,\n popupTriggerType,\n popupStyle,\n popupClassName,\n disabled,\n style,\n className,\n } = this.props;\n return (\n <div\n className={cls(\n {\n [`${prefix}time-range-picker`]: true,\n [`${prefix}time-range-picker-active`]: visible && !disabled,\n [`${prefix}time-range-picker-hover`]: isHover && !disabled,\n [`${prefix}time-range-picker-disabled`]: disabled,\n className,\n }\n )}\n style={style}\n onMouseOver={this.onMouseOver}\n onMouseOut={this.onMouseOut}\n >\n <Popup\n {...popupProps}\n offset={[0, 4]}\n closable={false}\n trigger={this.renderTrigger()}\n triggerType={popupTriggerType}\n followTrigger={followTrigger}\n container={popupContainer}\n disabled={disabled}\n visible={visible}\n onVisibleChange={this.onVisibleChange}\n align={popupAlign}\n style={popupStyle}\n className={popupClassName}\n >\n {\n this.renderTimePanel()\n }\n </Popup>\n </div>\n );\n }\n}\n\nexport default RangePicker;\n","import ConfigProvider from '../config-provider';\nimport TimePicker from './time-picker';\nimport RangePicker from './range-picker';\n\nTimePicker.RangePicker = RangePicker;\n\nexport default ConfigProvider.config(TimePicker, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('defaultOpen' in props) {\n deprecated('defaultOpen', 'defaultVisible', 'TimePicker');\n const { defaultOpen, ...others } = props;\n props = { defaultVisible: defaultOpen, ...others };\n }\n if ('open' in props) {\n deprecated('open', 'visible', 'TimePicker');\n const { open, ...others } = props;\n props = { visible: open, ...others };\n }\n if ('onOpenChange' in props) {\n deprecated('onOpenChange', 'onVisibleChange', 'TimePicker');\n const { onOpenChange, ...others } = props;\n props = { onVisibleChange: onOpenChange, ...others };\n }\n\n return props;\n },\n});\n","import React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { obj } from '../../util';\nimport ConfigProvider from '../../config-provider';\nimport nextLocale from '../../locale/zh-cn';\n\n/** Timeline */\nclass Timeline extends Component {\n static propTypes = {\n /**\n * 样式的品牌前缀\n */\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n /**\n * 自定义折叠选项 示例`[{foldArea: [startIndex, endIndex], foldShow: boolean}]`\n */\n fold: PropTypes.array,\n /**\n * 自定义类名\n */\n className: PropTypes.string,\n children: PropTypes.any,\n locale: PropTypes.object,\n animation: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n fold: [],\n locale: nextLocale.Timeline,\n animation: true,\n };\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n fold: props.fold,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('fold' in nextProps) {\n this.setState({\n fold: nextProps.fold,\n });\n }\n }\n\n toggleFold(folderIndex, total) {\n const fold = this.state.fold.map(item => ({ ...item }));\n\n if (folderIndex) {\n for (let i = 0; i < fold.length; i++) {\n const { foldArea, foldShow } = fold[i];\n\n if (\n (foldArea[1] && folderIndex === foldArea[1]) ||\n (!foldArea[1] && folderIndex === total - 1)\n ) {\n fold[i].foldShow = !foldShow;\n }\n }\n\n this.setState({ fold });\n }\n }\n\n render() {\n const { prefix, rtl, className, children, locale, animation, ...others } = this.props;\n const { fold } = this.state;\n\n // 修改子节点属性\n const childrenCount = React.Children.count(children);\n const cloneChildren = Children.map(children, (child, i) => {\n let folderIndex = null;\n let foldNodeShow = false;\n\n fold.forEach(item => {\n const { foldArea, foldShow } = item;\n\n if (foldArea[0] && i >= foldArea[0] && (i <= foldArea[1] || !foldArea[1])) {\n folderIndex = foldArea[1] || childrenCount - 1;\n foldNodeShow = foldShow;\n }\n });\n\n return React.cloneElement(child, {\n prefix,\n locale,\n total: childrenCount,\n index: i,\n folderIndex,\n foldShow: foldNodeShow,\n toggleFold:\n folderIndex === i ? this.toggleFold.bind(this, folderIndex, childrenCount) : () => {},\n animation,\n });\n });\n\n const timelineCls = classNames(\n {\n [`${prefix}timeline`]: true,\n },\n className,\n );\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n return (\n <ul {...obj.pickOthers(Timeline.propTypes, others)} className={timelineCls}>\n {cloneChildren}\n </ul>\n );\n }\n}\n\nexport default ConfigProvider.config(Timeline);\n","/* eslint-disable react/no-did-mount-set-state */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Animate from '../../animate';\nimport Icon from '../../icon';\nimport Button from '../../button';\nimport { obj } from '../../util';\n\nconst { Expand } = Animate;\n/** Timeline.Item */\nclass TimelineItem extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n index: PropTypes.number,\n total: PropTypes.number,\n folderIndex: PropTypes.number,\n foldShow: PropTypes.bool,\n /**\n * 节点状态\n */\n state: PropTypes.oneOf(['done', 'process', 'error', 'success']),\n /**\n * 图标\n */\n icon: PropTypes.string,\n /**\n * 自定义时间轴节点\n */\n dot: PropTypes.node,\n /**\n * 格式化后的时间\n */\n time: PropTypes.node,\n /**\n * 标题\n */\n title: PropTypes.node,\n /**\n * 左侧时间\n */\n timeLeft: PropTypes.node,\n /**\n * 右侧内容\n */\n content: PropTypes.node,\n toggleFold: PropTypes.func,\n className: PropTypes.string,\n locale: PropTypes.object,\n /**\n * 动画\n */\n animation: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n state: 'done',\n toggleFold: () => {},\n animation: true,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n isSpread: false,\n };\n }\n\n toggleFold = (folderIndex) => {\n this.props.toggleFold(folderIndex);\n }\n\n toggleSpread = () => {\n this.setState({\n isSpread: !this.state.isSpread,\n });\n }\n\n beforeEnter = () => {\n this['timeline-item'].style['min-height'] = 'auto';\n }\n\n beforeLeave = () => {\n this['timeline-item'].style['min-height'] = '48px'; // timeleft 节点最小高度\n }\n\n render() {\n const {\n prefix,\n className,\n state,\n icon,\n dot,\n time,\n title,\n timeLeft,\n content,\n index,\n total,\n folderIndex,\n foldShow,\n locale,\n animation,\n ...others\n } = this.props;\n let finalItemNode = dot;\n if (!finalItemNode) {\n if (icon) {\n finalItemNode = (\n <span className={`${prefix}timeline-item-icon`}>\n <Icon type={icon} size=\"small\" />\n </span>\n );\n } else {\n finalItemNode = <span className={`${prefix}timeline-item-dot`} />;\n }\n }\n const itemCls = classNames({\n [`${prefix}timeline-item`]: true,\n [`${prefix}timeline-item-first`]: index === 0,\n [`${prefix}timeline-item-last`]: index === total - 1,\n [`${prefix}timeline-item-${state}`]: state,\n [`${prefix}timeline-item-folded`]: folderIndex,\n [`${prefix}timeline-item-unfolded`]: foldShow,\n [`${prefix}timeline-item-has-left-content`]: timeLeft,\n [className]: className,\n });\n const folderCls = classNames({\n [`${prefix}timeline-item-folder`]: true,\n [`${prefix}timeline-item-has-left-content`]: timeLeft,\n });\n const itemNodeCls = classNames({\n [`${prefix}timeline-item-node`]: true,\n [`${prefix}timeline-item-node-custom`]: dot,\n });\n const dotTailCls = classNames({\n [`${prefix}timeline-item-dot-tail`]: true,\n [`${prefix}timeline-item-dot-tail-solid`]: foldShow,\n [`${prefix}timeline-hide`]: index === total - 1 && foldShow,\n });\n\n const buttonProps = {\n text: true,\n size: 'small',\n type: 'primary',\n onClick: this.toggleFold.bind(this, folderIndex, total),\n };\n const timelineNode =\n (folderIndex && foldShow) || !folderIndex ? (\n <div\n {...obj.pickOthers(TimelineItem.propTypes, others)}\n className={itemCls}\n ref={e => {\n this['timeline-item'] = e;\n }}\n >\n <div className={`${prefix}timeline-item-left-content`}>\n <p className={`${prefix}timeline-item-body`}>{timeLeft}</p>\n </div>\n <div className={`${prefix}timeline-item-timeline`}>\n <div className={`${prefix}timeline-item-tail`}>\n <i />\n </div>\n <div className={itemNodeCls}>{finalItemNode}</div>\n </div>\n <div className={`${prefix}timeline-item-content`}>\n {\n title ? <div className={`${prefix}timeline-item-title`}>{title}</div> : null\n }\n {\n time ? <div className={`${prefix}timeline-item-time`}>{time}</div> : null\n }\n {\n content ? <div className={`${prefix}timeline-item-body`}>{content}</div> : null\n }\n </div>\n </div>\n ) : null;\n return (\n <li tabIndex=\"0\">\n {animation && folderIndex ? (\n <Expand\n animationAppear={false}\n beforeEnter={this.beforeEnter}\n beforeLeave={this.beforeEnter}\n afterEnter={this.beforeLeave}\n >\n {timelineNode}\n </Expand>\n ) : (\n timelineNode\n )}\n {folderIndex === index ? (\n <div className={folderCls}>\n <div className={dotTailCls} />\n {foldShow ? (\n <Button {...buttonProps}>\n {locale.fold}\n <Icon type=\"chevron-up\" />\n </Button>\n ) : (\n <Button {...buttonProps}>\n {locale.expand}\n <Icon type=\"chevron-down\" />\n </Button>\n )}\n </div>\n ) : null}\n </li>\n );\n }\n}\nexport default TimelineItem;\n","import Timeline from './view/timeline';\nimport TimelineItem from './view/timeline-item';\n\nTimeline.Item = TimelineItem;\n\nexport default Timeline;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Menu from '../../menu';\nimport { func, obj, dom } from '../../util';\n\nconst { Item, CheckboxItem } = Menu;\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\nconst { getOffset } = dom;\n\nexport default class TransferItem extends Component {\n static menuChildType = CheckboxItem.menuChildType;\n\n static propTypes = {\n prefix: PropTypes.string,\n mode: PropTypes.oneOf(['normal', 'simple']),\n value: PropTypes.array,\n disabled: PropTypes.bool,\n item: PropTypes.object,\n onCheck: PropTypes.func,\n onClick: PropTypes.func,\n needHighlight: PropTypes.bool,\n itemRender: PropTypes.func,\n draggable: PropTypes.bool,\n onDragStart: PropTypes.func,\n onDragOver: PropTypes.func,\n onDragEnd: PropTypes.func,\n onDrop: PropTypes.func,\n dragPosition: PropTypes.oneOf(['left', 'right']),\n dragValue: PropTypes.string,\n dragOverValue: PropTypes.string,\n panelPosition: PropTypes.oneOf(['left', 'right']),\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n highlight: false,\n };\n\n bindCtx(this, [\n 'getItemDOM',\n 'handleClick',\n 'handleDragStart',\n 'handleDragOver',\n 'handleDragEnd',\n 'handleDrop',\n ]);\n }\n\n componentDidMount() {\n if (this.props.needHighlight) {\n this.addHighlightTimer = setTimeout(() => {\n this.setState({\n highlight: true,\n });\n }, 1);\n this.removeHighlightTimer = setTimeout(() => {\n this.setState({\n highlight: false,\n });\n }, 201);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.addHighlightTimer);\n clearTimeout(this.removeHighlightTimer);\n }\n\n getItemDOM(ref) {\n this.item = ref;\n }\n\n handleClick() {\n const { onClick, panelPosition, item } = this.props;\n onClick(panelPosition === 'left' ? 'right' : 'left', item.value);\n }\n\n handleDragStart() {\n const { onDragStart, panelPosition, item } = this.props;\n onDragStart(panelPosition, item.value);\n }\n\n getDragGap(e) {\n const referenceTop = getOffset(e.currentTarget).top;\n const referenceHeight = e.currentTarget.offsetHeight;\n return e.pageY <= referenceTop + referenceHeight / 2 ? 'before' : 'after';\n }\n\n handleDragOver(e) {\n const { panelPosition, dragPosition, onDragOver, item } = this.props;\n if (panelPosition === dragPosition) {\n e.preventDefault();\n\n const dragGap = this.getDragGap(e);\n if (this.dragGap !== dragGap) {\n this.dragGap = dragGap;\n onDragOver(item.value);\n }\n }\n }\n\n handleDragEnd() {\n const { onDragEnd } = this.props;\n onDragEnd();\n }\n\n handleDrop(e) {\n e.preventDefault();\n\n const { onDrop, item, panelPosition, dragValue } = this.props;\n onDrop(panelPosition, dragValue, item.value, this.dragGap);\n }\n\n render() {\n const {\n prefix,\n mode,\n checked,\n disabled,\n item,\n onCheck,\n itemRender,\n draggable,\n dragOverValue,\n panelPosition,\n dragPosition,\n } = this.props;\n const others = pickOthers(Object.keys(TransferItem.propTypes), this.props);\n const { highlight } = this.state;\n const isSimple = mode === 'simple';\n\n const classNames = cx({\n [`${prefix}transfer-panel-item`]: true,\n [`${prefix}insert-${this.dragGap}`]:\n dragOverValue === item.value && panelPosition === dragPosition,\n [`${prefix}focused`]: highlight,\n [`${prefix}simple`]: isSimple,\n });\n\n const itemProps = {\n ref: this.getItemDOM,\n className: classNames,\n children: itemRender(item),\n disabled,\n draggable: draggable && !disabled,\n onDragStart: this.handleDragStart,\n onDragOver: this.handleDragOver,\n onDragEnd: this.handleDragEnd,\n onDrop: this.handleDrop,\n ...others,\n };\n if (isSimple) {\n if (!itemProps.disabled) {\n itemProps.onClick = this.handleClick;\n }\n\n return <Item {...itemProps} />;\n }\n\n return (\n <CheckboxItem checked={checked} onChange={onCheck.bind(this, item.value)} {...itemProps} />\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Checkbox from '../../checkbox';\nimport Search from '../../search';\nimport Menu from '../../menu';\nimport { func, htmlId } from '../../util';\nimport TransferItem from './transfer-item';\n\nconst { bindCtx } = func;\n\nexport default class TransferPanel extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n position: PropTypes.oneOf(['left', 'right']),\n mode: PropTypes.oneOf(['normal', 'simple']),\n dataSource: PropTypes.array,\n value: PropTypes.array,\n onChange: PropTypes.func,\n onMove: PropTypes.func,\n onMoveAll: PropTypes.func,\n disabled: PropTypes.bool,\n locale: PropTypes.object,\n title: PropTypes.node,\n showSearch: PropTypes.bool,\n filter: PropTypes.func,\n onSearch: PropTypes.func,\n searchPlaceholder: PropTypes.string,\n notFoundContent: PropTypes.node,\n listClassName: PropTypes.string,\n listStyle: PropTypes.object,\n itemRender: PropTypes.func,\n sortable: PropTypes.bool,\n onSort: PropTypes.func,\n baseId: PropTypes.string,\n customerList: PropTypes.func,\n showCheckAll: PropTypes.bool,\n };\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n searchedValue: '',\n dragValue: null,\n dragOverValue: null,\n };\n this.footerId = props.baseId\n ? htmlId.escapeForId(`${props.baseId}-panel-footer-${props.position}`)\n : '';\n this.headerId = props.baseId\n ? htmlId.escapeForId(`${props.baseId}-panel-header-${props.position}`)\n : '';\n\n bindCtx(this, [\n 'handleCheck',\n 'handleAllCheck',\n 'handleSearch',\n 'handleItemDragStart',\n 'handleItemDragOver',\n 'handleItemDragEnd',\n 'handleItemDrop',\n 'getListDOM',\n ]);\n this.firstRender = true;\n }\n\n componentDidMount() {\n this.firstRender = false;\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.dataSource.length !== this.props.dataSource.length && this.list) {\n if (this.list.scrollTop > 0) {\n this.list.scrollTop = 0;\n }\n }\n\n this.searched = false;\n }\n\n getListDOM(ref) {\n this.list = ref;\n }\n\n handleAllCheck(allChecked) {\n const { position, onChange } = this.props;\n\n let newValue;\n if (allChecked) {\n newValue = this.enabledDatasource.map(item => item.value);\n } else {\n newValue = [];\n }\n\n onChange && onChange(position, newValue);\n }\n\n handleCheck(itemValue, checked) {\n const { position, value, onChange } = this.props;\n\n const newValue = [...value];\n const index = value.indexOf(itemValue);\n if (checked && index === -1) {\n newValue.push(itemValue);\n } else if (!checked && index > -1) {\n newValue.splice(index, 1);\n }\n\n onChange && onChange(position, newValue);\n }\n\n handleSearch(searchedValue) {\n this.setState({\n searchedValue,\n });\n this.searched = true;\n\n const { onSearch, position } = this.props;\n onSearch(searchedValue, position);\n }\n\n handleItemDragStart(position, value) {\n this.setState({\n dragPosition: position,\n dragValue: value,\n });\n }\n\n handleItemDragOver(value) {\n this.setState({\n dragOverValue: value,\n });\n }\n\n handleItemDragEnd() {\n this.setState({\n dragOverValue: null,\n });\n }\n\n handleItemDrop(...args) {\n this.setState({\n dragOverValue: null,\n });\n\n this.props.onSort(...args);\n }\n\n renderHeader() {\n const { title, prefix } = this.props;\n\n return (\n <div id={this.headerId} className={`${prefix}transfer-panel-header`}>\n {title}\n </div>\n );\n }\n\n renderSearch() {\n const { prefix, searchPlaceholder, locale } = this.props;\n return (\n <Search\n aria-labelledby={this.headerId}\n shape=\"simple\"\n className={`${prefix}transfer-panel-search`}\n placeholder={searchPlaceholder || locale.searchPlaceholder}\n onChange={this.handleSearch}\n />\n );\n }\n\n renderList(dataSource) {\n const {\n prefix,\n position,\n mode,\n value,\n onMove,\n disabled,\n listClassName,\n listStyle,\n itemRender,\n sortable,\n customerList,\n\n } = this.props;\n const { dragPosition, dragValue, dragOverValue } = this.state;\n const newClassName = cx({\n [`${prefix}transfer-panel-list`]: true,\n [listClassName]: !!listClassName,\n });\n\n const customerPanel = customerList && customerList(this.props);\n if (customerPanel) {\n return (\n <div className={newClassName} style={listStyle} ref={this.getListDOM}>\n {customerPanel}\n </div>\n );\n }\n\n return dataSource.length ? (\n <Menu className={newClassName} style={listStyle} ref={this.getListDOM}>\n {dataSource.map(item => (\n <TransferItem\n key={item.value}\n prefix={prefix}\n mode={mode}\n checked={value.indexOf(item.value) > -1}\n disabled={disabled || item.disabled}\n item={item}\n onCheck={this.handleCheck}\n onClick={onMove}\n needHighlight={!this.firstRender && !this.searched}\n itemRender={itemRender}\n draggable={sortable}\n onDragStart={this.handleItemDragStart}\n onDragOver={this.handleItemDragOver}\n onDragEnd={this.handleItemDragEnd}\n onDrop={this.handleItemDrop}\n dragPosition={dragPosition}\n dragValue={dragValue}\n dragOverValue={dragOverValue}\n panelPosition={position}\n />\n ))}\n </Menu>\n ) : (\n <div className={newClassName} style={listStyle}>\n {this.renderNotFoundContent()}\n </div>\n );\n }\n\n renderNotFoundContent() {\n const { prefix, notFoundContent } = this.props;\n\n return (\n <div className={`${prefix}transfer-panel-not-found-container`}>\n <div className={`${prefix}transfer-panel-not-found`}>{notFoundContent}</div>\n </div>\n );\n }\n\n renderFooter() {\n const { prefix, position, mode, disabled, locale, showCheckAll } = this.props;\n if (mode === 'simple') {\n const { onMoveAll } = this.props;\n const classNames = cx({\n [`${prefix}transfer-panel-move-all`]: true,\n [`${prefix}disabled`]: disabled,\n });\n return (\n <div className={`${prefix}transfer-panel-footer`}>\n <a\n className={classNames}\n onClick={onMoveAll.bind(this, position === 'left' ? 'right' : 'left')}\n >\n {locale.moveAll}\n </a>\n </div>\n );\n }\n\n const { value, dataSource } = this.props;\n const checkedCount = value.length;\n const totalCount = dataSource.length;\n const totalEnabledCount = this.enabledDatasource.length;\n const checked = checkedCount > 0 && checkedCount >= totalEnabledCount;\n const indeterminate = checkedCount > 0 && checkedCount < totalEnabledCount;\n const items = totalCount > 1 ? locale.items : locale.item;\n const countLabel =\n checkedCount === 0 ? `${totalCount} ${items}` : `${checkedCount}/${totalCount} ${items}`;\n\n return (\n <div className={`${prefix}transfer-panel-footer`}>\n {showCheckAll && <Checkbox\n disabled={disabled}\n checked={checked}\n indeterminate={indeterminate}\n onChange={this.handleAllCheck}\n aria-labelledby={this.footerId}\n />\n }\n <span className={`${prefix}transfer-panel-count`} id={this.footerId}>\n {countLabel}\n </span>\n </div>\n );\n }\n\n render() {\n const { prefix, title, showSearch, filter } = this.props;\n const { searchedValue } = this.state;\n let dataSource = this.props.dataSource;\n this.enabledDatasource = dataSource.filter(item => !item.disabled);\n if (showSearch && searchedValue) {\n dataSource = dataSource.filter(item => filter(searchedValue, item));\n }\n\n return (\n <div className={`${prefix}transfer-panel`}>\n {title ? this.renderHeader() : null}\n {showSearch ? this.renderSearch() : null}\n {this.renderList(dataSource)}\n {this.renderFooter()}\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Button from '../../button';\nimport Icon from '../../icon';\nimport ConfigProvider from '../../config-provider';\nimport zhCN from '../../locale/zh-cn';\nimport { func, obj } from '../../util';\nimport TransferPanel from '../view/transfer-panel';\n\nconst { config } = ConfigProvider;\nconst { bindCtx } = func;\nconst { pickOthers } = obj;\n\n/**\n * Transfer\n */\nclass Transfer extends Component {\n static contextTypes = {\n prefix: PropTypes.string,\n };\n\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 移动选项模式\n */\n mode: PropTypes.oneOf(['normal', 'simple']),\n /**\n * 数据源\n */\n dataSource: PropTypes.arrayOf(PropTypes.object),\n /**\n * (用于受控)当前值\n */\n value: PropTypes.arrayOf(PropTypes.string),\n /**\n * (用于非受控)初始值\n */\n defaultValue: PropTypes.arrayOf(PropTypes.string),\n /**\n * 值发生改变的时候触发的回调函数\n * @param {Array} value 右面板值\n * @param {Array} data 右面板数据\n * @param {Object} extra 额外参数\n * @param {Array} extra.leftValue 左面板值\n * @param {Array} extra.leftData 左面板数据\n * @param {Array} extra.movedValue 发生移动的值\n * @param {Object} extra.movedData 发生移动的数据\n * @param {String} extra.direction 移动的方向,值为'left'或'right'\n */\n onChange: PropTypes.func,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 是否禁用左侧面板\n */\n leftDisabled: PropTypes.bool,\n /**\n * 是否禁用右侧面板\n */\n rightDisabled: PropTypes.bool,\n /**\n * 列表项渲染函数\n * @param {Object} data 数据\n * @return {ReactNode} 列表项内容\n */\n itemRender: PropTypes.func,\n /**\n * 是否显示搜索框\n */\n showSearch: PropTypes.bool,\n /**\n * 自定义搜索函数\n * @param {String} searchedValue 搜索的内容\n * @param {Object} data 数据\n * @return {Boolean} 是否匹配到\n * @default 根据 label 属性匹配\n */\n filter: PropTypes.func,\n /**\n * 搜索框输入时触发的回调函数\n * @param {String} searchedValue 搜索的内容\n * @param {String} position 搜索面板的位置\n */\n onSearch: PropTypes.func,\n /**\n * 搜索框占位符\n */\n searchPlaceholder: PropTypes.string,\n /**\n * 列表为空显示内容\n */\n notFoundContent: PropTypes.node,\n /**\n * 左右面板标题\n */\n titles: PropTypes.arrayOf(PropTypes.node),\n /**\n * 向右向左移动按钮显示内容\n * @default [<Icon type=\"chevron-right\" />, <Icon type=\"chevron-left\" />]\n */\n operations: PropTypes.arrayOf(PropTypes.node),\n /**\n * 左面板默认选中值\n */\n defaultLeftChecked: PropTypes.arrayOf(PropTypes.string),\n /**\n * 右面板默认选中值\n */\n defaultRightChecked: PropTypes.arrayOf(PropTypes.string),\n /**\n * 左右面板列表自定义样式类名\n */\n listClassName: PropTypes.string,\n /**\n * 左右面板列表自定义样式对象\n */\n listStyle: PropTypes.object,\n /**\n * 是否允许拖拽排序\n */\n sortable: PropTypes.bool,\n /**\n * 拖拽排序时触发的回调函数\n * @param {Array} value 排序后的值\n * @param {String} position 拖拽的面板位置,值为:left 或 right\n */\n onSort: PropTypes.func,\n /**\n * 自定义国际化文案对象\n */\n locale: PropTypes.object,\n /**\n * 请设置 id 以保证transfer的可访问性\n */\n id: PropTypes.string,\n /**\n * 接收 children 自定义渲染列表\n */\n children: PropTypes.func,\n /**\n * 是否显示底部全选 checkbox\n */\n showCheckAll: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n mode: 'normal',\n dataSource: [],\n defaultValue: [],\n disabled: false,\n leftDisabled: false,\n rightDisabled: false,\n showCheckAll: true,\n itemRender: data => data.label,\n showSearch: false,\n filter: (searchedValue, data) => {\n let labelString = '';\n const loop = arg => {\n if (React.isValidElement(arg) && arg.props.children) {\n React.Children.forEach(arg.props.children, loop);\n } else if (typeof arg === 'string') {\n labelString += arg;\n }\n };\n loop(data.label);\n\n return labelString.length >= searchedValue.length && labelString.indexOf(searchedValue) > -1;\n },\n onSearch: () => {},\n notFoundContent: 'Not Found',\n titles: [],\n operations: [],\n defaultLeftChecked: [],\n defaultRightChecked: [],\n sortable: false,\n onSort: () => {},\n locale: zhCN.Transfer,\n };\n\n static normalizeValue(value) {\n if (value) {\n if (Array.isArray(value)) {\n return value;\n }\n /* istanbul ignore next */\n return [value];\n }\n\n return [];\n }\n\n constructor(props, context) {\n super(props, context);\n\n const {\n value,\n defaultValue,\n defaultLeftChecked,\n defaultRightChecked,\n dataSource,\n rtl,\n operations,\n } = props;\n if (operations.length === 0) {\n operations.push(<Icon rtl={rtl} type=\"chevron-right\" />);\n operations.push(<Icon rtl={rtl} type=\"chevron-left\" />);\n }\n const { left, right } = this.filterCheckedValue(\n Transfer.normalizeValue(defaultLeftChecked),\n Transfer.normalizeValue(defaultRightChecked),\n dataSource,\n );\n\n this.state = {\n value: Transfer.normalizeValue('value' in props ? value : defaultValue),\n leftCheckedValue: left,\n rightCheckedValue: right,\n };\n\n this.leftValue = this.getLeftValue(dataSource, this.state.value);\n\n bindCtx(this, [\n 'handlePanelChange',\n 'handlePanelSort',\n 'handleMoveItem',\n 'handleSimpleMove',\n 'handleSimpleMoveAll',\n ]);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const st = {};\n\n let newValue;\n if ('value' in nextProps) {\n const value = Transfer.normalizeValue(nextProps.value);\n st.value = value;\n newValue = value;\n } else {\n /* istanbul ignore next */\n newValue = this.state.value;\n }\n this.leftValue = this.getLeftValue(nextProps.dataSource, newValue);\n\n const { left, right } = this.filterCheckedValue(\n this.state.leftCheckedValue,\n this.state.rightCheckedValue,\n nextProps.dataSource,\n );\n st.leftCheckedValue = left;\n st.rightCheckedValue = right;\n\n this.setState(st);\n }\n\n filterCheckedValue(left, right, dataSource) {\n const result = {\n left: [],\n right: [],\n };\n\n if (left.length || right.length) {\n const value = dataSource.map(item => item.value);\n value.forEach(itemValue => {\n if (left.indexOf(itemValue) > -1) {\n result.left.push(itemValue);\n } else if (right.indexOf(itemValue) > -1) {\n result.right.push(itemValue);\n }\n });\n }\n\n return result;\n }\n\n getLeftValue(dataSource, rightValue) {\n return dataSource\n .map(item => item.value)\n .filter(itemValue => {\n return rightValue.indexOf(itemValue) === -1;\n });\n }\n\n groupDatasource(value, itemValues, dataSource) {\n return value.reduce((ret, itemValue) => {\n const index = itemValues.indexOf(itemValue);\n if (index > -1) {\n ret.push(dataSource[index]);\n }\n return ret;\n }, []);\n }\n\n handlePanelChange(position, value) {\n const valuePropName = position === 'left' ? 'leftCheckedValue' : 'rightCheckedValue';\n this.setState({\n [valuePropName]: value,\n });\n }\n\n handlePanelSort(position, dragValue, referenceValue, dragGap) {\n const value = position === 'right' ? this.state.value : this.leftValue;\n const currentIndex = value.indexOf(dragValue);\n const referenceIndex = value.indexOf(referenceValue);\n let expectIndex = dragGap === 'before' ? referenceIndex : referenceIndex + 1;\n if (currentIndex === expectIndex) {\n return;\n }\n\n value.splice(currentIndex, 1);\n if (currentIndex < expectIndex) {\n expectIndex -= 1;\n }\n value.splice(expectIndex, 0, dragValue);\n\n this.setState(\n {\n value: this.state.value,\n },\n () => {\n this.props.onSort(value, position);\n },\n );\n }\n\n handleMoveItem(direction) {\n let rightValue;\n let leftValue;\n let movedValue;\n let valuePropName;\n\n const { value, leftCheckedValue, rightCheckedValue } = this.state;\n\n if (direction === 'right') {\n rightValue = leftCheckedValue.concat(value);\n leftValue = this.leftValue.filter(itemValue => leftCheckedValue.indexOf(itemValue) === -1);\n movedValue = leftCheckedValue;\n valuePropName = 'leftCheckedValue';\n } else {\n rightValue = value.filter(itemValue => rightCheckedValue.indexOf(itemValue) === -1);\n leftValue = rightCheckedValue.concat(this.leftValue);\n movedValue = rightCheckedValue;\n valuePropName = 'rightCheckedValue';\n }\n\n const st = { [valuePropName]: [] };\n\n this.setValueState(st, rightValue, leftValue, movedValue, direction);\n }\n\n handleSimpleMove(direction, v) {\n let rightValue;\n let leftValue;\n\n const { value } = this.state;\n\n if (direction === 'right') {\n rightValue = [v].concat(value);\n leftValue = this.leftValue.filter(itemValue => itemValue !== v);\n } else {\n rightValue = value.filter(itemValue => itemValue !== v);\n leftValue = [v].concat(this.leftValue);\n }\n\n this.setValueState({}, rightValue, leftValue, [v], direction);\n }\n\n handleSimpleMoveAll(direction) {\n let rightValue;\n let leftValue;\n let movedValue;\n\n const { dataSource } = this.props;\n const { value } = this.state;\n const disabledValue = dataSource.reduce((ret, item) => {\n if (item.disabled) {\n ret.push(item.value);\n }\n\n return ret;\n }, []);\n\n if (direction === 'right') {\n movedValue = this.leftValue.filter(itemValue => disabledValue.indexOf(itemValue) === -1);\n rightValue = movedValue.concat(value);\n leftValue = this.leftValue.filter(itemValue => disabledValue.indexOf(itemValue) > -1);\n } else {\n movedValue = value.filter(itemValue => disabledValue.indexOf(itemValue) === -1);\n rightValue = value.filter(itemValue => disabledValue.indexOf(itemValue) > -1);\n leftValue = movedValue.concat(this.leftValue);\n }\n\n this.setValueState({}, rightValue, leftValue, movedValue, direction);\n }\n\n // eslint-disable-next-line max-params\n setValueState(st, rightValue, leftValue, movedValue, direction) {\n const { dataSource } = this.props;\n const callback = () => {\n if ('onChange' in this.props) {\n const itemValues = dataSource.map(item => item.value);\n const rightData = this.groupDatasource(rightValue, itemValues, dataSource);\n const leftData = this.groupDatasource(leftValue, itemValues, dataSource);\n const movedData = this.groupDatasource(movedValue, itemValues, dataSource);\n\n this.props.onChange(rightValue, rightData, {\n leftValue,\n leftData,\n movedValue,\n movedData,\n direction,\n });\n }\n };\n\n if (!('value' in this.props)) {\n st.value = rightValue;\n this.leftValue = leftValue;\n }\n\n if (Object.keys(st).length) {\n this.setState(st, callback);\n } else {\n // eslint-disable-next-line callback-return\n callback();\n }\n }\n\n renderCenter() {\n const { prefix, mode, operations, disabled, leftDisabled, rightDisabled, locale } = this.props;\n const { leftCheckedValue, rightCheckedValue } = this.state;\n return (\n <div className={`${prefix}transfer-operations`}>\n {mode === 'simple' ? (\n <Icon className={`${prefix}transfer-move`} size=\"large\" type=\"arrows-swtich-horizontal\" />\n ) : (\n [\n <Button\n aria-label={locale.moveToRight}\n size=\"xs\"\n key=\"l2r\"\n className={`${prefix}transfer-operation`}\n type={leftCheckedValue.length ? 'primary' : 'normal'}\n disabled={leftDisabled || disabled || !leftCheckedValue.length}\n onClick={this.handleMoveItem.bind(this, 'right')}\n >\n {operations[0]}\n </Button>,\n <Button\n size=\"xs\"\n aria-label={locale.moveToLeft}\n key=\"r2l\"\n className={`${prefix}transfer-operation`}\n type={rightCheckedValue.length ? 'primary' : 'normal'}\n disabled={rightDisabled || disabled || !rightCheckedValue.length}\n onClick={this.handleMoveItem.bind(this, 'left')}\n >\n {operations[1]}\n </Button>,\n ]\n )}\n </div>\n );\n }\n\n render() {\n const {\n prefix,\n mode,\n disabled,\n className,\n dataSource,\n locale,\n showSearch,\n filter,\n onSearch,\n leftDisabled,\n rightDisabled,\n searchPlaceholder,\n notFoundContent,\n titles,\n listClassName,\n listStyle,\n itemRender,\n sortable,\n rtl,\n id,\n children,\n showCheckAll,\n } = this.props;\n const { value, leftCheckedValue, rightCheckedValue } = this.state;\n const itemValues = dataSource.map(item => item.value);\n const leftDatasource = this.groupDatasource(this.leftValue, itemValues, dataSource);\n const rightDatasource = this.groupDatasource(value, itemValues, dataSource);\n const panelProps = {\n prefix,\n mode,\n locale,\n showSearch,\n filter,\n onSearch,\n searchPlaceholder,\n notFoundContent,\n listClassName,\n listStyle,\n itemRender,\n onMove: this.handleSimpleMove,\n onMoveAll: this.handleSimpleMoveAll,\n onChange: this.handlePanelChange,\n sortable,\n onSort: this.handlePanelSort,\n baseId: id,\n customerList: children,\n showCheckAll,\n };\n const others = pickOthers(Object.keys(Transfer.propTypes), this.props);\n\n if (rtl) {\n others.dir = 'rtl';\n }\n return (\n <div className={cx(`${prefix}transfer`, className)} id={id} {...others}>\n <TransferPanel\n {...panelProps}\n position=\"left\"\n dataSource={leftDatasource}\n disabled={leftDisabled || disabled}\n value={leftCheckedValue}\n title={titles[0]}\n />\n {this.renderCenter()}\n <TransferPanel\n {...panelProps}\n position=\"right\"\n dataSource={rightDatasource}\n disabled={rightDisabled || disabled}\n value={rightCheckedValue}\n title={titles[1]}\n />\n </div>\n );\n }\n}\n\nexport default config(Transfer);\n","import Transfer from './view/transfer';\n\nexport default Transfer;\n","import React, { Component } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport Input from '../../input';\n\nexport default class TreeNodeInput extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n };\n\n componentDidMount() {\n const inputWrapperNode = findDOMNode(this);\n inputWrapperNode.querySelector('input').focus();\n }\n\n render() {\n const { prefix, ...others } = this.props;\n\n return <Input size=\"xs\" className={`${prefix}tree-node-input`} {...others} />;\n }\n}\n","import React, { Component, Children } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Icon from '../../icon';\nimport Checkbox from '../../checkbox';\nimport Animate from '../../animate';\nimport { func, obj, KEYCODE } from '../../util';\nimport TreeNodeInput from './tree-node-input';\n\nconst { Expand } = Animate;\nconst { bindCtx } = func;\nconst { isPromise, pickOthers, pickAttrsWith } = obj;\nconst isRoot = pos => /^0-(\\d)+$/.test(pos);\n\n/**\n * Tree.Node\n */\nexport default class TreeNode extends Component {\n static propTypes = {\n _key: PropTypes.string,\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 树节点\n */\n children: PropTypes.node,\n /**\n * 节点文本内容\n */\n label: PropTypes.node,\n /**\n * 单独设置是否支持选中,覆盖 Tree 的 selectable\n */\n selectable: PropTypes.bool,\n /**\n * 单独设置是否出现复选框,覆盖 Tree 的 checkable\n */\n checkable: PropTypes.bool,\n /**\n * 单独设置是否支持编辑,覆盖 Tree 的 editable\n */\n editable: PropTypes.bool,\n /**\n * 单独设置是否支持拖拽,覆盖 Tree 的 draggable\n */\n draggable: PropTypes.bool,\n /**\n * 是否禁止节点响应\n */\n disabled: PropTypes.bool,\n /**\n * 是否禁止勾选节点复选框\n */\n checkboxDisabled: PropTypes.bool,\n /**\n * 是否是叶子节点,设置loadData时生效\n */\n isLeaf: PropTypes.bool,\n root: PropTypes.object,\n eventKey: PropTypes.string,\n pos: PropTypes.string,\n expanded: PropTypes.bool,\n selected: PropTypes.bool,\n checked: PropTypes.bool,\n indeterminate: PropTypes.bool,\n dragOver: PropTypes.bool,\n dragOverGapTop: PropTypes.bool,\n dragOverGapBottom: PropTypes.bool,\n parentNode: PropTypes.object,\n onKeyDown: PropTypes.func,\n size: PropTypes.number,\n };\n\n static defaultProps = {\n label: '---',\n rtl: false,\n disabled: false,\n checkboxDisabled: false,\n isLeaf: false,\n size: 1,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n editing: false,\n loading: false,\n label: props.label,\n };\n\n bindCtx(this, [\n 'handleExpand',\n 'handleSelect',\n 'handleCheck',\n 'handleEditStart',\n 'handleEditFinish',\n 'handleRightClick',\n 'handleDragStart',\n 'handleDragEnter',\n 'handleDragOver',\n 'handleDragLeave',\n 'handleDragEnd',\n 'handleDrop',\n 'handleInputKeyDown',\n 'handleKeyDown',\n ]);\n }\n\n componentDidMount() {\n this.itemNode = findDOMNode(this.refs.node);\n this.setFocus();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('label' in nextProps) {\n this.setState({\n label: nextProps.label,\n });\n }\n }\n\n componentDidUpdate() {\n this.setFocus();\n }\n\n getParentNode() {\n return this.props.root.getParentNode(this.props.pos);\n }\n\n focusable() {\n const { root, disabled } = this.props;\n const { focusable } = root.props;\n return focusable && !disabled;\n }\n\n getFocused() {\n const { _key, root } = this.props;\n const { focusedKey } = root.state;\n return focusedKey === _key;\n }\n\n setFocus() {\n const focused = this.getFocused();\n if (focused && this.focusable()) {\n this.itemNode.focus({ preventScroll: true });\n }\n }\n\n handleExpand(e) {\n const { root, expanded, eventKey } = this.props;\n\n if (root.props.isNodeBlock) {\n e.stopPropagation();\n }\n\n const { loading } = this.state;\n if (loading) {\n return;\n }\n\n const returnValue = root.handleExpand(!expanded, eventKey, this);\n if (isPromise(returnValue)) {\n this.setLoading(true);\n return returnValue.then(\n () => {\n this.setLoading(false);\n },\n () => {\n this.setLoading(false);\n },\n );\n }\n }\n\n setLoading(loading) {\n this.setState({ loading });\n }\n\n handleSelect(e) {\n e.preventDefault();\n\n const { root, selected, eventKey } = this.props;\n root.handleSelect(!selected, eventKey, this, e);\n }\n\n handleCheck() {\n const { root, checked, eventKey } = this.props;\n root.handleCheck(!checked, eventKey, this);\n }\n\n handleEditStart(e) {\n e.preventDefault();\n\n this.setState({\n editing: true,\n });\n }\n\n handleEditFinish(e) {\n const label = e.target.value;\n\n this.setState({\n editing: false,\n label,\n });\n\n const { root, eventKey } = this.props;\n root.props.onEditFinish(eventKey, label, this);\n }\n\n handleRightClick(e) {\n this.props.root.props.onRightClick({\n event: e,\n node: this,\n });\n }\n\n handleDragStart(e) {\n e.stopPropagation();\n\n this.props.root.handleDragStart(e, this);\n }\n\n handleDragEnter(e) {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.root.handleDragEnter(e, this);\n }\n\n handleDragOver(e) {\n if (this.props.root.canDrop(this)) {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.root.handleDragOver(e, this);\n }\n }\n\n handleDragLeave(e) {\n e.stopPropagation();\n\n this.props.root.handleDragLeave(e, this);\n }\n\n handleDragEnd(e) {\n e.stopPropagation();\n\n this.props.root.handleDragEnd(e, this);\n }\n\n handleDrop(e) {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.root.handleDrop(e, this);\n }\n\n handleInputKeyDown(e) {\n if (e.keyCode === KEYCODE.ENTER) {\n this.handleEditFinish(e);\n }\n }\n\n handleKeyDown(e) {\n const { _key, root, disabled } = this.props;\n if (disabled) {\n return;\n }\n\n if (this.focusable()) {\n root.handleItemKeyDown(_key, this, e);\n }\n\n this.props.onKeyDown && this.props.onKeyDown(e);\n }\n\n addCallbacks(props) {\n const { disabled, root } = this.props;\n if (!disabled) {\n const selectable =\n typeof this.props.selectable !== 'undefined'\n ? this.props.selectable\n : root.props.selectable;\n if (selectable) {\n props.onClick = this.handleSelect;\n }\n const editable =\n typeof this.props.editable !== 'undefined' ? this.props.editable : root.props.editable;\n if (editable) {\n props.onDoubleClick = this.handleEditStart;\n }\n const draggable =\n typeof this.props.draggable !== 'undefined' ? this.props.draggable : root.props.draggable;\n if (draggable) {\n props.draggable = true;\n props.onDragStart = this.handleDragStart;\n props.onDragEnd = this.handleDragEnd;\n }\n props.onContextMenu = this.handleRightClick;\n }\n }\n\n renderSwitcher() {\n const { prefix, disabled, expanded, root } = this.props;\n const { loadData } = root.props;\n const { loading } = this.state;\n const { showLine } = this;\n\n const lineState = showLine ? 'line' : 'noline';\n const className = cx({\n [`${prefix}tree-switcher`]: true,\n [`${prefix}${lineState}`]: !loading,\n [`${prefix}close`]: !loading && !expanded,\n [`${prefix}disabled`]: disabled,\n [`${prefix}loading`]: loading,\n [`${prefix}loading-${lineState}`]: loading,\n });\n const iconType =\n loadData && loading ? 'loading' : 'triangle-down';\n\n return (\n <span className={className}>\n {/* {this.renderRightAngle()} */}\n <Icon className={`${prefix}tree-switcher-icon`} type={iconType} />\n </span>\n );\n }\n\n renderNoopSwitcher() {\n const { prefix, pos } = this.props;\n const { showLine } = this;\n\n const lineState = showLine ? 'line' : 'noline';\n const className = cx({\n [`${prefix}tree-switcher`]: true,\n [`${prefix}noop-${lineState}`]: true,\n [`${prefix}noop-line-noroot`]: showLine && !isRoot(pos),\n });\n\n return <span className={className}>{this.renderRightAngle()}</span>;\n }\n\n renderRightAngle() {\n const { prefix, pos } = this.props;\n return null;\n // return this.showLine && !isRoot(pos) ? <span className={`${prefix}tree-right-angle`} /> : null;\n }\n\n renderCheckbox() {\n const { checked, indeterminate, disabled, checkboxDisabled } = this.props;\n const { label } = this.state;\n\n return (\n <Checkbox\n aria-label={typeof label === 'string' ? label : null}\n checked={checked}\n tabIndex={-1}\n indeterminate={indeterminate}\n disabled={disabled || checkboxDisabled}\n onClick={(e) => e.stopPropagation()}\n onChange={this.handleCheck}\n />\n );\n }\n\n renderLabel() {\n const { prefix, root, disabled } = this.props;\n const { isNodeBlock } = root.props;\n const { label } = this.state;\n const selectable =\n typeof this.props.selectable !== 'undefined' ? this.props.selectable : root.props.selectable;\n const labelProps = {\n className: cx({\n [`${prefix}tree-node-label`]: true,\n [`${prefix}tree-node-label-selectable`]: selectable && !disabled,\n }),\n };\n\n if (!isNodeBlock) {\n this.addCallbacks(labelProps);\n }\n\n return (\n <div className={`${prefix}tree-node-label-wrapper`} ref=\"labelWrapper\">\n <div {...labelProps}>{label}</div>\n </div>\n );\n }\n\n renderInput() {\n const { prefix } = this.props;\n const { label } = this.state;\n return (\n <div className={`${prefix}tree-node-label-wrapper`} ref=\"labelWrapper\">\n <TreeNodeInput\n prefix={prefix}\n defaultValue={label}\n onBlur={this.handleEditFinish}\n onKeyDown={this.handleInputKeyDown}\n />\n </div>\n );\n }\n\n renderChildTree(hasChildTree) {\n const { prefix, children, expanded, root } = this.props;\n const { animation } = root.props;\n\n let childTree =\n expanded && hasChildTree ? (\n <ul role=\"group\" className={`${prefix}tree-child-tree`}>\n {children}\n </ul>\n ) : null;\n if (animation) {\n childTree = <Expand animationAppear={false}>{childTree}</Expand>;\n }\n\n return childTree;\n }\n\n render() {\n const {\n prefix,\n rtl,\n className,\n children,\n isLeaf,\n root,\n pos,\n selected,\n checked,\n disabled,\n expanded,\n dragOver,\n dragOverGapTop,\n dragOverGapBottom,\n _key,\n size,\n } = this.props;\n const {\n loadData,\n isNodeBlock,\n showLine,\n draggable: rootDraggable,\n filterTreeNode,\n } = root.props;\n const { label } = this.state;\n\n this.showLine = !isNodeBlock && showLine;\n const indexArr = pos.split('-');\n\n const ARIA_PREFIX = 'aria-';\n const ariaProps = pickAttrsWith(this.props, ARIA_PREFIX);\n const others = pickOthers(Object.keys(TreeNode.propTypes), this.props);\n\n // remove aria keys\n Object.keys(others).forEach(key => {\n if (key.match(ARIA_PREFIX)) {\n delete others[key];\n }\n });\n\n if (rootDraggable) {\n others.onDragEnter = this.handleDragEnter;\n others.onDragOver = this.handleDragOver;\n others.onDragLeave = this.handleDragLeave;\n others.onDrop = this.handleDrop;\n }\n const newClassName = cx({\n [`${prefix}tree-node`]: true,\n [`${prefix}filtered`]: !!filterTreeNode && !!root.filterTreeNode(this),\n [className]: !!className,\n });\n\n const innerClassName = cx({\n [`${prefix}tree-node-inner`]: true,\n [`${prefix}selected`]: selected,\n [`${prefix}disabled`]: disabled,\n [`${prefix}drag-over`]: dragOver,\n [`${prefix}drag-over-gap-top`]: dragOverGapTop,\n [`${prefix}drag-over-gap-bottom`]: dragOverGapBottom,\n });\n\n const defaultPaddingLeft =\n typeof isNodeBlock === 'object' ? parseInt(isNodeBlock.defaultPaddingLeft || 0) : 0;\n const indent = typeof isNodeBlock === 'object' ? parseInt(isNodeBlock.indent || 24) : 24;\n const level = indexArr.length - 2;\n const paddingLeftProp = rtl ? 'paddingRight' : 'paddingLeft';\n\n const innerStyle = isNodeBlock\n ? { [paddingLeftProp]: `${indent * level + defaultPaddingLeft}px` }\n : null;\n\n const innerProps = {\n className: innerClassName,\n style: innerStyle,\n onKeyDown: this.handleKeyDown,\n ...ariaProps,\n };\n if (isNodeBlock) {\n this.addCallbacks(innerProps);\n }\n\n // this.addCallbacks(innerProps);\n\n const hasChildTree = children && Children.count(children);\n const canExpand = hasChildTree || (loadData && !isLeaf);\n const checkable =\n typeof this.props.checkable !== 'undefined' ? this.props.checkable : root.props.checkable;\n const { editing } = this.state;\n\n innerProps.tabIndex = root.tabbableKey === _key ? '0' : '-1';\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n return (\n <li role=\"presentation\" className={newClassName} {...others}>\n <div\n onClick={disabled ? null : this.handleExpand}\n ref=\"node\"\n role=\"treeitem\"\n aria-selected={selected}\n aria-disabled={disabled}\n aria-checked={checked}\n aria-expanded={expanded && !!hasChildTree}\n aria-label={typeof label === 'string' ? label : null}\n aria-level={level + 1}\n aria-posinset={Number(indexArr[indexArr.length - 1]) + 1}\n aria-setsize={size}\n {...innerProps}\n >\n {canExpand ? this.renderSwitcher() : this.renderNoopSwitcher()}\n {checkable ? this.renderCheckbox() : null}\n {editing ? this.renderInput() : this.renderLabel()}\n </div>\n {this.renderChildTree(hasChildTree)}\n </li>\n );\n }\n}\n","/* eslint-disable valid-jsdoc */\nexport function normalizeToArray(keys) {\n if (keys !== undefined && keys !== null && keys !== '') {\n if (Array.isArray(keys)) {\n return [...keys];\n }\n\n return [keys];\n }\n\n return [];\n}\n/**\n * 过滤子节点\n * @param {Array} keys\n * @param {Object} _k2n\n */\nexport function filterChildKey(keys, _k2n) {\n const newKeys = [...keys]\n .filter(key => !!_k2n[key])\n .sort((prev, next) => {\n return getDepth(prev, _k2n) - getDepth(next, _k2n);\n });\n\n for (let i = 0; i < newKeys.length; i++) {\n for (let j = 0; j < newKeys.length; j++) {\n if (i !== j && isDescendantOrSelf(_k2n[newKeys[i]].pos, _k2n[newKeys[j]].pos)) {\n newKeys.splice(j, 1);\n j--;\n }\n }\n }\n\n return newKeys;\n}\n\nexport function filterParentKey(keys, _k2n) {\n const newKeys = [...keys]\n .filter(key => !!_k2n[key])\n .sort((prev, next) => {\n return getDepth(next, _k2n) - getDepth(prev, _k2n);\n });\n\n for (let i = 0; i < newKeys.length; i++) {\n for (let j = 0; j < newKeys.length; j++) {\n if (i !== j && isDescendantOrSelf(_k2n[newKeys[j]].pos, _k2n[newKeys[i]].pos)) {\n newKeys.splice(j, 1);\n j--;\n }\n }\n }\n\n return newKeys;\n}\n\nexport function isDescendantOrSelf(currentPos, targetPos) {\n if (!currentPos || !targetPos) {\n return false;\n }\n\n const currentNums = currentPos.split('-');\n const targetNums = targetPos.split('-');\n\n return (\n currentNums.length <= targetNums.length &&\n currentNums.every((num, index) => {\n return num === targetNums[index];\n })\n );\n}\n\nexport function isSiblingOrSelf(currentPos, targetPos) {\n const currentNums = currentPos.split('-').slice(0, -1);\n const targetNums = targetPos.split('-').slice(0, -1);\n\n return (\n currentNums.length === targetNums.length &&\n currentNums.every((num, index) => {\n return num === targetNums[index];\n })\n );\n}\n\n// eslint-disable-next-line max-statements\nexport function getAllCheckedKeys(checkedKeys, _k2n, _p2n) {\n checkedKeys = normalizeToArray(checkedKeys);\n const filteredKeys = checkedKeys.filter(key => !!_k2n[key]);\n let flatKeys = filterChildKey(filteredKeys, _k2n);\n const childChecked = child => flatKeys.indexOf(child.key) > -1;\n const removeKey = child => flatKeys.splice(flatKeys.indexOf(child.key), 1);\n const addParentKey = (i, parent) => flatKeys.splice(i, 0, parent.key);\n const keys = [...flatKeys];\n for (let i = 0; i < keys.length; i++) {\n const pos = _k2n[keys[i]].pos;\n const nums = pos.split('-');\n if (nums.length === 2) {\n break;\n }\n for (let j = nums.length - 2; j > 0; j--) {\n const parentPos = nums.slice(0, j + 1).join('-');\n const parent = _p2n[parentPos];\n const parentChecked = parent.children.every(childChecked);\n if (parentChecked) {\n parent.children.forEach(removeKey);\n addParentKey(i, parent);\n } else {\n break;\n }\n }\n }\n\n const newKeys = [];\n if (flatKeys.length) {\n flatKeys = flatKeys.reverse();\n const ps = Object.keys(_p2n);\n for (let i = 0; i < flatKeys.length; i++) {\n const pos = _k2n[flatKeys[i]].pos;\n for (let j = 0; j < ps.length; j++) {\n if (isDescendantOrSelf(pos, ps[j])) {\n newKeys.push(_p2n[ps[j]].key);\n ps.splice(j, 1);\n j--;\n }\n }\n }\n }\n\n return newKeys;\n}\n\nfunction getDepth(key, _k2n) {\n return _k2n[key].pos.split('-').length;\n}\n","import React, { Component, Children, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { func, dom, obj, KEYCODE } from '../../util';\nimport TreeNode from './tree-node';\nimport {\n normalizeToArray,\n isDescendantOrSelf,\n isSiblingOrSelf,\n filterChildKey,\n filterParentKey,\n getAllCheckedKeys,\n} from './util';\n\nconst { bindCtx, noop } = func;\nconst { getOffset } = dom;\nconst { pickOthers, isPlainObject } = obj;\n\n/**\n * Tree\n */\nexport default class Tree extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n rtl: PropTypes.bool,\n pure: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 树节点\n */\n children: PropTypes.node,\n /**\n * 数据源,该属性优先级高于 children\n */\n dataSource: PropTypes.array,\n /**\n * 是否显示树的线\n */\n showLine: PropTypes.bool,\n /**\n * 是否支持选中节点\n */\n selectable: PropTypes.bool,\n /**\n * (用于受控)当前选中节点 key 的数组\n */\n selectedKeys: PropTypes.arrayOf(PropTypes.string),\n /**\n * (用于非受控)默认选中节点 key 的数组\n */\n defaultSelectedKeys: PropTypes.arrayOf(PropTypes.string),\n /**\n * 选中或取消选中节点时触发的回调函数\n * @param {Array} selectedKeys 选中节点key的数组\n * @param {Object} extra 额外参数\n * @param {Array} extra.selectedNodes 选中节点的数组\n * @param {Object} extra.node 当前操作的节点\n * @param {Boolean} extra.selected 当前操作是否是选中\n */\n onSelect: PropTypes.func,\n /**\n * 是否支持多选\n */\n multiple: PropTypes.bool,\n /**\n * 是否支持勾选节点的复选框\n */\n checkable: PropTypes.bool,\n /**\n * (用于受控)当前勾选复选框节点 key 的数组或 `{checked: Array, indeterminate: Array}` 的对象\n */\n checkedKeys: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.object]),\n /**\n * (用于非受控)默认勾选复选框节点 key 的数组\n */\n defaultCheckedKeys: PropTypes.arrayOf(PropTypes.string),\n /**\n * 勾选节点复选框是否完全受控(父子节点选中状态不再关联)\n */\n checkStrictly: PropTypes.bool,\n /**\n * 定义选中时回填的方式\n * @enumdesc 返回所有选中的节点, 父子节点都选中时只返回父节点, 父子节点都选中时只返回子节点\n */\n checkedStrategy: PropTypes.oneOf(['all', 'parent', 'child']),\n /**\n * 勾选或取消勾选复选框时触发的回调函数\n * @param {Array} checkedKeys 勾选复选框节点key的数组\n * @param {Object} extra 额外参数\n * @param {Array} extra.checkedNodes 勾选复选框节点的数组\n * @param {Array} extra.checkedNodesPositions 包含有勾选复选框节点和其位置的对象的数组\n * @param {Array} extra.indeterminateKeys 半选复选框节点 key 的数组\n * @param {Object} extra.node 当前操作的节点\n * @param {Boolean} extra.checked 当前操作是否是勾选\n */\n onCheck: PropTypes.func,\n /**\n * (用于受控)当前展开的节点 key 的数组\n */\n expandedKeys: PropTypes.arrayOf(PropTypes.string),\n /**\n * (用于非受控)默认展开的节点 key 的数组\n */\n defaultExpandedKeys: PropTypes.arrayOf(PropTypes.string),\n /**\n * 是否默认展开所有节点\n */\n defaultExpandAll: PropTypes.bool,\n /**\n * 是否自动展开父节点\n */\n autoExpandParent: PropTypes.bool,\n /**\n * 展开或收起节点时触发的回调函数\n * @param {Array} expandedKeys 展开的节点key的数组\n * @param {Object} extra 额外参数\n * @param {Object} extra.node 当前操作的节点\n * @param {Boolean} extra.expanded 当前操作是否是展开\n */\n onExpand: PropTypes.func,\n /**\n * 是否支持编辑节点内容\n */\n editable: PropTypes.bool,\n /**\n * 编辑节点内容完成时触发的回调函数\n * @param {String} key 编辑节点的 key\n * @param {String} label 编辑节点完成时节点的文本\n * @param {Object} node 当前编辑的节点\n */\n onEditFinish: PropTypes.func,\n /**\n * 是否支持拖拽节点\n */\n draggable: PropTypes.bool,\n /**\n * 开始拖拽节点时触发的回调函数\n * @param {Object} info 拖拽信息\n * @param {Object} info.event 事件对象\n * @param {Object} info.node 拖拽的节点\n */\n onDragStart: PropTypes.func,\n /**\n * 拖拽节点进入目标节点时触发的回调函数\n * @param {Object} info 拖拽信息\n * @param {Object} info.event 事件对象\n * @param {Object} info.node 目标节点\n * @param {Array} info.expandedKeys 当前展开的节点key的数组\n */\n onDragEnter: PropTypes.func,\n /**\n * 拖拽节点在目标节点上移动的时候触发的回调函数\n * @param {Object} info 拖拽信息\n * @param {Object} info.event 事件对象\n * @param {Object} info.node 目标节点\n */\n onDragOver: PropTypes.func,\n /**\n * 拖拽节点离开目标节点时触发的回调函数\n * @param {Object} info 拖拽信息\n * @param {Object} info.event 事件对象\n * @param {Object} info.node 目标节点\n */\n onDragLeave: PropTypes.func,\n /**\n * 拖拽节点拖拽结束时触发的回调函数\n * @param {Object} info 拖拽信息\n * @param {Object} info.event 事件对象\n * @param {Object} info.node 目标节点\n */\n onDragEnd: PropTypes.func,\n /**\n * 拖拽节点放入目标节点内或前后触发的回调函数\n * @param {Object} info 拖拽信息\n * @param {Object} info.event 事件对象\n * @param {Object} info.node 目标节点\n * @param {Object} info.dragNode 拖拽的节点\n * @param {Array} info.dragNodesKeys 拖拽的节点和其子节点 key 的数组\n * @param {Number} info.dropPosition 放置位置,-1代表当前节点前,0代表当前节点里,1代表当前节点后\n */\n onDrop: PropTypes.func,\n /**\n * 节点是否可被作为拖拽的目标节点\n * @param {Object} info 拖拽信息\n * @param {Object} info.node 目标节点\n * @param {Object} info.dragNode 拖拽的节点\n * @param {Array} info.dragNodesKeys 拖拽的节点和其子节点 key 的数组\n * @param {Number} info.dropPosition 放置位置,-1代表当前节点前,0代表当前节点里,1代表当前节点后\n * @return {Boolean} 是否可以被当作目标节点\n */\n canDrop: PropTypes.func,\n /**\n * 异步加载数据的函数\n * @param {Object} node 被点击展开的节点\n */\n loadData: PropTypes.func,\n /**\n * 按需筛选高亮节点\n * @param {Object} node 待筛选的节点\n * @return {Boolean} 是否被筛选中\n */\n filterTreeNode: PropTypes.func,\n /**\n * 右键点击节点时触发的回调函数\n * @param {Object} info 信息对象\n * @param {Object} info.event 事件对象\n * @param {Object} info.node 点击的节点\n */\n onRightClick: PropTypes.func,\n /**\n * 设置节点是否占满剩余空间,一般用于统一在各节点右侧添加元素(借助 flex 实现,暂时只支持 ie10+)\n */\n isLabelBlock: PropTypes.bool,\n /**\n * 设置节点是否占满一行\n */\n isNodeBlock: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n /**\n * 是否开启展开收起动画\n */\n animation: PropTypes.bool,\n /**\n * 当前获得焦点的子菜单或菜单项 key 值\n */\n focusedKey: PropTypes.string,\n focusable: PropTypes.bool,\n autoFocus: PropTypes.bool,\n onItemFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemKeyDown: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n rtl: false,\n pure: false,\n showLine: false,\n selectable: true,\n editable: false,\n multiple: false,\n checkable: false,\n checkStrictly: false,\n checkedStrategy: 'all',\n draggable: false,\n autoExpandParent: true,\n defaultExpandAll: false,\n defaultExpandedKeys: [],\n defaultCheckedKeys: [],\n defaultSelectedKeys: [],\n onExpand: noop,\n onCheck: noop,\n onSelect: noop,\n onDragStart: noop,\n onDragEnter: noop,\n onDragOver: noop,\n onDragLeave: noop,\n onDragEnd: noop,\n onDrop: noop,\n canDrop: () => true,\n onEditFinish: noop,\n onRightClick: noop,\n isLabelBlock: false,\n isNodeBlock: false,\n animation: true,\n focusable: true,\n autoFocus: false,\n onItemFocus: noop,\n onItemKeyDown: noop,\n };\n\n constructor(props) {\n super(props);\n\n this.updateCache(props);\n\n const { focusable, autoFocus, focusedKey } = this.props;\n\n if (focusable) {\n this.tabbableKey = this.getFirstAvaliablelChildKey('0');\n }\n\n this.indeterminateKeys = [];\n this.state = {\n expandedKeys: this.getExpandedKeys(props),\n selectedKeys: this.getSelectedKeys(props),\n checkedKeys: this.getCheckedKeys(props),\n focusedKey:\n 'focusedKey' in this.props ? focusedKey : focusable && autoFocus ? this.tabbableKey : null,\n };\n\n bindCtx(this, ['handleExpand', 'handleSelect', 'handleCheck', 'handleBlur']);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateCache(nextProps);\n\n const st = {};\n\n if ('expandedKeys' in nextProps) {\n st.expandedKeys = this.getExpandedKeys(nextProps, true);\n }\n if ('selectedKeys' in nextProps) {\n st.selectedKeys = this.getSelectedKeys(nextProps, true);\n }\n if ('checkedKeys' in nextProps) {\n st.checkedKeys = this.getCheckedKeys(nextProps, true);\n }\n\n this.indeterminateKeys = this.getIndeterminateKeys(\n st.checkedKeys || this.state.checkedKeys || [],\n );\n\n if (Object.keys(st).length) {\n this.setState(st);\n }\n }\n\n updateCache(props) {\n this._k2n = {};\n this._p2n = {};\n\n if ('dataSource' in props) {\n const loop = (data, prefix = '0') => data.forEach((item, index) => {\n const pos = `${prefix}-${index}`;\n let { key } = item;\n key = key || pos;\n const newItem = { ...item, key, pos };\n const { children } = item;\n if (children && children.length) {\n loop(children, pos);\n }\n this._k2n[key] = this._p2n[pos] = newItem;\n });\n loop(props.dataSource);\n } else if ('children' in props) {\n const loop = (children, prefix = '0') => Children.map(children, (node, index) => {\n if (!React.isValidElement(node)) {\n return;\n }\n\n const pos = `${prefix}-${index}`;\n let { key } = node;\n key = key || pos;\n const newItem = { ...node.props, key, pos };\n\n const { children } = node.props;\n if (children && Children.count(children)) {\n newItem.children = loop(children, pos);\n }\n this._k2n[key] = this._p2n[pos] = newItem;\n return newItem;\n });\n loop(props.children);\n }\n }\n\n setFocusKey() {\n const { selectedKeys = [] } = this.state;\n this.setState({\n focusedKey: selectedKeys.length > 0 ? selectedKeys[0] : this.getFirstAvaliablelChildKey('0'),\n });\n }\n\n getExpandedKeys(props, willReceiveProps) {\n let expandedKeys;\n\n if (!willReceiveProps && props.defaultExpandAll) {\n expandedKeys = Object.keys(this._k2n).filter(key => {\n const { children } = this._k2n[key];\n return children && children.length;\n });\n } else {\n expandedKeys =\n 'expandedKeys' in props\n ? props.expandedKeys\n : willReceiveProps\n ? []\n : props.defaultExpandedKeys;\n expandedKeys = normalizeToArray(expandedKeys);\n\n if (props.autoExpandParent) {\n const newExpandedKeys = [];\n\n const expandedPoss = expandedKeys.reduce((ret, key) => {\n const pos = this._k2n[key] && this._k2n[key].pos;\n if (pos) {\n ret.push(pos);\n newExpandedKeys.push(key);\n }\n return ret;\n }, []);\n\n expandedPoss.forEach(pos => {\n const nums = pos.split('-');\n if (nums.length === 2) {\n return;\n }\n for (let i = 1; i <= nums.length - 2; i++) {\n const ancestorPos = nums.slice(0, i + 1).join('-');\n const ancestorKey = this._p2n[ancestorPos].key;\n if (newExpandedKeys.indexOf(ancestorKey) === -1) {\n newExpandedKeys.push(ancestorKey);\n }\n }\n });\n\n return newExpandedKeys;\n }\n }\n\n return expandedKeys;\n }\n\n getAvailableKey(pos, prev) {\n const ps = Object.keys(this._p2n).filter(p => this.isAvailablePos(pos, p));\n if (ps.length > 1) {\n const index = ps.indexOf(pos);\n let targetIndex;\n if (prev) {\n targetIndex = index === 0 ? ps.length - 1 : index - 1;\n } else {\n targetIndex = index === ps.length - 1 ? 0 : index + 1;\n }\n\n return this._p2n[ps[targetIndex]].key;\n }\n\n return null;\n }\n\n getFirstAvaliablelChildKey(parentPos) {\n const pos = Object.keys(this._p2n).find(p => this.isAvailablePos(`${parentPos}-0`, p));\n return pos ? this._p2n[pos].key : null;\n }\n\n isAvailablePos(refPos, targetPos) {\n const { disabled } = this._p2n[targetPos];\n\n return this.isSibling(refPos, targetPos) && !disabled;\n }\n\n isSibling(currentPos, targetPos) {\n const currentNums = currentPos.split('-').slice(0, -1);\n const targetNums = targetPos.split('-').slice(0, -1);\n\n return (\n currentNums.length === targetNums.length &&\n currentNums.every((num, index) => {\n return num === targetNums[index];\n })\n );\n }\n\n getParentKey(pos) {\n return this._p2n[pos.slice(0, pos.length - 2)].key;\n }\n\n getSelectedKeys(props, willReceiveProps) {\n let selectedKeys =\n 'selectedKeys' in props\n ? props.selectedKeys\n : willReceiveProps\n ? []\n : props.defaultSelectedKeys;\n selectedKeys = normalizeToArray(selectedKeys);\n\n const newSelectKeys = selectedKeys.filter(key => {\n return this._k2n[key];\n });\n return newSelectKeys;\n }\n\n /* istanbul ignore next */\n getCheckedKeys(props, willReceiveProps) {\n let checkedKeys = props.defaultCheckedKeys;\n\n if ('checkedKeys' in props) {\n checkedKeys = props.checkedKeys;\n } else if (willReceiveProps) {\n checkedKeys = [];\n }\n\n const { checkStrictly } = this.props;\n if (checkStrictly) {\n if (isPlainObject(checkedKeys)) {\n const { checked, indeterminate } = checkedKeys;\n checkedKeys = normalizeToArray(checked);\n this.indeterminateKeys = normalizeToArray(indeterminate);\n } else {\n checkedKeys = normalizeToArray(checkedKeys);\n }\n\n checkedKeys = checkedKeys.filter(key => !!this._k2n[key]);\n } else {\n checkedKeys = getAllCheckedKeys(checkedKeys, this._k2n, this._p2n);\n checkedKeys = checkedKeys.filter(key => !!this._k2n[key]);\n\n this.indeterminateKeys = this.getIndeterminateKeys(checkedKeys);\n }\n\n return checkedKeys;\n }\n\n processKey(keys, key, add) {\n const index = keys.indexOf(key);\n if (add && index === -1) {\n keys.push(key);\n } else if (!add && index > -1) {\n keys.splice(index, 1);\n }\n return keys;\n }\n\n /* eslint-disable max-statements */\n handleItemKeyDown(key, item, e) {\n if (\n [\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 ) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n let { focusedKey } = this.state;\n\n const node = this._k2n[key];\n const { pos } = this._k2n[key];\n const level = pos.split('-').length - 1;\n switch (e.keyCode) {\n case KEYCODE.UP: {\n const avaliableKey = this.getAvailableKey(pos, true);\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n break;\n }\n case KEYCODE.DOWN: {\n const avaliableKey = this.getAvailableKey(pos, false);\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n break;\n }\n case KEYCODE.RIGHT: {\n this.handleExpand(true, key, node);\n const avaliableKey = this.getFirstAvaliablelChildKey(pos);\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n break;\n }\n case KEYCODE.LEFT:\n case KEYCODE.ESC: {\n if (level === 1) {\n const avaliableKey = this.getAvailableKey(pos, true);\n if (avaliableKey) {\n focusedKey = avaliableKey;\n }\n } else if (level > 1) {\n const parentKey = this.getParentKey(pos);\n this.handleExpand(false, parentKey, node);\n focusedKey = parentKey;\n }\n break;\n }\n\n case KEYCODE.ENTER:\n case KEYCODE.SPACE: {\n const checkable = item.props.checkable === true || this.props.checkable;\n const selectable = item.props.selectable === true || this.props.selectable;\n\n if (checkable) {\n this.handleCheck(!item.props.checked, key, node);\n } else if (selectable) {\n this.handleSelect(!item.props.selected, key, node, e);\n }\n break;\n }\n case KEYCODE.TAB:\n focusedKey = null;\n break;\n default:\n break;\n }\n\n if (focusedKey !== this.state.focusedKey) {\n if (!('focusedKey' in this.props)) {\n this.setState({\n focusedKey,\n });\n }\n }\n\n this.props.onItemKeyDown(focusedKey, item, e);\n this.props.onItemFocus(focusedKey, e);\n }\n\n handleBlur(e) {\n this.setState({\n focusedKey: '',\n });\n\n this.props.onBlur && this.props.onBlur(e);\n }\n\n handleExpand(expand, key, node) {\n const { onExpand, loadData } = this.props;\n const { expandedKeys } = this.state; // 由于setState 是异步操作,所以去掉 [...this.state.expandedKeys]\n this.processKey(expandedKeys, key, expand);\n const setExpandedState = () => {\n if (!('expandedKeys' in this.props)) {\n this.setState({ expandedKeys });\n }\n onExpand(expandedKeys, { expanded: expand, node });\n };\n\n if (expand && loadData) {\n return loadData(node).then(setExpandedState);\n } else {\n setExpandedState();\n }\n }\n\n handleSelect(select, key, node, e) {\n const { multiple, onSelect } = this.props;\n let selectedKeys = [...this.state.selectedKeys];\n if (multiple) {\n this.processKey(selectedKeys, key, select);\n } else {\n selectedKeys = [key];\n }\n\n if (!('selectedKeys' in this.props)) {\n this.setState({ selectedKeys });\n }\n onSelect(selectedKeys, {\n selectedNodes: this.getNodes(selectedKeys),\n node,\n selected: select,\n event: e,\n });\n }\n\n // eslint-disable-next-line max-statements\n handleCheck(check, key, node) {\n const { checkStrictly, checkedStrategy, onCheck } = this.props;\n const checkedKeys = [...this.state.checkedKeys];\n\n if (checkStrictly) {\n this.processKey(checkedKeys, key, check);\n const newCheckedKeys = isPlainObject(this.props.checkedKeys)\n ? {\n checked: checkedKeys,\n indeterminate: this.indeterminateKeys,\n }\n : checkedKeys;\n\n onCheck(newCheckedKeys, {\n checkedNodes: this.getNodes(checkedKeys),\n checkedNodesPositions: checkedKeys\n .map(key => {\n if (!this._k2n[key]) return null;\n const { node, pos } = this._k2n[key];\n return { node, pos };\n })\n .filter(v => !!v),\n node,\n indeterminateKeys: this.indeterminateKeys,\n checked: check,\n });\n\n return;\n }\n\n const { pos } = this._k2n[key];\n\n const ps = Object.keys(this._p2n);\n ps.forEach(p => {\n if (isDescendantOrSelf(pos, p)) {\n this.processKey(checkedKeys, this._p2n[p].key, check);\n }\n });\n\n let currentPos = pos;\n const nums = pos.split('-');\n for (let i = nums.length; i > 2; i--) {\n let parentCheck = true;\n\n const parentPos = nums.slice(0, i - 1).join('-');\n const parentKey = this._p2n[parentPos].key;\n const parentChecked = checkedKeys.indexOf(parentKey) > -1;\n if (!check && !parentChecked) {\n break;\n }\n\n for (let j = 0; j < ps.length; j++) {\n const p = ps[j];\n if (isSiblingOrSelf(currentPos, p)) {\n const k = this._p2n[p].key;\n if (checkedKeys.indexOf(k) === -1) {\n parentCheck = false;\n break;\n }\n }\n }\n\n this.processKey(checkedKeys, parentKey, parentCheck);\n\n currentPos = parentPos;\n }\n\n const indeterminateKeys = this.getIndeterminateKeys(checkedKeys);\n if (!('checkedKeys' in this.props)) {\n this.setState({\n checkedKeys,\n });\n this.indeterminateKeys = indeterminateKeys;\n }\n\n let newCheckedKeys;\n switch (checkedStrategy) {\n case 'parent':\n newCheckedKeys = filterChildKey(checkedKeys, this._k2n);\n break;\n case 'child':\n newCheckedKeys = filterParentKey(checkedKeys, this._k2n);\n break;\n default:\n newCheckedKeys = checkedKeys;\n break;\n }\n\n onCheck(newCheckedKeys, {\n checkedNodes: this.getNodes(newCheckedKeys),\n checkedNodesPositions: newCheckedKeys\n .map(key => {\n if (!this._k2n[key]) return null;\n const { node, pos } = this._k2n[key];\n return { node, pos };\n })\n .filter(v => !!v),\n node,\n indeterminateKeys,\n checked: check,\n });\n }\n\n /* eslint-enable */\n getNodeProps(key) {\n const { prefix } = this.props;\n const { expandedKeys, selectedKeys, checkedKeys, dragOverNodeKey } = this.state;\n const { pos } = this._k2n[key];\n\n return {\n prefix,\n root: this,\n eventKey: key,\n pos,\n expanded: expandedKeys.indexOf(key) > -1,\n selected: selectedKeys.indexOf(key) > -1,\n checked: checkedKeys.indexOf(key) > -1,\n indeterminate: this.indeterminateKeys.indexOf(key) > -1,\n dragOver: dragOverNodeKey === key && this.dropPosition === 0,\n dragOverGapTop: dragOverNodeKey === key && this.dropPosition === -1,\n dragOverGapBottom: dragOverNodeKey === key && this.dropPosition === 1,\n };\n }\n\n getParentNode(pos) {\n const parentPos = pos\n .split('-')\n .slice(0, -1)\n .join('-');\n if (parentPos.length === 1) {\n return null;\n }\n\n return this._p2n[parentPos].node;\n }\n\n getNodes(keys) {\n return keys.map(key => this._k2n[key] && this._k2n[key].node).filter(v => !!v);\n }\n\n getIndeterminateKeys(checkedKeys) {\n const indeterminateKeys = [];\n\n const poss = filterChildKey(checkedKeys.filter(key => !!this._k2n[key]), this._k2n).map(\n key => this._k2n[key].pos,\n );\n poss.forEach(pos => {\n const nums = pos.split('-');\n for (let i = nums.length; i > 2; i--) {\n const parentPos = nums.slice(0, i - 1).join('-');\n const parentKey = this._p2n[parentPos].key;\n if (indeterminateKeys.indexOf(parentKey) === -1) {\n indeterminateKeys.push(parentKey);\n }\n }\n });\n\n return indeterminateKeys;\n }\n\n handleDragStart(e, node) {\n const dragNodeKey = node.props.eventKey;\n this.dragNode = node;\n this.dragNodesKeys = Object.keys(this._k2n).filter(k => {\n return isDescendantOrSelf(this._k2n[dragNodeKey].pos, this._k2n[k].pos);\n });\n\n const expandedKeys = this.processKey([...this.state.expandedKeys], dragNodeKey, false);\n this.setState({ expandedKeys });\n\n this.props.onDragStart({\n event: e,\n node,\n expandedKeys,\n });\n }\n\n handleDragEnter(e, node) {\n const dragOverNodeKey = node.props.eventKey;\n this.dropPosition = this.getDropPosition(e, node);\n if (\n this.dragNode &&\n this.dragNode.props.eventKey === dragOverNodeKey &&\n this.dropPosition === 0\n ) {\n this.setState({\n dragOverNodeKey: null,\n });\n return;\n }\n\n const expandedKeys = this.processKey([...this.state.expandedKeys], dragOverNodeKey, true);\n this.setState({\n dragOverNodeKey,\n expandedKeys,\n });\n\n this.props.onDragEnter({\n event: e,\n node,\n expandedKeys,\n });\n }\n\n getDropPosition(e, node) {\n const labelWrapperNode = node.refs.labelWrapper;\n const offsetTop = getOffset(labelWrapperNode).top;\n const { offsetHeight } = labelWrapperNode;\n const { pageY } = e;\n const gapHeight = 2;\n\n if (pageY > offsetTop + offsetHeight - gapHeight) {\n return 1;\n }\n if (pageY < offsetTop + gapHeight) {\n return -1;\n }\n return 0;\n }\n\n handleDragOver(e, node) {\n this.props.onDragOver({ event: e, node });\n }\n\n handleDragLeave(e, node) {\n this.props.onDragLeave({ event: e, node });\n }\n\n handleDragEnd(e, node) {\n this.setState({\n dragOverNodeKey: null,\n });\n\n this.props.onDragEnd({ event: e, node });\n }\n\n handleDrop(e, node) {\n if (\n this.dragNode &&\n isDescendantOrSelf(\n this._k2n[this.dragNode.props.eventKey].pos,\n this._k2n[node.props.eventKey].pos,\n )\n ) {\n return;\n }\n\n this.setState({\n dragOverNodeKey: null,\n });\n\n const params = this.generateDropParams(node);\n this.props.onDrop({\n event: e,\n ...params,\n });\n }\n\n canDrop(node) {\n const params = this.generateDropParams(node);\n return this.props.canDrop(params);\n }\n\n generateDropParams(node) {\n return {\n dragNode: this.dragNode,\n dragNodesKeys: [...this.dragNodesKeys],\n node,\n dropPosition: this.dropPosition,\n };\n }\n\n filterTreeNode(node) {\n return this.props.filterTreeNode.call(this, node);\n }\n\n renderByDataSource() {\n const { rtl } = this.props;\n const loop = (data, prefix = '0') => {\n return data.map((item, index) => {\n const pos = `${prefix}-${index}`;\n const { key = pos, children, ...others } = item;\n const props = {\n ...others,\n ...this.getNodeProps(`${key}`),\n _key: key,\n };\n if (children && children.length) {\n props.children = loop(children, pos);\n }\n const node = <TreeNode rtl={rtl} key={key} size={data.length} {...props} />;\n this._k2n[key].node = node;\n return node;\n });\n };\n\n return loop(this.props.dataSource);\n }\n\n renderByChildren() {\n const { rtl } = this.props;\n const loop = (children, prefix = '0') => {\n return Children.map(children, (child, index) => {\n if (!React.isValidElement(child)) {\n return;\n }\n const pos = `${prefix}-${index}`;\n const key = child.key || pos;\n const props = this.getNodeProps(`${key}`);\n if (child.props.children) {\n props.children = loop(child.props.children, pos);\n }\n\n props._key = key;\n props.rtl = rtl;\n props.size = Children.count(children);\n\n const node = cloneElement(child, props);\n this._k2n[key].node = node;\n return node;\n });\n };\n\n return loop(this.props.children);\n }\n\n render() {\n const {\n prefix,\n rtl,\n className,\n dataSource,\n showLine,\n isNodeBlock,\n isLabelBlock,\n multiple,\n } = this.props;\n const others = pickOthers(Object.keys(Tree.propTypes), this.props);\n\n if (rtl) {\n others.dir = 'rtl';\n }\n\n const newClassName = cx({\n [`${prefix}tree`]: true,\n [`${prefix}label-block`]: isLabelBlock,\n [`${prefix}node-block`]: isNodeBlock,\n [`${prefix}node-indent`]: !isNodeBlock,\n [`${prefix}show-line`]: !isNodeBlock && showLine,\n [className]: !!className,\n });\n\n return (\n <ul\n role=\"tree\"\n aria-multiselectable={multiple}\n onBlur={this.handleBlur}\n className={newClassName}\n {...others}\n >\n {dataSource ? this.renderByDataSource() : this.renderByChildren()}\n </ul>\n );\n }\n}\n","import ConfigProvider from '../config-provider';\nimport Tree from './view/tree';\nimport TreeNode from './view/tree-node';\n\nTree.Node = TreeNode;\n\nexport default ConfigProvider.config(Tree, {\n exportNames: ['setFocusKey'],\n});\n","import React, { Component, Children, isValidElement, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '../select';\nimport Tree from '../tree';\nimport {\n normalizeToArray,\n getAllCheckedKeys,\n filterChildKey,\n filterParentKey,\n isDescendantOrSelf,\n} from '../tree/view/util';\nimport { obj, KEYCODE } from '../util';\n\nconst noop = () => {};\nconst { Node: TreeNode } = Tree;\nconst { pickOthers } = obj;\n\n/**\n * TreeSelect\n */\nexport default class TreeSelect extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n pure: PropTypes.bool,\n className: PropTypes.string,\n /**\n * 树节点\n */\n children: PropTypes.node,\n /**\n * 选择框大小\n */\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n /**\n * 选择框占位符\n */\n placeholder: PropTypes.string,\n /**\n * 是否禁用\n */\n disabled: PropTypes.bool,\n /**\n * 是否有下拉箭头\n */\n hasArrow: PropTypes.bool,\n /**\n * 是否有边框\n */\n hasBorder: PropTypes.bool,\n /**\n * 是否有清空按钮\n */\n hasClear: PropTypes.bool,\n /**\n * 自定义内联 label\n */\n label: PropTypes.node,\n /**\n * 是否只读,只读模式下可以展开弹层但不能选择\n */\n readOnly: PropTypes.bool,\n /**\n * 下拉框是否与选择器对齐\n */\n autoWidth: PropTypes.bool,\n /**\n * 数据源,该属性优先级高于 children\n */\n dataSource: PropTypes.arrayOf(PropTypes.object),\n /**\n * 选中的值渲染方式\n */\n valueRender: PropTypes.func,\n /**\n * (受控)当前值\n */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n /**\n * (非受控)默认值\n */\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n /**\n * 选中值改变时触发的回调函数\n * @param {String|Array} value 选中的值,单选时返回单个值,多选时返回数组\n * @param {Object|Array} data 选中的数据,包括 value, label, pos, key属性,单选时返回单个值,多选时返回数组,父子节点选中关联时,同时选中,只返回父节点\n */\n onChange: PropTypes.func,\n /**\n * 是否显示搜索框\n */\n showSearch: PropTypes.bool,\n /**\n * 在搜索框中输入时触发的回调函数\n * @param {String} keyword 输入的关键字\n */\n onSearch: PropTypes.func,\n onSearchClear: PropTypes.func,\n /**\n * 无数据时显示内容\n */\n notFoundContent: PropTypes.node,\n /**\n * 是否支持多选\n */\n multiple: PropTypes.bool,\n /**\n * 下拉框中的树是否支持勾选节点的复选框\n */\n treeCheckable: PropTypes.bool,\n /**\n * 下拉框中的树勾选节点复选框是否完全受控(父子节点选中状态不再关联)\n */\n treeCheckStrictly: PropTypes.bool,\n /**\n * 定义选中时回填的方式\n * @enumdesc 返回所有选中的节点, 父子节点都选中时只返回父节点, 父子节点都选中时只返回子节点\n */\n treeCheckedStrategy: PropTypes.oneOf(['all', 'parent', 'child']),\n /**\n * 下拉框中的树是否默认展开所有节点\n */\n treeDefaultExpandAll: PropTypes.bool,\n /**\n * 下拉框中的树默认展开节点key的数组\n */\n treeDefaultExpandedKeys: PropTypes.arrayOf(PropTypes.string),\n /**\n * 下拉框中的树异步加载数据的函数,使用请参考[Tree的异步加载数据Demo](https://fusion.design/component/tree)\n * @param {ReactElement} node 被点击展开的节点\n */\n treeLoadData: PropTypes.func,\n /**\n * 透传到 Tree 的属性对象\n */\n treeProps: PropTypes.object,\n /**\n * 初始下拉框是否显示\n */\n defaultVisible: PropTypes.bool,\n /**\n * 当前下拉框是否显示\n */\n visible: PropTypes.bool,\n /**\n * 下拉框显示或关闭时触发事件的回调函数\n * @param {Boolean} visible 是否显示\n * @param {String} type 触发显示关闭的操作类型\n */\n onVisibleChange: PropTypes.func,\n /**\n * 下拉框自定义样式对象\n */\n popupStyle: PropTypes.object,\n /**\n * 下拉框样式自定义类名\n */\n popupClassName: PropTypes.string,\n /**\n * 下拉框挂载的容器节点\n */\n popupContainer: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * 透传到 Popup 的属性对象\n */\n popupProps: PropTypes.object,\n /**\n * 是否跟随滚动\n */\n followTrigger: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n pure: false,\n size: 'medium',\n disabled: false,\n hasArrow: true,\n hasBorder: true,\n hasClear: false,\n autoWidth: true,\n defaultValue: null,\n valueRender: item => item.label || item.value,\n onChange: noop,\n showSearch: false,\n onSearch: noop,\n onSearchClear: noop,\n notFoundContent: 'Not Found',\n multiple: false,\n treeCheckable: false,\n treeCheckStrictly: false,\n treeCheckedStrategy: 'parent',\n treeDefaultExpandAll: false,\n treeDefaultExpandedKeys: [],\n treeProps: {},\n defaultVisible: false,\n onVisibleChange: noop,\n };\n\n constructor(props, context) {\n super(props, context);\n\n const { defaultVisible, visible, defaultValue, value } = props;\n this.state = {\n visible: typeof visible === 'undefined' ? defaultVisible : visible,\n value: normalizeToArray(typeof value === 'undefined' ? defaultValue : value),\n searchedValue: '',\n expandedKeys: [],\n autoExpandParent: false,\n };\n\n this.updateCache(props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateCache(nextProps);\n\n const st = {};\n if ('value' in nextProps) {\n st.value = normalizeToArray(nextProps.value);\n }\n if ('visible' in nextProps) {\n st.visible = nextProps.visible;\n }\n\n if (Object.keys(st).length) {\n this.setState(st);\n }\n }\n\n updateCache = (props) => {\n this._k2n = {};\n this._p2n = {};\n this._v2n = {};\n\n if ('dataSource' in props) {\n const loop = (data, prefix = '0') => data.map((item, index) => {\n const { value, children } = item;\n const pos = `${prefix}-${index}`;\n const key = item.key || pos;\n const newItem = { ...item, key, pos };\n if (children && children.length) {\n newItem.children = loop(children, pos);\n }\n\n this._k2n[key] = this._p2n[pos] = this._v2n[value] = newItem;\n return newItem;\n });\n loop(props.dataSource);\n } else if ('children' in props) {\n const loop = (children, prefix = '0') => Children.map(children, (node, index) => {\n if (!React.isValidElement(node)) {\n return;\n }\n\n const { value, children } = node.props;\n const pos = `${prefix}-${index}`;\n const key = node.key || pos;\n const newItem = { ...node.props, key, pos };\n if (children && Children.count(children)) {\n newItem.children = loop(children, pos);\n }\n\n this._k2n[key] = this._p2n[pos] = this._v2n[value] = newItem;\n return newItem;\n });\n loop(props.children);\n }\n }\n\n getKeysByValue = (value) => {\n return value.reduce((ret, v) => {\n const k = this._v2n[v] && this._v2n[v].key;\n if (k) {\n ret.push(k);\n } else {\n // value不在dataSource中,将value作为key\n ret.push(v);\n }\n\n return ret;\n }, []);\n }\n\n getValueByKeys = (keys) => {\n return keys.map(k => (typeof this._k2n[k].value === 'undefined' ? k : this._k2n[k].value));\n }\n\n getValueForSelect = (value) => {\n const { treeCheckedStrategy } = this.props;\n\n let keys = this.getKeysByValue(value);\n const keyNotInDataSource = keys.find(k => typeof this._k2n[k] === 'undefined');\n keys = getAllCheckedKeys(keys, this._k2n, this._p2n);\n\n switch (treeCheckedStrategy) {\n case 'parent':\n keys = filterChildKey(keys, this._k2n);\n break;\n case 'child':\n keys = filterParentKey(keys, this._k2n);\n break;\n default:\n break;\n }\n\n const result = this.getValueByKeys(keys);\n if (typeof keyNotInDataSource !== 'undefined') {\n result.push(keyNotInDataSource);\n }\n\n return result;\n }\n\n getData = (value, forSelect) => {\n return value.reduce((ret, v) => {\n const k = this._v2n[v] && this._v2n[v].key;\n if (k) {\n const { label, pos, disabled, checkboxDisabled } = this._k2n[k];\n const d = {\n value: v,\n label,\n pos,\n };\n if (forSelect) {\n d.disabled = disabled || checkboxDisabled;\n } else {\n d.key = k;\n }\n ret.push(d);\n } else {\n // 不存在强行构造\n ret.push({\n value: v,\n label: '',\n pos: '',\n });\n }\n\n return ret;\n }, []);\n }\n\n saveTreeRef = (ref) => {\n this.tree = ref;\n }\n\n saveSelectRef = (ref) => {\n this.select = ref;\n }\n\n handleVisibleChange = (visible, type) => {\n if (!('visible' in this.props)) {\n this.setState({\n visible,\n });\n }\n\n if (['fromTree', 'keyboard'].indexOf(type) !== -1 && !visible) {\n this.select.focusInput();\n }\n\n this.props.onVisibleChange(visible, type);\n }\n\n handleSelect = (selectedKeys, extra) => {\n const { multiple, onChange } = this.props;\n const { selected } = extra;\n\n if (multiple || selected) {\n const value = this.getValueByKeys(selectedKeys);\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n if (!multiple) {\n this.handleVisibleChange(false, 'fromTree');\n }\n\n const data = this.getData(value);\n multiple ? onChange(value, data) : onChange(value[0], data[0]);\n } else {\n this.handleVisibleChange(false, 'fromTree');\n }\n }\n\n handleCheck = (checkedKeys) => {\n const { onChange } = this.props;\n\n const value = this.getValueByKeys(checkedKeys);\n const keys = this.getKeysByValue(this.state.value);\n const keyNotInDataSource = keys.find(k => typeof this._k2n[k] === 'undefined');\n if (typeof keyNotInDataSource !== 'undefined') {\n value.push(keyNotInDataSource);\n }\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n\n onChange(value, this.getData(value));\n }\n\n handleRemove = (removedItem) => {\n const { value: removedValue } = removedItem;\n const { treeCheckable, treeCheckStrictly, treeCheckedStrategy, onChange } = this.props;\n\n let value;\n if (treeCheckable && !treeCheckStrictly && treeCheckedStrategy === 'all') {\n const removedPos = this._v2n[removedValue].pos;\n value = this.state.value.filter(v => {\n const p = this._v2n[v].pos;\n return !isDescendantOrSelf(removedPos, p);\n });\n\n const nums = removedPos.split('-');\n for (let i = nums.length; i > 2; i--) {\n const parentPos = nums.slice(0, i - 1).join('-');\n const parentValue = this._p2n[parentPos].value;\n const parentIndex = value.indexOf(parentValue);\n if (parentIndex > -1) {\n value.splice(parentIndex, 1);\n } else {\n break;\n }\n }\n } else {\n value = this.state.value.filter(v => v !== removedValue);\n }\n\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n\n const data = this.getData(value);\n onChange(value, data);\n }\n\n handleSearch = (searchedValue) => {\n const searchedKeys = [];\n const retainedKeys = [];\n Object.keys(this._k2n).forEach(k => {\n const { label, pos } = this._k2n[k];\n if (this.isSearched(label, searchedValue)) {\n searchedKeys.push(k);\n const posArr = pos.split('-');\n posArr.forEach((n, i) => {\n if (i > 0) {\n const p = posArr.slice(0, i + 1).join('-');\n const kk = this._p2n[p].key;\n if (retainedKeys.indexOf(kk) === -1) {\n retainedKeys.push(kk);\n }\n }\n });\n }\n });\n\n this.setState({\n searchedValue,\n expandedKeys: searchedKeys,\n autoExpandParent: true,\n });\n this.searchedKeys = searchedKeys;\n this.retainedKeys = retainedKeys;\n\n this.props.onSearch(searchedValue);\n }\n\n handleSearchClear = (triggerType) => {\n this.setState({\n searchedValue: '',\n expandedKeys: [],\n });\n this.props.onSearchClear(triggerType);\n }\n\n handleExpand = (expandedKeys) => {\n this.setState({\n expandedKeys,\n autoExpandParent: false,\n });\n }\n\n handleKeyDown = (e) => {\n const { onKeyDown } = this.props;\n const { visible } = this.state;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!visible) {\n return;\n }\n\n switch (e.keyCode) {\n case KEYCODE.UP:\n case KEYCODE.DOWN:\n this.tree.setFocusKey();\n e.preventDefault();\n break;\n default:\n break;\n }\n }\n\n handleChange = () => {\n // 单选时点击清空按钮\n const { hasClear, multiple, treeCheckable } = this.props;\n if (hasClear && (!multiple || !treeCheckable)) {\n if (!('value' in this.props)) {\n this.setState({\n value: [],\n });\n }\n\n this.props.onChange(null, null);\n }\n }\n\n isSearched = (label, searchedValue) => {\n let labelString = '';\n const loop = arg => {\n if (isValidElement(arg) && arg.props.children) {\n Children.forEach(arg.props.children, loop);\n } else if (typeof arg === 'string') {\n labelString += arg;\n }\n };\n loop(label);\n\n if (labelString.length >= searchedValue.length && labelString.indexOf(searchedValue) > -1) {\n return true;\n }\n\n return false;\n }\n\n searchNodes = (children) => {\n const loop = children => {\n const retainedNodes = [];\n Children.forEach(children, child => {\n if (this.searchedKeys.indexOf(child.key) > -1) {\n retainedNodes.push(child);\n } else if (this.retainedKeys.indexOf(child.key) > -1) {\n const retainedNode = child.props.children\n ? cloneElement(child, {}, loop(child.props.children))\n : child;\n retainedNodes.push(retainedNode);\n } else {\n const hideNode = cloneElement(child, {\n style: { display: 'none' },\n });\n retainedNodes.push(hideNode);\n }\n });\n return retainedNodes;\n };\n\n return loop(children);\n }\n\n createNodesByData = (data, searching) => {\n const loop = (data, isParentMatched, prefix = '0') => {\n const retainedNodes = [];\n\n data.forEach((item, index) => {\n const { children, ...others } = item;\n const pos = `${prefix}-${index}`;\n const { key } = this._p2n[pos];\n const addNode = (isParentMatched, hide) => {\n if (hide) {\n others.style = { display: 'none' };\n }\n retainedNodes.push(\n <TreeNode {...others} key={key}>\n {children && children.length ? loop(children, isParentMatched, pos) : null}\n </TreeNode>,\n );\n };\n\n if (searching) {\n if (this.searchedKeys.indexOf(key) > -1 || isParentMatched) {\n addNode(true);\n } else if (this.retainedKeys.indexOf(key) > -1) {\n addNode(false);\n } else {\n addNode(false, true);\n }\n } else {\n addNode();\n }\n });\n\n return retainedNodes;\n };\n\n return loop(data, false);\n }\n\n /* eslint-disable max-statements */\n renderPopupContent = () => {\n const { prefix } = this.props;\n const treeSelectPrefix = `${prefix}tree-select-`;\n\n if (!this.state.visible) {\n return <div className={`${treeSelectPrefix}dropdown`} />;\n }\n\n const {\n multiple,\n treeCheckable,\n treeCheckStrictly,\n treeCheckedStrategy,\n treeDefaultExpandAll,\n treeDefaultExpandedKeys,\n treeLoadData,\n treeProps: customTreeProps,\n showSearch,\n dataSource,\n children,\n readOnly,\n notFoundContent,\n } = this.props;\n const { value, searchedValue, expandedKeys, autoExpandParent } = this.state;\n\n const treeProps = {\n multiple,\n ref: this.saveTreeRef,\n loadData: treeLoadData,\n defaultExpandAll: treeDefaultExpandAll,\n defaultExpandedKeys: treeDefaultExpandedKeys,\n };\n\n const keys = this.getKeysByValue(value);\n if (treeCheckable) {\n treeProps.checkable = treeCheckable;\n treeProps.checkStrictly = treeCheckStrictly;\n treeProps.checkedStrategy = treeCheckStrictly ? 'all' : treeCheckedStrategy;\n treeProps.checkedKeys = keys;\n if (!readOnly) {\n treeProps.onCheck = this.handleCheck;\n }\n } else {\n treeProps.selectedKeys = keys;\n if (!readOnly) {\n treeProps.onSelect = this.handleSelect;\n }\n }\n\n let notFound = false;\n let newChildren;\n if (showSearch && searchedValue) {\n treeProps.expandedKeys = expandedKeys;\n treeProps.autoExpandParent = autoExpandParent;\n treeProps.onExpand = this.handleExpand;\n treeProps.filterTreeNode = node => {\n return this.searchedKeys.indexOf(node.props.eventKey) > -1;\n };\n\n if (this.searchedKeys.length) {\n newChildren = dataSource\n ? this.createNodesByData(dataSource, true)\n : this.searchNodes(children);\n } else {\n notFound = true;\n }\n } else {\n // eslint-disable-next-line\n if (dataSource) {\n if (dataSource.length) {\n newChildren = this.createNodesByData(dataSource);\n } else {\n notFound = true;\n }\n } else {\n // eslint-disable-next-line\n if (Children.count(children)) {\n newChildren = children;\n } else {\n notFound = true;\n }\n }\n }\n\n return (\n <div className={`${treeSelectPrefix}dropdown`}>\n {notFound ? (\n <div className={`${treeSelectPrefix}not-found`}>{notFoundContent}</div>\n ) : (\n <Tree {...customTreeProps} {...treeProps}>\n {newChildren}\n </Tree>\n )}\n </div>\n );\n }\n\n /* eslint-enable */\n render() {\n const {\n prefix,\n size,\n placeholder,\n disabled,\n hasArrow,\n hasBorder,\n hasClear,\n label,\n readOnly,\n autoWidth,\n popupStyle,\n popupClassName,\n showSearch,\n valueRender,\n multiple,\n treeCheckable,\n treeCheckStrictly,\n className,\n popupContainer,\n popupProps,\n followTrigger,\n } = this.props;\n const others = pickOthers(Object.keys(TreeSelect.propTypes), this.props);\n const { value, visible } = this.state;\n\n let valueForSelect =\n treeCheckable && !treeCheckStrictly ? this.getValueForSelect(value) : value;\n // 设置的value不存在于dataSource中时,直接用传入的value代替\n if (!valueForSelect.length) {\n valueForSelect = value;\n }\n let data = this.getData(valueForSelect, true);\n if (!multiple && !treeCheckable) {\n data = data[0];\n }\n\n return (\n <Select\n prefix={prefix}\n className={className}\n size={size}\n hasBorder={hasBorder}\n hasArrow={hasArrow}\n hasClear={hasClear}\n valueRender={valueRender}\n placeholder={placeholder}\n disabled={disabled}\n autoWidth={autoWidth}\n label={label}\n readOnly={readOnly}\n ref={this.saveSelectRef}\n mode={treeCheckable || multiple ? 'multiple' : 'single'}\n value={data}\n onRemove={this.handleRemove}\n onChange={this.handleChange}\n visible={visible}\n onVisibleChange={this.handleVisibleChange}\n showSearch={showSearch}\n onSearch={this.handleSearch}\n onSearchClear={this.handleSearchClear}\n onKeyDown={this.handleKeyDown}\n popupContent={this.renderPopupContent()}\n popupContainer={popupContainer}\n popupStyle={popupStyle}\n popupClassName={popupClassName}\n popupProps={popupProps}\n followTrigger={followTrigger}\n {...others}\n />\n );\n }\n}\n\nTreeSelect.Node = TreeNode;\n","import ConfigProvider from '../config-provider';\nimport TreeSelect from './tree-select';\n\nexport default ConfigProvider.config(TreeSelect, {\n transform: /* istanbul ignore next */ (props, deprecated) => {\n if ('shape' in props) {\n deprecated('shape', 'hasBorder', 'TreeSelect');\n const { shape, ...others } = props;\n props = { hasBorder: shape !== 'arrow-only', ...others };\n }\n\n if ('container' in props) {\n deprecated('container', 'popupContainer', 'TreeSelect');\n const { container, ...others } = props;\n props = { popupContainer: container, ...others };\n }\n\n return props;\n },\n});\n","let now = +new Date();\n\n/**\n * 生成唯一的id\n * @return {String} uid\n */\nexport function uid() {\n return (now++).toString(36);\n}\n\nexport function fileToObject(file) {\n if (!file.uid) {\n file.uid = uid();\n }\n\n return {\n lastModified: file.lastModified,\n lastModifiedDate: file.lastModifiedDate,\n name: file.filename || file.name,\n size: file.size,\n type: file.type,\n uid: file.uid,\n error: file.error,\n percent: 0,\n originFileObj: file,\n };\n}\n\nexport function getFileItem(file, fileList) {\n const matchKey = file.uid !== undefined ? 'uid' : 'name';\n return fileList.filter(item => item[matchKey] === file[matchKey])[0];\n}\n\nexport function removeFileItem(file, fileList) {\n const matchKey = file.uid !== undefined ? 'uid' : 'name';\n const removed = fileList.filter(item => item[matchKey] !== file[matchKey]);\n if (removed.length === fileList.length) {\n return null;\n }\n return removed;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL\nexport function previewFile(file, callback) {\n const reader = new FileReader();\n reader.onloadend = () => callback(reader.result);\n reader.readAsDataURL(file);\n}\n\nexport const errorCode = {\n EXCEED_LIMIT: 'EXCEED_LIMIT',\n BEFOREUPLOAD_REJECT: 'BEFOREUPLOAD_REJECT',\n RESPONSE_FAIL: 'RESPONSE_FAIL',\n};\n","// compatible with 0.x version\n/* istanbul ignore next */\nconst transform = (props, deprecated) => {\n const { listType, defaultFileList, fileList, ...others } = props;\n const newprops = others;\n\n if (listType === 'text-image') {\n deprecated('listType=text-image', 'listType=image', 'Upload');\n newprops.listType = 'image';\n } else if (listType === 'picture-card') {\n deprecated('listType=picture-card', 'listType=card', 'Upload');\n newprops.listType = 'card';\n } else {\n newprops.listType = listType;\n }\n\n if ('defaultFileList' in props) {\n deprecated('defaultFileList', 'defaultValue', 'Upload');\n newprops.defaultValue = defaultFileList;\n }\n\n if ('fileList' in props) {\n deprecated('fileList', 'value', 'Upload');\n newprops.value = fileList;\n }\n\n return newprops;\n};\n\nexport default transform;\n","import { Component } from 'react';\n\nexport default class Base extends Component {\n /* istanbul ignore next */\n abort(file) {\n /* istanbul ignore next */\n this.uploaderRef.abort(file);\n }\n /* istanbul ignore next */\n startUpload() {\n /* istanbul ignore next */\n this.uploaderRef.startUpload();\n }\n\n saveUploaderRef = ref => {\n /* istanbul ignore if */\n if (ref && typeof ref.getInstance === 'function') {\n this.uploaderRef = ref.getInstance();\n } else {\n this.uploaderRef = ref;\n }\n };\n\n /* istanbul ignore next */\n isUploading() {\n /* istanbul ignore next */\n return this.uploaderRef.isUploading();\n }\n}\n","/**\n * clone from https://github.com/react-component/upload/blob/master/src/request.js\n */\n\nfunction getError(option, xhr, msg) {\n msg = msg || `cannot post ${option.action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.method = option.method;\n err.url = option.action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\n// option {\n// onProgress: (event: { percent: number }): void,\n// onError: (event: Error, body?: Object): void,\n// onSuccess: (body: Object): void,\n// data: Object,\n// filename: String,\n// file: File,\n// withCredentials: Boolean,\n// action: String,\n// headers: Object,\n// method: String\n// timeout: Number\n// }\nexport default function upload(option) {\n const xhr = new XMLHttpRequest();\n\n if (option.onProgress && xhr.upload) {\n xhr.upload.onprogress = function progress(e) {\n if (e.total > 0) {\n e.percent = (e.loaded / e.total) * 100;\n }\n option.onProgress(e);\n };\n }\n\n const formData = new FormData();\n\n if (option.data) {\n Object.keys(option.data).forEach(key => {\n formData.append(key, option.data[key]);\n });\n }\n\n formData.append(option.filename, option.file);\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n // allow success when 2xx status\n // see https://github.com/react-component/upload/issues/34\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr), xhr);\n };\n\n const { timeout } = option;\n\n if (typeof timeout === 'number' && timeout > 0) {\n xhr.timeout = timeout;\n xhr.ontimeout = () => {\n const msg = `Upload abort for exceeding time (timeout: ${timeout}ms)`;\n option.onError(getError(option, xhr, msg), getBody(xhr));\n };\n }\n\n option.method = option.method || 'POST';\n xhr.open(option.method, option.action, true);\n\n // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n // when set headers['X-Requested-With'] = null , can close default XHR header\n // see https://github.com/react-component/upload/issues/33\n if (headers['X-Requested-With'] !== null) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n for (const h in headers) {\n if (headers.hasOwnProperty(h) && headers[h] !== null) {\n xhr.setRequestHeader(h, headers[h]);\n }\n }\n xhr.send(formData);\n\n return {\n abort() {\n xhr.abort();\n },\n };\n}\n","import { func, obj } from '../../util';\nimport { uid, errorCode } from '../util';\nimport defaultRequest from './request';\n\nconst noop = func.noop;\n\nexport default class Uploader {\n constructor(options) {\n this.options = {\n beforeUpload: noop,\n onProgress: noop,\n onSuccess: noop,\n onError: noop,\n data: {},\n name: 'file',\n method: 'post',\n ...options,\n };\n this.reqs = {};\n }\n\n setOptions(options) {\n Object.assign(this.options, options);\n }\n\n startUpload(files) {\n const filesArr = files.length ? Array.prototype.slice.call(files) : [files];\n filesArr.forEach(file => {\n file.uid = file.uid || uid();\n this.upload(file);\n });\n }\n\n abort(file) {\n const { reqs } = this;\n if (file) {\n let uid = file;\n if (file && file.uid) {\n uid = file.uid;\n }\n if (reqs[uid]) {\n reqs[uid].abort();\n delete reqs[uid];\n }\n } else {\n Object.keys(reqs).forEach(uid => {\n if (reqs[uid]) {\n reqs[uid].abort();\n }\n delete reqs[uid];\n });\n }\n }\n\n upload(file) {\n const {\n beforeUpload,\n action,\n name,\n headers,\n timeout,\n withCredentials,\n method,\n data,\n } = this.options;\n const before = beforeUpload(file, {\n action,\n name,\n headers,\n timeout,\n withCredentials,\n method,\n data,\n });\n\n func.promiseCall(\n before,\n options => {\n if (options === false) {\n const err = new Error(errorCode.BEFOREUPLOAD_REJECT);\n err.code = errorCode.BEFOREUPLOAD_REJECT;\n return this.options.onError(err, null, file);\n }\n this.post(file, obj.isPlainObject(options) ? options : undefined);\n },\n error => {\n this.options.onError(error, null, file);\n },\n );\n }\n\n post(file, options = {}) {\n const requestOptions = {\n ...this.options,\n ...options,\n };\n const {\n action,\n name,\n headers,\n timeout,\n withCredentials,\n onProgress,\n onSuccess,\n onError,\n method,\n } = requestOptions;\n\n let data = requestOptions.data;\n if (typeof data === 'function') {\n data = data(file);\n }\n\n const { uid } = file;\n\n const request =\n typeof requestOptions.request === 'function' ? requestOptions.request : defaultRequest;\n this.reqs[uid] = request({\n action,\n filename: name,\n file,\n data,\n timeout,\n headers,\n withCredentials,\n method,\n onProgress: e => {\n onProgress(e, file);\n },\n onSuccess: ret => {\n delete this.reqs[uid];\n onSuccess(ret, file);\n },\n onError: (err, ret) => {\n delete this.reqs[uid];\n onError(err, ret, file);\n },\n });\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { func } from '../../util';\nimport { uid } from '../util';\n\nconst { noop } = func;\n\n/**\n * Upload.Selecter\n * @description [底层能力] 可自定义样式的文件选择器\n */\nexport default class Selecter extends React.Component {\n static propTypes = {\n id: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n /**\n * 是否禁用上传功能\n */\n disabled: PropTypes.bool,\n /**\n * 是否支持多选文件,`ie10+` 支持。开启后按住 ctrl 可选择多个文件\n */\n multiple: PropTypes.bool,\n /**\n * 是否支持拖拽上传,`ie10+` 支持。\n */\n dragable: PropTypes.bool,\n /**\n * 接受上传的文件类型 (image/png, image/jpg, .doc, .ppt) 详见 [input accept attribute](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input#attr-accept)\n */\n accept: PropTypes.string,\n /**\n * 文件选择回调\n */\n onSelect: PropTypes.func,\n /**\n * 拖拽经过回调\n */\n onDragOver: PropTypes.func,\n /**\n * 拖拽离开回调\n */\n onDragLeave: PropTypes.func,\n /**\n * 拖拽完成回调\n */\n onDrop: PropTypes.func,\n children: PropTypes.node,\n name: PropTypes.string,\n };\n\n static defaultProps = {\n name: 'file',\n multiple: false,\n onSelect: noop,\n onDragOver: noop,\n onDragLeave: noop,\n onDrop: noop,\n };\n\n componentDidMount() {\n const { disabled } = this.props;\n if (disabled) {\n window.addEventListener('dragover', this.preventDragOver, false);\n } else {\n window.removeEventListener('dragover', this.preventDragOver, false);\n }\n }\n\n componentDidUpdate() {\n const { disabled } = this.props;\n if (disabled) {\n window.addEventListener('dragover', this.preventDragOver, false);\n } else {\n window.removeEventListener('dragover', this.preventDragOver, false);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('dragover', this.preventDragOver, false);\n }\n\n onSelect = e => {\n const files = e.target.files;\n const filesArr = files.length ? Array.prototype.slice.call(files) : [files];\n\n filesArr.forEach(file => {\n file.uid = uid();\n });\n\n this.props.onSelect(filesArr);\n };\n\n /**\n * 点击上传按钮\n * @return {void}\n */\n onClick = () => {\n const el = this.fileRef;\n if (!el) {\n return;\n }\n el.click();\n el.value = '';\n };\n\n /**\n * 键盘事件\n * @param {SyntheticEvent} e\n * @return {void}\n */\n onKeyDown = e => {\n if (e.key === 'Enter') {\n this.onClick();\n }\n };\n\n /**\n * 拖拽\n * @param {SyntheticEvent} e\n * @return {void}\n */\n onDrop = e => {\n e.preventDefault();\n\n const files = e.dataTransfer.files;\n const filesArr = Array.prototype.slice.call(files);\n\n this.props.onDrop(filesArr);\n };\n\n onDragOver = e => {\n e.preventDefault();\n this.props.onDragOver(e);\n };\n\n // 禁用全局的拖拽,防止浏览器默认的打开新窗口预览文件、图片等\n preventDragOver = (e) => {\n e.preventDefault();\n e.stopPropagation();\n e.dataTransfer.dropEffect = 'none';\n }\n\n saveFileRef = ref => {\n this.fileRef = ref;\n };\n\n render() {\n const {\n accept,\n multiple,\n children,\n id,\n disabled,\n dragable,\n style,\n className,\n name,\n } = this.props;\n\n let events = {};\n if (!disabled) {\n events = Object.assign(\n {\n onClick: this.onClick,\n onKeyDown: this.onKeyDown,\n tabIndex: '0',\n },\n dragable\n ?\n {\n onDrop: this.onDrop,\n onDragOver: this.onDragOver,\n onDragLeave: this.props.onDragLeave,\n }\n : {},\n );\n }\n\n return (\n <div role=\"application\" style={style} className={className} {...events}>\n <input\n type=\"file\"\n name={name}\n id={id}\n ref={this.saveFileRef}\n style={{ display: 'none' }}\n accept={accept}\n aria-hidden\n multiple={multiple}\n onChange={this.onSelect}\n disabled={disabled}\n />\n {children}\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { func } from '../../util';\nimport Uploader from './uploader';\nimport Selecter from './selecter';\n\nexport default class Html5Uploader extends Component {\n static propTypes = {\n ...Selecter.propTypes,\n /**\n * 上传的地址\n */\n action: PropTypes.string,\n /**\n * 接受上传的文件类型 (image/png, image/jpg, .doc, .ppt) 详见 [input accept attribute](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input#attr-accept)\n */\n accept: PropTypes.string,\n /**\n * 上传额外传参\n */\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * 设置上传的请求头部\n */\n headers: PropTypes.object,\n /**\n * 是否允许请求携带 cookie\n */\n withCredentials: PropTypes.bool,\n /**\n * 上传文件之前\n * @param {Object} file 文件对象\n * @return {Boolean} `false` 停止上传\n */\n beforeUpload: PropTypes.func,\n /**\n * 正在上传文件的钩子,参数为上传的事件以及文件\n */\n onProgress: PropTypes.func,\n /**\n * 上传成功回调函数,参数为请求下响应信息以及文件\n */\n onSuccess: PropTypes.func,\n /**\n * 上传失败回调函数,参数为上传失败的信息、响应信息以及文件\n */\n onError: PropTypes.func,\n children: PropTypes.node,\n /**\n * 上传超时,单位ms\n */\n timeout: PropTypes.number,\n /**\n * 上传方法\n */\n method: PropTypes.oneOf(['post', 'put']),\n request: PropTypes.func,\n };\n\n static defaultProps = {\n ...Selecter.defaultProps,\n name: 'file',\n multiple: false,\n withCredentials: true,\n beforeUpload: func.noop,\n onSelect: func.noop,\n onDragOver: func.noop,\n onDragLeave: func.noop,\n onDrop: func.noop,\n onProgress: func.noop,\n onSuccess: func.noop,\n onError: func.noop,\n onAbort: func.noop,\n method: 'post',\n };\n\n componentDidMount() {\n const { props } = this;\n const options = this.getUploadOptions(props);\n this.uploader = new Uploader(options);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const options = this.getUploadOptions(nextProps);\n this.uploader.setOptions(options);\n }\n\n componentWillUnmount() {\n this.abort();\n }\n\n abort(file) {\n this.uploader.abort(file);\n }\n\n startUpload(fileList) {\n this.uploader.startUpload(fileList);\n }\n\n getUploadOptions = props => ({\n action: props.action,\n name: props.name,\n timeout: props.timeout,\n method: props.method,\n beforeUpload: props.beforeUpload,\n onProgress: props.onProgress,\n onSuccess: props.onSuccess,\n onError: props.onError,\n withCredentials: props.withCredentials,\n headers: props.headers,\n data: props.data,\n request: props.request,\n });\n\n render() {\n const {\n accept,\n multiple,\n children,\n id,\n disabled,\n dragable,\n style,\n className,\n onSelect,\n onDragOver,\n onDragLeave,\n onDrop,\n name,\n } = this.props;\n\n return (\n <Selecter\n id={id}\n accept={accept}\n multiple={multiple}\n dragable={dragable}\n disabled={disabled}\n className={className}\n style={style}\n onSelect={onSelect}\n onDragOver={onDragOver}\n onDragLeave={onDragLeave}\n onDrop={onDrop}\n name={name}\n >\n {children}\n </Selecter>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { log, func } from '../../util';\nimport { uid } from '../util';\n\nconst INPUT_STYLE = {\n position: 'absolute',\n top: 0,\n right: 0,\n fontSize: 9999,\n zIndex: 9999,\n opacity: 0,\n outline: 'none',\n cursor: 'pointer',\n};\n\nclass IframeUploader extends React.Component {\n static propTypes = {\n style: PropTypes.object,\n action: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n disabled: PropTypes.bool,\n className: PropTypes.string,\n children: PropTypes.node,\n headers: PropTypes.object,\n autoUpload: PropTypes.bool,\n onSelect: PropTypes.func,\n beforeUpload: PropTypes.func,\n onStart: PropTypes.func,\n onSuccess: PropTypes.func,\n onError: PropTypes.func,\n accept: PropTypes.string,\n };\n\n static defaultProps = {\n name: 'file',\n onSelect: func.noop,\n beforeUpload: func.noop,\n onStart: func.noop,\n onSuccess: func.noop,\n onError: func.noop,\n onAbort: func.noop,\n };\n\n constructor(props) {\n super(props);\n this.domain = typeof document !== 'undefined' && document.domain ? document.domain : '';\n }\n\n state = {\n uploading: false,\n };\n\n componentDidMount() {\n this.updateInputWH();\n }\n\n componentDidUpdate() {\n this.updateInputWH();\n }\n\n file = {};\n\n onLoad = () => {\n if (!this.state.uploading) {\n return;\n }\n const { props, file } = this;\n let response;\n try {\n const doc = this.refs.iframe.contentDocument;\n const script = doc.getElementsByTagName('script')[0];\n if (script && script.parentNode === doc.body) {\n doc.body.removeChild(script);\n }\n response = doc.body.innerHTML;\n props.onSuccess(response, file);\n } catch (err) {\n log.warning(\n 'cross domain error for Upload. Maybe server should return document.domain script.',\n );\n response = 'cross-domain';\n props.onError(err, null, file);\n }\n this.endUpload();\n };\n\n onSelect = e => {\n this.file = {\n uid: uid(),\n name: e.target.value,\n };\n this.props.onSelect([this.file]);\n };\n\n startUpload() {\n this.upload(this.file);\n this.file = {};\n }\n\n upload(file) {\n if (!this.state.uploading) {\n // eslint-disable-next-line\n this.state.uploading = true;\n this.setState({ uploading: true });\n }\n\n const { beforeUpload } = this.props;\n if (!beforeUpload) {\n return this.post(file);\n }\n const before = beforeUpload(file);\n if (before && before.then) {\n before.then(\n () => {\n this.post(file);\n },\n () => {\n this.endUpload();\n },\n );\n } else if (before !== false) {\n this.post(file);\n } else {\n this.endUpload();\n }\n }\n\n endUpload() {\n this.file = {};\n if (this.state.uploading) {\n // eslint-disable-next-line\n this.state.uploading = false;\n this.setState({ uploading: false });\n }\n }\n\n updateInputWH() {\n const rootNode = ReactDOM.findDOMNode(this);\n const inputNode = this.refs.input;\n inputNode.style.height = `${rootNode.offsetHeight}px`;\n inputNode.style.width = `${rootNode.offsetWidth}px`;\n }\n\n abort(file) {\n if (file) {\n let uid = file;\n if (file && file.uid) {\n uid = file.uid;\n }\n if (uid === this.file.uid) {\n this.endUpload();\n }\n } else {\n this.endUpload();\n }\n }\n\n post(file) {\n const formNode = this.refs.form;\n const dataSpan = this.refs.data;\n\n let data = this.props.data;\n if (typeof data === 'function') {\n data = data(file);\n }\n\n const inputs = document.createDocumentFragment();\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const input = document.createElement('input');\n input.setAttribute('name', key);\n input.value = data[key];\n inputs.appendChild(input);\n }\n }\n dataSpan.appendChild(inputs);\n formNode.submit();\n dataSpan.innerHTML = '';\n this.props.onStart(file);\n }\n\n render() {\n const { disabled, className, children, accept, name, style } = this.props;\n\n const iframeName = `${name}-iframe`;\n\n return (\n <span\n className={className}\n style={{\n position: 'relative',\n zIndex: 0,\n display: 'inline-block',\n ...style,\n }}\n >\n {!disabled ? (\n <iframe ref=\"iframe\" name={iframeName} onLoad={this.onLoad} style={{ display: 'none' }} />\n ) : null}\n <form\n ref=\"form\"\n method=\"post\"\n action={this.props.action}\n encType=\"multipart/form-data\"\n target={iframeName}\n >\n <input\n ref=\"input\"\n type=\"file\"\n accept={accept}\n name={name}\n onChange={this.onSelect}\n style={INPUT_STYLE}\n />\n <input name=\"_documentDomain\" value={this.domain} type=\"hidden\" />\n <span ref=\"data\" />\n </form>\n {children}\n </span>\n );\n }\n}\n\nexport default IframeUploader;\n","import React from 'react';\nimport Html5Uploader from './html5-uploader';\nimport IframeUploader from './iframe-uploader';\n\nexport default class Uploader extends React.Component {\n state = {\n Component: Html5Uploader,\n };\n\n componentDidMount() {\n if (typeof File === 'undefined') {\n /* eslint react/no-did-mount-set-state:0 */\n this.setState({\n Component: IframeUploader,\n });\n }\n }\n\n abort(file) {\n this.uploaderRef.abort(file);\n }\n\n startUpload(files) {\n this.uploaderRef.startUpload(files);\n }\n\n saveUploaderRef = ref => {\n this.uploaderRef = ref;\n };\n\n render() {\n const Uploader = this.state.Component;\n return <Uploader {...this.props} ref={this.saveUploaderRef} />;\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ConfigProvider from '../config-provider';\nimport Progress from '../progress';\nimport Icon from '../icon';\nimport Button from '../button';\nimport { func, obj, KEYCODE } from '../util';\nimport zhCN from '../locale/zh-cn.js';\nimport { previewFile } from './util';\nimport transform from './transform';\n\nclass List extends Component {\n static propTypes = {\n prefix: PropTypes.string,\n /**\n * 多语言\n */\n locale: PropTypes.object,\n /**\n * 文件列表,数据格式请参考 文件对象\n */\n listType: PropTypes.oneOf(['text', 'image', 'card']),\n /**\n * 文件列表\n */\n value: PropTypes.array,\n closable: PropTypes.bool,\n /**\n * 删除文件回调(支持Promise)\n */\n onRemove: PropTypes.func,\n /**\n * 取消上传回调(支持Promise)\n */\n onCancel: PropTypes.func,\n /**\n * 头像加载出错回调\n */\n onImageError: PropTypes.func,\n /**\n * listType=card时点击图片回调\n */\n onPreview: PropTypes.func,\n /**\n * 自定义额外渲染\n */\n extraRender: PropTypes.func,\n /**\n * 透传给Progress props\n */\n progressProps: PropTypes.object,\n children: PropTypes.node,\n uploader: PropTypes.any,\n /**\n * 可选参数,是否本地预览\n */\n useDataURL: PropTypes.bool,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n prefix: 'next-',\n listType: 'text',\n value: [],\n locale: zhCN.Upload,\n closable: false,\n onRemove: func.noop,\n onCancel: func.noop,\n extraRender: func.noop,\n onImageError: func.noop,\n onPreview: func.noop,\n progressProps: {},\n };\n\n componentDidUpdate() {\n const { listType, useDataURL, value } = this.props;\n if (listType !== 'image' && listType !== 'card') {\n return;\n }\n\n useDataURL &&\n value.forEach(file => {\n if (\n typeof document === 'undefined' ||\n typeof window === 'undefined' ||\n !window.FileReader ||\n !window.File ||\n !(file.originFileObj instanceof File) ||\n file.imgURL !== undefined\n ) {\n return;\n }\n file.imgURL = '';\n previewFile(file.originFileObj, previewDataUrl => {\n file.imgURL = previewDataUrl;\n this.forceUpdate();\n });\n });\n }\n\n handleClose = file => {\n const { onRemove, uploader } = this.props;\n\n const remove = onRemove(file);\n\n func.promiseCall(remove, () => {\n uploader && uploader.removeFile(file);\n });\n };\n\n handleCancel = file => {\n const { onCancel, uploader } = this.props;\n const cancel = onCancel(file);\n\n func.promiseCall(cancel, () => {\n uploader && uploader.abort(file);\n });\n };\n\n onImageError = (file, obj) => {\n obj.onerror = null;\n this.props.onImageError(obj, file);\n };\n\n onPreview = (file, e) => {\n this.props.onPreview(file, e);\n };\n\n getInfo(file) {\n const prefixCls = `${this.props.prefix}upload`;\n const downloadURL = file.downloadURL || file.url;\n const imgURL = file.imgURL || file.url;\n const size = this.sizeCaculator(file.size);\n const itemCls = classNames({\n [`${prefixCls}-list-item`]: true,\n [`${prefixCls}-list-item-${file.state}`]: file.state,\n [`${prefixCls}-list-item-error-with-msg`]: file.state === 'error' && file.errorMsg,\n });\n const alt = file.name || file.alt;\n return { prefixCls, downloadURL, imgURL, size, itemCls, alt };\n }\n\n // transfer size from number to xx K/ XxxM / xxG\n sizeCaculator(size) {\n let fileSize = parseFloat(size, 10);\n // fileSize为浮点数 用 < 0.000001 替代 === 0\n if (isNaN(fileSize) || fileSize < 0.0000001) {\n return 0;\n }\n const SIZE_SUFFIX = ['B', 'K', 'M', 'G', 'T', 'P'];\n let suffixIndex = 0;\n\n // 在Mac上实验发现 取1024造成显示的大小和实际大小不一致\n // 因为单位制不同 见 https://superuser.com/questions/938234/size-of-files-in-windows-os-its-kb-or-kb\n const BIT_NUMBER_SYSTEM = 1024;\n while (fileSize >= BIT_NUMBER_SYSTEM && suffixIndex < SIZE_SUFFIX.length) {\n suffixIndex++;\n fileSize /= BIT_NUMBER_SYSTEM;\n }\n\n const suffix = SIZE_SUFFIX[suffixIndex];\n fileSize = fileSize.toFixed(2);\n\n return `${fileSize}${suffix}`;\n }\n\n getTextList(file) {\n const { locale, extraRender, progressProps, rtl } = this.props;\n\n const { prefixCls, downloadURL, size, itemCls } = this.getInfo(file);\n const onClick = () => (file.state === 'uploading' ? this.handleCancel(file) : this.handleClose(file));\n const onKeyDown = e => {\n if (e.keyCode === KEYCODE.ENTER) {\n onClick();\n }\n };\n return (\n <div className={itemCls} key={file.uid || file.name}>\n <div className={`${prefixCls}-list-item-name-wrap`}>\n <a\n href={downloadURL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ pointerEvents: downloadURL ? '' : 'none' }}\n className={`${prefixCls}-list-item-name`}\n >\n <span>{file.name}</span>\n {!!size && (\n <span className={`${prefixCls}-list-item-size`} dir={rtl ? 'rtl' : undefined}>\n ({size})\n </span>\n )}\n <span className={`${prefixCls}-extra`}>{extraRender(file)}</span>\n </a>\n </div>\n {file.state === 'uploading' ? (\n <div className={`${prefixCls}-list-item-progress`}>\n <Progress\n size=\"medium\"\n percent={file.percent}\n textRender={func.noop}\n rtl={rtl}\n {...progressProps}\n />\n </div>\n ) : null}\n {file.state === 'error' && file.errorMsg ? (\n <div className={`${prefixCls}-list-item-error-msg`}>{file.errorMsg}</div>\n ) : null}\n {this.props.closable ? (\n <Button.Icon\n type=\"secondary\"\n color=\"gray\"\n name=\"remove\"\n size=\"medium\"\n role=\"button\"\n aria-label={locale.upload.delete}\n tabIndex=\"0\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n />\n ) : null}\n </div>\n );\n }\n\n getImageList(file) {\n const { extraRender, progressProps, rtl } = this.props;\n\n const { prefixCls, downloadURL, imgURL, size, itemCls, alt } = this.getInfo(file);\n\n let img = null;\n\n const onClick = () => (file.state === 'uploading' ? this.handleCancel(file) : this.handleClose(file));\n const onKeyDown = e => {\n if (e.keyCode === KEYCODE.ENTER) {\n onClick();\n }\n };\n\n if (file.state === 'uploading' || (file.state === 'selected' && !imgURL)) {\n img = <Icon type=\"picture\" />;\n } else if (file.state === 'error') {\n img = <Icon type=\"emoji-frown\" />;\n } else {\n img = (\n <img\n src={imgURL}\n onError={this.onImageError.bind(this, file)}\n tabIndex=\"0\"\n alt={alt}\n onClick={this.onPreview.bind(this, file)}\n />\n );\n }\n\n return (\n <div className={itemCls} key={file.uid || file.name}>\n <div className={`${prefixCls}-list-item-thumbnail`}>{img}</div>\n {this.props.closable ? (\n <Icon\n type=\"remove\"\n size=\"medium\"\n tabIndex=\"0\"\n role=\"button\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n />\n ) : null}\n <a\n href={downloadURL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ pointerEvents: downloadURL ? '' : 'none' }}\n className={`${prefixCls}-list-item-name`}\n >\n <span>{file.name}</span>\n {!!size && (\n <span className={`${prefixCls}-list-item-size`} dir={rtl ? 'rtl' : undefined}>\n ({size})\n </span>\n )}\n <span className={`${prefixCls}-extra`}>{extraRender(file)}</span>\n </a>\n {file.state === 'uploading' ? (\n <div className={`${prefixCls}-list-item-progress`}>\n <Progress\n size=\"medium\"\n percent={file.percent}\n textRender={func.noop}\n {...progressProps}\n />\n </div>\n ) : null}\n {file.state === 'error' && file.errorMsg ? (\n <div className={`${prefixCls}-list-item-error-msg`}>{file.errorMsg}</div>\n ) : null}\n </div>\n );\n }\n\n getPictureCardList(file) {\n const { locale, progressProps } = this.props;\n\n const { prefixCls, downloadURL, imgURL, itemCls, alt } = this.getInfo(file);\n\n let img = null;\n\n if (file.state === 'uploading' || (file.state === 'selected' && !imgURL)) {\n img = (\n <div className={`${prefixCls}-list-item-handler`}>\n <Icon type=\"picture\" />\n <Button text onClick={() => this.handleCancel(file)}>\n {locale.card.cancel}\n </Button>\n </div>\n );\n } else if (file.state === 'error') {\n img = (\n <div className={`${prefixCls}-list-item-handler`}>\n <Icon type=\"emoji-frown\" />\n </div>\n );\n } else {\n img = (\n <img\n src={imgURL}\n tabIndex=\"0\"\n alt={alt}\n onError={this.onImageError.bind(this, file)}\n onClick={this.onPreview.bind(this, file)}\n />\n );\n }\n\n const onClose = () => this.handleClose(file);\n const onKeyDownClose = e => {\n if (e.keyCode === KEYCODE.ENTER) {\n onClose();\n }\n };\n // 下载功能受同源策略限制,改为预览图标\n return (\n <div className={itemCls} key={file.uid || file.name}>\n <div className={`${prefixCls}-list-item-wrapper`}>\n <div className={`${prefixCls}-list-item-thumbnail`}>{img}</div>\n {file.state === 'uploading' ? (\n <div className={`${prefixCls}-list-item-progress`}>\n <Progress\n size=\"medium\"\n percent={file.percent}\n textRender={func.noop}\n {...progressProps}\n />\n </div>\n ) : null}\n {file.state !== 'uploading' ? (\n <span\n className={`${prefixCls}-tool ${!this.props.closable ? `${prefixCls}-noclose` : ''}`}\n >\n <a\n href={downloadURL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n tabIndex={downloadURL ? '0' : '-1'}\n className={`${prefixCls}-tool-download-link`}\n style={{\n pointerEvents: downloadURL ? '' : 'none',\n }}\n >\n <Icon\n type={downloadURL ? 'eye' : ''}\n aria-label={locale.card.download}\n className={`${prefixCls}-tool-download-icon`}\n />\n </a>\n\n {this.props.closable ? (\n <span className={`${prefixCls}-tool-close`}>\n <Icon\n type=\"trashbin\"\n aria-label={locale.card.delete}\n tabIndex=\"0\"\n role=\"button\"\n onClick={onClose}\n onKeyDown={onKeyDownClose}\n />\n </span>\n ) : null}\n </span>\n ) : (\n ''\n )}\n </div>\n\n <span className={`${prefixCls}-list-item-name`}>{file.name}</span>\n </div>\n );\n }\n\n render() {\n const { listType, children, prefix, rtl, className } = this.props;\n const prefixCls = `${prefix}upload`;\n\n let list = this.props.value.map(file => {\n if (listType === 'text') {\n return this.getTextList(file);\n } else if (listType === 'image') {\n return this.getImageList(file);\n } else if (listType === 'card') {\n return this.getPictureCardList(file);\n }\n return null;\n });\n\n if (rtl && listType === 'card' && Array.isArray(list)) {\n list = list.reverse();\n }\n const listclassNames = classNames(\n {\n [`${prefixCls}-list`]: true,\n [`${prefixCls}-list-${this.props.listType}`]: true,\n },\n className,\n );\n\n const others = obj.pickAttrsWith(this.props, 'data-');\n return (\n <div {...others} className={listclassNames} dir={rtl ? 'rtl' : undefined}>\n {rtl ? children : list}\n {rtl ? list : children}\n </div>\n );\n }\n}\n\n// Wrap <List> with <ConfigProvider> to avoid context missing if it is\n// referenced by other internal modules.\n// https://github.com/alibaba-fusion/next/blob/build/1.13.9/src/upload/upload.jsx#L521\nexport default ConfigProvider.config(List, {\n componentName: 'Upload',\n transform,\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { func, obj } from '../util';\nimport Icon from '../icon';\nimport Base from './base';\nimport Uploader from './runtime/index';\nimport html5Uploader from './runtime/html5-uploader';\nimport List from './list';\nimport { fileToObject, getFileItem, errorCode } from './util';\n\nconst { noop } = func;\n\n/**\n * Upload\n */\nclass Upload extends Base {\n static displayName = 'Upload';\n\n static propTypes = {\n ...html5Uploader.propTypes,\n ...List.propTypes,\n /**\n * 样式前缀\n */\n prefix: PropTypes.string.isRequired,\n /**\n * 上传的地址\n */\n action: PropTypes.string,\n /**\n * 文件列表\n */\n value: PropTypes.array,\n /**\n * 默认文件列表\n */\n defaultValue: PropTypes.array,\n /**\n * 上传按钮形状\n */\n shape: PropTypes.oneOf(['card']),\n /**\n * 上传列表的样式\n * @enumdesc 文字, 图文, 卡片\n */\n listType: PropTypes.oneOf(['text', 'image', 'card']),\n list: PropTypes.any,\n /**\n * 文件名字段\n */\n name: PropTypes.string,\n /**\n * 上传额外传参\n */\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * 数据格式化函数,配合自定义 action 使用,参数为服务器的响应数据,详见 [formatter](#formater)\n * @param {Object} response 返回\n * @param {File} file 文件对象\n */\n formatter: PropTypes.func,\n /**\n * 最大文件上传个数\n */\n limit: PropTypes.number,\n /**\n * 设置上传超时,单位ms\n */\n timeout: PropTypes.number,\n /**\n * 可选参数,是否支持拖拽上传,`ie10+` 支持。\n */\n dragable: PropTypes.bool,\n closable: PropTypes.bool,\n /**\n * 可选参数,是否本地预览\n */\n useDataURL: PropTypes.bool,\n /**\n * 可选参数,是否禁用上传功能\n */\n disabled: PropTypes.bool,\n /**\n * 选择文件回调\n */\n onSelect: PropTypes.func,\n /**\n * 上传中\n */\n onProgress: PropTypes.func,\n /**\n * 上传文件改变时的状态\n * @param {Object} info 文件事件对象\n */\n onChange: PropTypes.func,\n /**\n * 可选参数,上传成功回调函数,参数为请求下响应信息以及文件\n * @param {Object} file 文件\n * @param {Array<Object>} value 值\n */\n onSuccess: PropTypes.func,\n /**\n * 可选参数, 用于校验文件,afterSelect仅在 autoUpload=false 的时候生效,autoUpload=true时,可以使用beforeUpload完全可以替代该功能.\n * @param {Object} file\n * @returns {Boolean} 返回false会阻止上传,其他则表示正常\n */\n afterSelect: PropTypes.func,\n /**\n * 移除文件回调函数\n * @param {Object} file 文件\n * @returns {Boolean|Promise} 返回 false、Promise.resolve(false)、 Promise.reject() 将阻止文件删除\n */\n onRemove: PropTypes.func,\n /**\n * 可选参数,上传失败回调函数,参数为上传失败的信息、响应信息以及文件\n * @param {Object} file 出错的文件\n * @param {Array} value 当前值\n */\n onError: PropTypes.func,\n /**\n * 可选参数, 详见 [beforeUpload](#beforeUpload)\n * @param {Object} file 所有文件\n * @param {Object} options 参数\n * @returns {Boolean|Object|Promise} 返回值作用见demo\n */\n beforeUpload: PropTypes.func,\n /**\n * 放文件\n */\n onDrop: PropTypes.func,\n /**\n * 自定义class\n */\n className: PropTypes.string,\n /**\n * 自定义内联样式\n */\n style: PropTypes.object,\n /**\n * 子元素\n */\n children: PropTypes.node,\n /**\n * 自动上传\n */\n autoUpload: PropTypes.bool,\n /**\n * 自定义上传方法\n * @param {Object} option\n * @return {Object} object with abort method\n */\n request: PropTypes.func,\n /**\n * 透传给Progress props\n */\n progressProps: PropTypes.object,\n rtl: PropTypes.bool,\n };\n\n static defaultProps = {\n ...html5Uploader.defaultProps,\n prefix: 'next-',\n limit: Infinity,\n autoUpload: true,\n closable: true,\n onSelect: noop,\n onProgress: noop,\n onChange: noop,\n onSuccess: noop,\n onRemove: noop,\n onError: noop,\n onDrop: noop,\n beforeUpload: noop,\n afterSelect: noop,\n };\n\n constructor(props) {\n super(props);\n\n let value;\n if ('value' in props) {\n value = props.value;\n } else {\n value = props.defaultValue;\n }\n\n this.state = {\n value: typeof value === 'undefined' ? [] : [].concat(value),\n };\n\n this.uploading = false;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ('value' in nextProps && !this.uploading) {\n this.setState({\n value: typeof nextProps.value === 'undefined' ? [] : [].concat(nextProps.value),\n });\n }\n }\n\n onSelect = files => {\n const { autoUpload, afterSelect, onSelect, limit } = this.props;\n // 总数\n const total = this.state.value.length + files.length;\n // 差额\n const less = limit - this.state.value.length;\n if (less <= 0) {\n // 差额不足 则不上传\n return;\n }\n\n const fileList = files.map(file => {\n const objFile = fileToObject(file);\n objFile.state = 'selected';\n return objFile;\n });\n\n // 默认全量上传\n let uploadFiles = fileList;\n let discardFiles = [];\n if (total > limit) {\n // 全量上传总数会超过limit 但是 还有差额\n uploadFiles = fileList.slice(0, less);\n discardFiles = fileList.slice(less);\n }\n\n const value = this.state.value.concat(fileList);\n\n /* eslint-disable-next */\n this.state.value = value;\n\n if (autoUpload) {\n this.uploadFiles(uploadFiles);\n }\n\n onSelect(uploadFiles, value);\n discardFiles.forEach(file => {\n // 丢弃的文件\n const err = new Error(errorCode.EXCEED_LIMIT);\n err.code = errorCode.EXCEED_LIMIT;\n this.onError(err, null, file);\n });\n\n if (!autoUpload) {\n uploadFiles.forEach(file => {\n const isPassed = afterSelect(file);\n func.promiseCall(isPassed, func.noop, error => {\n this.onError(error, null, file); // TODO: handle error message\n });\n });\n this.onChange(value, uploadFiles);\n }\n };\n\n onDrop = files => {\n this.onSelect(files);\n this.props.onDrop(files);\n };\n\n /**\n * 对外暴露API, 添加文件\n * @param files\n */\n selectFiles(files) {\n const filesArr = files.length ? Array.prototype.slice.call(files) : [files];\n\n this.onSelect(filesArr);\n }\n\n uploadFiles(files) {\n const fileList = files\n .filter(file => {\n if (file.state === 'selected') {\n file.state = 'uploading';\n return true;\n }\n return false;\n })\n .map(file => {\n return file.originFileObj;\n });\n\n fileList.length && this.uploaderRef.startUpload(fileList);\n }\n\n /**\n * 对外暴露api,控制文件上传\n */\n startUpload() {\n this.uploadFiles(this.state.value);\n }\n\n replaceFiles(old, current) {\n const targetItem = getFileItem(old, this.state.value);\n if (!targetItem) {\n return;\n }\n\n current.uid = old.uid;\n targetItem.originFileObj = current;\n }\n\n isUploading() {\n return this.uploading;\n }\n\n onProgress = (e, file) => {\n this.uploading = true;\n\n const { value } = this.state;\n const targetItem = getFileItem(file, value);\n\n if (!targetItem) {\n return;\n }\n\n Object.assign(targetItem, {\n state: 'uploading',\n percent: e.percent,\n });\n\n this.setState({\n value,\n });\n\n this.props.onProgress(value, targetItem);\n };\n\n onSuccess = (response, file) => {\n this.uploading = false;\n\n const { formatter } = this.props;\n\n if (formatter) {\n response = formatter(response, file);\n }\n\n try {\n if (typeof response === 'string') {\n response = JSON.parse(response);\n }\n } catch (e) {\n e.code = errorCode.RESPONSE_FAIL;\n return this.onError(e, response, file);\n }\n\n if (response.success === false) {\n const err = new Error(response.message || errorCode.RESPONSE_FAIL);\n err.code = errorCode.RESPONSE_FAIL;\n return this.onError(err, response, file);\n }\n\n const { value } = this.state;\n const targetItem = getFileItem(file, value);\n\n if (!targetItem) {\n return;\n }\n\n Object.assign(targetItem, {\n state: 'done',\n response,\n url: response.url,\n downloadURL: response.downloadURL || response.url, // 下载地址(可选)\n });\n\n if (!this.props.useDataURL) {\n targetItem.imgURL = response.imgURL || response.url; // 缩略图地址(可选)\n }\n\n this.onChange(value, targetItem);\n this.props.onSuccess(targetItem, value);\n };\n\n onError = (err, response, file) => {\n this.uploading = false;\n\n const { value } = this.state;\n const targetItem = getFileItem(file, value);\n\n if (!targetItem) {\n return;\n }\n\n Object.assign(targetItem, {\n state: 'error',\n error: err,\n response,\n });\n\n this.onChange(value, targetItem);\n this.props.onError(targetItem, value);\n };\n\n /**\n * 删除文件\n * @param {File} file\n * @return {void}\n */\n removeFile = file => {\n file.state = 'removed';\n this.uploaderRef.abort(file); // 删除组件时调用组件的 `abort` 方法中断上传\n\n const fileList = this.state.value;\n const targetItem = getFileItem(file, fileList);\n const index = fileList.indexOf(targetItem);\n if (index !== -1) {\n fileList.splice(index, 1);\n this.onChange(fileList, targetItem);\n }\n };\n\n /**\n * 取消上传\n * @param {File} file\n * @return {void}\n */\n abort = file => {\n const fileList = this.state.value;\n const targetItem = getFileItem(file, fileList);\n const index = fileList.indexOf(targetItem);\n if (index !== -1) {\n fileList.splice(index, 1);\n this.onChange(fileList, targetItem);\n }\n this.uploaderRef.abort(file); // 取消上传时调用组件的 `abort` 方法中断上传\n };\n\n onChange = (value, file) => {\n this.setState({\n value,\n });\n this.props.onChange(value, file);\n };\n\n render() {\n const {\n listType,\n prefix,\n dragable,\n shape,\n className,\n style,\n useDataURL,\n disabled,\n limit,\n closable,\n beforeUpload,\n readonly,\n onRemove,\n onCancel,\n onPreview,\n list,\n extraRender,\n progressProps,\n rtl,\n ...others\n } = this.props;\n\n const cls = classNames({\n [`${prefix}upload`]: true,\n [`${prefix}upload-dragable`]: dragable,\n [`${prefix}disabled`]: disabled,\n [`${prefix}readonly`]: readonly,\n [className]: className,\n });\n\n const isExceedLimit = this.state.value.length >= limit;\n const innerCls = classNames({\n [`${prefix}upload-inner`]: true,\n [`${prefix}hidden`]: isExceedLimit,\n });\n\n let { children } = this.props;\n if (shape === 'card') {\n const cardCls = classNames({\n [`${prefix}upload-card`]: true,\n [`${prefix}disabled`]: disabled,\n });\n children = (\n <div className={cardCls}>\n <Icon type=\"plus\" size=\"large\" />\n <div tabIndex=\"0\" role=\"button\" className={`${prefix}upload-text`}>\n {children}\n </div>\n </div>\n );\n }\n\n // disabled 状态下把 remove函数替换成禁止 remove的函数\n const onRemoveFunc = disabled ? func.prevent : onRemove;\n const otherAttributes = obj.pickAttrsWith(this.props, 'data-');\n return (\n <div className={cls} style={style} {...otherAttributes}>\n <Uploader\n {...others}\n beforeUpload={beforeUpload}\n dragable={dragable}\n disabled={disabled || isExceedLimit}\n className={innerCls}\n onSelect={this.onSelect}\n onDrop={this.onDrop}\n onProgress={this.onProgress}\n onSuccess={this.onSuccess}\n onError={this.onError}\n ref={this.saveUploaderRef}\n >\n {children}\n </Uploader>\n {listType || list ? (\n <List\n useDataURL={useDataURL}\n uploader={this}\n listType={listType}\n value={this.state.value}\n closable={closable}\n onRemove={onRemoveFunc}\n progressProps={progressProps}\n onCancel={onCancel}\n onPreview={onPreview}\n extraRender={extraRender}\n rtl={rtl}\n />\n ) : null}\n </div>\n );\n }\n}\n\nexport default Upload;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport zhCN from '../locale/zh-cn.js';\nimport { func, obj } from '../util';\nimport Base from './base';\nimport List from './list';\nimport Upload from './upload';\n\n/**\n * Upload.Card\n * @description 继承 Upload 的 API,除非特别说明\n */\nclass Card extends Base {\n static displayName = 'Card';\n\n static propTypes = {\n prefix: PropTypes.string,\n locale: PropTypes.object,\n children: PropTypes.object,\n value: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n defaultValue: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n /**\n * 点击图片回调\n */\n onPreview: PropTypes.func,\n /**\n * 改变时候的回调\n */\n onChange: PropTypes.func,\n /**\n * 点击移除的回调\n */\n onRemove: PropTypes.func,\n /**\n * 取消上传的回调\n */\n onCancel: PropTypes.func,\n };\n\n static defaultProps = {\n prefix: 'next-',\n locale: zhCN.Upload,\n onChange: func.noop,\n onPreview: func.noop,\n };\n\n constructor(props) {\n super(props);\n\n let value;\n /* istanbul ignore else */\n if ('value' in props) {\n value = props.value;\n } else {\n value = props.defaultValue;\n }\n\n this.state = {\n value: typeof value === 'undefined' ? /* istanbul ignore next */ [] : value,\n uploaderRef: this.uploaderRef,\n };\n }\n\n /* eslint react/no-did-mount-set-state: [0] */\n componentDidMount() {\n this.setState({ uploaderRef: this.uploaderRef });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n /* istanbul ignore if */\n if ('value' in nextProps) {\n this.setState({\n value: typeof nextProps.value === 'undefined' ? [] : nextProps.value,\n });\n }\n }\n\n onProgress = value => {\n this.setState({\n value,\n });\n };\n\n onChange = (value, file) => {\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n this.props.onChange(value, file);\n };\n\n isUploading() {\n return this.state.uploaderRef.isUploading();\n }\n\n saveRef(ref) {\n this.saveUploaderRef(ref);\n }\n\n render() {\n const {\n action,\n disabled,\n prefix,\n locale,\n className,\n style,\n limit,\n onPreview,\n onRemove,\n onCancel,\n timeout,\n } = this.props;\n\n const isExceedLimit = this.state.value.length >= limit;\n const uploadButtonCls = classNames({\n [`${prefix}upload-list-item`]: true,\n [`${prefix}hidden`]: isExceedLimit,\n });\n\n const children = this.props.children || locale.card.addPhoto;\n\n const onRemoveFunc = disabled ? func.prevent : onRemove;\n const othersForList = obj.pickOthers(Card.propTypes, this.props);\n const othersForUpload = obj.pickOthers(List.propTypes, othersForList);\n return (\n <List\n className={className}\n style={style}\n listType=\"card\"\n closable\n locale={locale}\n value={this.state.value}\n onRemove={onRemoveFunc}\n onCancel={onCancel}\n onPreview={onPreview}\n uploader={this.state.uploaderRef}\n {...othersForList}\n >\n <Upload\n {...othersForUpload}\n shape=\"card\"\n disabled={disabled}\n action={action}\n timeout={timeout}\n value={this.state.value}\n onProgress={this.onProgress}\n onChange={this.onChange}\n ref={ref => this.saveRef(ref)}\n className={uploadButtonCls}\n >\n {children}\n </Upload>\n </List>\n );\n }\n}\n\nexport default Card;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport { func } from '../util';\nimport zhCN from '../locale/zh-cn.js';\nimport Upload from './upload';\n\n/**\n * Upload.Dragger\n * @description IE10+ 支持。继承 Upload 的 API,除非特别说明\n */\nclass Dragger extends React.Component {\n static propTypes = {\n /**\n * 样式前缀\n */\n prefix: PropTypes.string,\n locale: PropTypes.object,\n shape: PropTypes.string,\n onDragOver: PropTypes.func,\n onDragLeave: PropTypes.func,\n onDrop: PropTypes.func,\n limit: PropTypes.number,\n className: PropTypes.string,\n style: PropTypes.object,\n defaultValue: PropTypes.array,\n children: PropTypes.node,\n listType: PropTypes.string,\n timeout: PropTypes.number,\n };\n\n static defaultProps = {\n prefix: 'next-',\n onDragOver: func.noop,\n onDragLeave: func.noop,\n onDrop: func.noop,\n locale: zhCN.Upload,\n };\n\n state = {\n dragOver: false,\n };\n\n onDragOver = e => {\n this.setState({\n dragOver: true,\n });\n this.props.onDragOver(e);\n };\n\n onDragLeave = e => {\n this.setState({\n dragOver: false,\n });\n this.props.onDragLeave(e);\n };\n\n onDrop = e => {\n this.setState({\n dragOver: false,\n });\n this.props.onDrop(e);\n };\n\n render() {\n const { className, style, shape, locale, prefix, listType, ...others } = this.props;\n const prefixCls = `${prefix}upload-drag`;\n const cls = classNames({\n [`${prefixCls}`]: true,\n [`${prefixCls}-over`]: this.state.dragOver,\n [className]: !!className,\n });\n\n const children = this.props.children || (\n <div className={cls}>\n <p className={`${prefixCls}-icon`}>\n <Icon size=\"large\" type=\"arrow-up\" className={`${prefixCls}-upload-icon`} />\n </p>\n <p className={`${prefixCls}-text`}>{locale.drag.text}</p>\n <p className={`${prefixCls}-hint`}>{locale.drag.hint}</p>\n </div>\n );\n\n return (\n <Upload\n {...others}\n prefix={prefix}\n shape={shape}\n listType={listType}\n dragable\n style={style}\n onDragOver={this.onDragOver}\n onDragLeave={this.onDragLeave}\n onDrop={this.onDrop}\n ref={this.saveUploaderRef}\n >\n {children}\n </Upload>\n );\n }\n}\n\nexport default Dragger;\n","import React from 'react';\nimport ConfigProvider from '../config-provider';\nimport { log } from '../util';\nimport { errorCode } from './util';\nimport transform from './transform';\nimport Upload from './upload';\nimport List from './list';\nimport Card from './card';\nimport Dragger from './dragger';\nimport Selecter from './runtime/selecter';\nimport Uploader from './runtime/uploader';\n\nUpload.Card = ConfigProvider.config(Card, { componentName: 'Upload' });\nUpload.Dragger = ConfigProvider.config(Dragger, { componentName: 'Upload' });\nUpload.Selecter = Selecter;\nUpload.Uploader = Uploader;\nUpload.ErrorCode = errorCode;\n\n// compatible with 0.x version\nUpload.ImageUpload = ConfigProvider.config(Card, {\n componentName: 'Upload',\n transform: /* istanbul ignore next */ (props, deprecated) => {\n deprecated('Upload.ImageUpload', 'Upload.Card', 'Upload');\n const newprops = transform(props, () => {});\n if (newprops.locale && newprops.locale.image) {\n newprops.locale.card = newprops.locale.image;\n }\n\n return newprops;\n },\n});\n\n// compatible with 0.x version\nUpload.DragUpload = ConfigProvider.config(Dragger, {\n componentName: 'Upload',\n transform: /* istanbul ignore next */ (props, deprecated) => {\n deprecated('Upload.DragUpload', 'Upload.Dragger', 'Upload');\n const newprops = transform(props, () => {});\n if (!newprops.listType) {\n newprops.listType = 'card';\n }\n\n return newprops;\n },\n});\n\n// compatible with 0.x version\n/* istanbul ignore next */\nUpload.Core = class Core extends React.Component {\n constructor(props) {\n super(props);\n // eslint-disable-next-line\n const {\n action,\n name,\n method,\n beforeUpload,\n onProgress,\n onError,\n withCredentials,\n headers,\n data,\n onSuccess,\n } = this.props;\n\n this.uploader = new Uploader({\n action,\n name,\n method,\n beforeUpload,\n onProgress,\n onError,\n withCredentials,\n headers,\n data,\n onSuccess,\n });\n }\n\n abort() {\n this.uploader.abort();\n }\n\n handleSelect = files => {\n this.uploader.startUpload(files);\n };\n\n render() {\n log.deprecated('Upload.Core', 'Upload.Selecter and Upload.Uploader', 'Upload');\n\n // eslint-disable-next-line\n const {\n action,\n name,\n method,\n beforeUpload,\n onProgress,\n onError,\n withCredentials,\n headers,\n data,\n onSuccess,\n ...others\n } = this.props;\n\n const props = others;\n\n return <Selecter {...transform(props, () => {})} onSelect={this.handleSelect} />;\n }\n};\n\nUpload.List = List;\n\n// compatible with 0.x version\n/* istanbul ignore next */\nUpload.CropUpload = function() {\n log.deprecated('Upload.CropUpload', '@alife/bc-next-crop-upload', 'Upload');\n return null;\n};\n\nexport default ConfigProvider.config(Upload, {\n transform,\n});\n","import { version } from '../../package.json';\n\nexport default version;\n"],"sourceRoot":""}
\No newline at end of file