UNPKG

3.28 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack://[name]/webpack/universalModuleDefinition","webpack://[name]/webpack/bootstrap","webpack://[name]/./node_modules/prop-types/index.js","webpack://[name]/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack://[name]/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://[name]/./node_modules/tslib/tslib.es6.js","webpack://[name]/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://[name]/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://[name]/external {\"root\":\"mobx\",\"commonjs2\":\"mobx\",\"commonjs\":\"mobx\",\"amd\":\"mobx\"}","webpack://[name]/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://[name]/./node_modules/@babel/runtime/helpers/objectSpread2.js","webpack://[name]/./node_modules/@babel/runtime/helpers/createClass.js","webpack://[name]/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://[name]/./node_modules/@babel/runtime/helpers/inherits.js","webpack://[name]/./node_modules/@babel/runtime/helpers/extends.js","webpack://[name]/./node_modules/classnames/index.js","webpack://[name]/./components-pro/data-set/enum.tsx","webpack://[name]/./components/configure/index.tsx","webpack://[name]/./node_modules/lodash/noop.js","webpack://[name]/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://[name]/./components/_util/KeyCode.tsx","webpack://[name]/external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}","webpack://[name]/./node_modules/@babel/runtime/helpers/get.js","webpack://[name]/./node_modules/@babel/runtime/regenerator/index.js","webpack://[name]/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://[name]/./components-pro/locale-context/locale.tsx","webpack://[name]/./components-pro/locale-context/supports.tsx","webpack://[name]/./components-pro/locale-context/LocaleContext.tsx","webpack://[name]/./components-pro/locale-context/index.tsx","webpack://[name]/./components/_util/enum.tsx","webpack://[name]/./components-pro/table/enum.tsx","webpack://[name]/./node_modules/lodash/omit.js","webpack://[name]/./components/icon/index.tsx","webpack://[name]/./components/_util/warning.tsx","webpack://[name]/./node_modules/lodash/isString.js","webpack://[name]/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://[name]/external {\"root\":\"moment\",\"commonjs2\":\"moment\",\"commonjs\":\"moment\",\"amd\":\"moment\"}","webpack://[name]/./components/progress/enum.tsx","webpack://[name]/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://[name]/./components-pro/form/enum.tsx","webpack://[name]/./components/rc-components/tree/util.jsx","webpack://[name]/./node_modules/@babel/runtime/helpers/typeof.js","webpack://[name]/./components/animate/ChildrenUtils.tsx","webpack://[name]/./components/animate/util.tsx","webpack://[name]/./components/animate/AnimateChild.tsx","webpack://[name]/./components/animate/Animate.tsx","webpack://[name]/./components/animate/index.tsx","webpack://[name]/./node_modules/lodash/isObject.js","webpack://[name]/./node_modules/lodash/isEqual.js","webpack://[name]/./components/rc-components/menu/util.jsx","webpack://[name]/./node_modules/create-react-class/index.js","webpack://[name]/./node_modules/lodash/isNil.js","webpack://[name]/./components/_util/addEventListener.tsx","webpack://[name]/./node_modules/lodash/isNumber.js","webpack://[name]/./node_modules/lodash/isArray.js","webpack://[name]/./node_modules/mini-store/lib/index.js","webpack://[name]/./node_modules/fbjs/lib/invariant.js","webpack://[name]/./node_modules/raf/index.js","webpack://[name]/./node_modules/component-classes/index.js","webpack://[name]/./node_modules/lodash/isObjectLike.js","webpack://[name]/./components/_util/measureScrollbar.tsx","webpack://[name]/./node_modules/lodash/_root.js","webpack://[name]/./node_modules/core-js/library/modules/_wks.js","webpack://[name]/./node_modules/core-js/library/modules/_global.js","webpack://[name]/./node_modules/core-js/library/modules/_core.js","webpack://[name]/./node_modules/core-js/library/modules/_descriptors.js","webpack://[name]/./components/rc-components/util/Dom/contains.jsx","webpack://[name]/./components/rc-components/trigger/LazyRenderBox.jsx","webpack://[name]/./components/rc-components/trigger/PopupInner.jsx","webpack://[name]/./components/rc-components/trigger/utils.jsx","webpack://[name]/./components/rc-components/trigger/Popup.jsx","webpack://[name]/./components/rc-components/trigger/index.jsx","webpack://[name]/./node_modules/lodash/debounce.js","webpack://[name]/(webpack)/buildin/global.js","webpack://[name]/./node_modules/core-js/library/modules/_object-dp.js","webpack://[name]/./node_modules/core-js/library/modules/_is-object.js","webpack://[name]/./node_modules/lodash/isPlainObject.js","webpack://[name]/./node_modules/core-js/library/modules/_export.js","webpack://[name]/./components/rc-components/menu/Menu.jsx","webpack://[name]/./components/rc-components/menu/index.jsx","webpack://[name]/./components-pro/message/index.tsx","webpack://[name]/./node_modules/lodash/_baseGetTag.js","webpack://[name]/./node_modules/object-assign/index.js","webpack://[name]/./node_modules/core-js/library/modules/_hide.js","webpack://[name]/./components/progress/index.tsx","webpack://[name]/./components/tooltip/placements.tsx","webpack://[name]/./components/tooltip/index.tsx","webpack://[name]/./components-pro/formatter/formatReactTemplate.tsx","webpack://[name]/./node_modules/core-js/library/modules/_has.js","webpack://[name]/./node_modules/lodash/defaultTo.js","webpack://[name]/./node_modules/lodash/_getNative.js","webpack://[name]/./node_modules/lodash/isArrayLike.js","webpack://[name]/./node_modules/core-js/library/modules/_an-object.js","webpack://[name]/./components/checkbox/Checkbox.tsx","webpack://[name]/./components/ripple/MouseDown.tsx","webpack://[name]/./components/ripple/RippleChild.tsx","webpack://[name]/./components/ripple/index.tsx","webpack://[name]/./node_modules/lodash/_Symbol.js","webpack://[name]/./node_modules/lodash/defer.js","webpack://[name]/./components-pro/_util/exception.tsx","webpack://[name]/./node_modules/lodash/keys.js","webpack://[name]/./node_modules/lodash/_copyObject.js","webpack://[name]/./node_modules/lodash/_toKey.js","webpack://[name]/./node_modules/core-js/library/modules/_fails.js","webpack://[name]/./node_modules/core-js/library/modules/_to-iobject.js","webpack://[name]/./node_modules/axios/lib/utils.js","webpack://[name]/./components/rc-components/progress/enhancer.jsx","webpack://[name]/./components/rc-components/progress/types.jsx","webpack://[name]/./components/rc-components/progress/Circle.jsx","webpack://[name]/./components/progress/Loading.tsx","webpack://[name]/./components/progress/progress.tsx","webpack://[name]/./components/_util/EventManager.tsx","webpack://[name]/./components/rc-components/util/PureRenderMixin.jsx","webpack://[name]/./components/rc-components/util/createChainedFunction.jsx","webpack://[name]/./components/_util/openAnimation.tsx","webpack://[name]/./node_modules/css-animation/es/Event.js","webpack://[name]/./node_modules/css-animation/es/index.js","webpack://[name]/./node_modules/lodash/_castPath.js","webpack://[name]/./node_modules/core-js/library/modules/_ctx.js","webpack://[name]/./node_modules/lodash/eq.js","webpack://[name]/./node_modules/core-js/library/modules/_iterators.js","webpack://[name]/./components/_util/isCssAnimationSupported.tsx","webpack://[name]/./components/spin/index.tsx","webpack://[name]/./components-pro/_util/normalizeLanguage.tsx","webpack://[name]/./components/rc-components/util/Children/toArray.jsx","webpack://[name]/./components/rc-components/tree/Tree.jsx","webpack://[name]/./components/rc-components/menu/DOMWrap.jsx","webpack://[name]/./components/rc-components/menu/SubPopupMenu.jsx","webpack://[name]/./node_modules/lodash/_getTag.js","webpack://[name]/./node_modules/core-js/library/modules/_for-of.js","webpack://[name]/./node_modules/core-js/library/modules/_validate-collection.js","webpack://[name]/./node_modules/choerodon-ui-font/index.js","webpack://[name]/./components-pro/data-set/FeedBack.tsx","webpack://[name]/./node_modules/lodash/_Stack.js","webpack://[name]/./node_modules/lodash/_ListCache.js","webpack://[name]/./node_modules/lodash/_assocIndexOf.js","webpack://[name]/./node_modules/lodash/_nativeCreate.js","webpack://[name]/./node_modules/lodash/_getMapData.js","webpack://[name]/./node_modules/lodash/isArguments.js","webpack://[name]/./node_modules/lodash/isBuffer.js","webpack://[name]/./node_modules/lodash/_isIndex.js","webpack://[name]/./node_modules/lodash/_arrayMap.js","webpack://[name]/./node_modules/lodash/keysIn.js","webpack://[name]/./node_modules/lodash/isSymbol.js","webpack://[name]/./node_modules/core-js/library/modules/_library.js","webpack://[name]/./node_modules/core-js/library/modules/_property-desc.js","webpack://[name]/./node_modules/core-js/library/modules/_object-keys.js","webpack://[name]/./node_modules/core-js/library/modules/_uid.js","webpack://[name]/./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://[name]/./node_modules/core-js/library/modules/_to-object.js","webpack://[name]/./node_modules/core-js/library/modules/_meta.js","webpack://[name]/./node_modules/core-js/library/modules/_object-pie.js","webpack://[name]/./node_modules/lodash/isFunction.js","webpack://[name]/./components/rc-components/menu/SubMenu.jsx","webpack://[name]/./components/rc-components/menu/placements.jsx","webpack://[name]/./components/rc-components/tree/index.jsx","webpack://[name]/./components/tree/index.tsx","webpack://[name]/./node_modules/lodash/get.js","webpack://[name]/./components/_util/mediaQueryListPolyfill.tsx","webpack://[name]/./components/rc-components/tooltip/placements.jsx","webpack://[name]/./components/rc-components/notification/Notice.jsx","webpack://[name]/./components/rc-components/notification/Notification.jsx","webpack://[name]/./components/rc-components/notification/index.jsx","webpack://[name]/./components/responsive/enum.tsx","webpack://[name]/./components/responsive/Responsive.tsx","webpack://[name]/./node_modules/dom-align/dist-web/index.js","webpack://[name]/./components/align/Align.tsx","webpack://[name]/./components/align/index.tsx","webpack://[name]/./node_modules/lodash/_baseGet.js","webpack://[name]/./node_modules/lodash/_baseIteratee.js","webpack://[name]/./node_modules/core-js/library/modules/_object-create.js","webpack://[name]/./node_modules/core-js/library/modules/web.dom.iterable.js","webpack://[name]/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://[name]/./components/rc-components/tabs/KeyCode.jsx","webpack://[name]/./components/rc-components/tabs/utils.jsx","webpack://[name]/./components/rc-components/tabs/TabPane.jsx","webpack://[name]/./components/rc-components/tabs/Tabs.jsx","webpack://[name]/./components/rc-components/tabs/index.jsx","webpack://[name]/./components/rc-components/tabs/TabContent.jsx","webpack://[name]/./components/rc-components/tabs/InkTabBarMixin.jsx","webpack://[name]/./components/tabs/enum.tsx","webpack://[name]/./components/rc-components/tabs/ScrollableTabBarMixin.jsx","webpack://[name]/./components/rc-components/tabs/TabBarMixin.jsx","webpack://[name]/./components/rc-components/tabs/ScrollableInkTabBar.jsx","webpack://[name]/./components/rc-components/tabs/RefMixin.jsx","webpack://[name]/./components/tabs/index.tsx","webpack://[name]/./components/_util/isFlexSupported.tsx","webpack://[name]/./components/menu/SubMenu.tsx","webpack://[name]/./components/menu/MenuItem.tsx","webpack://[name]/./components/menu/index.tsx","webpack://[name]/./components-pro/locale-context/enum.tsx","webpack://[name]/./node_modules/core-js/library/fn/set.js","webpack://[name]/./components-pro/axios/utils.tsx","webpack://[name]/./node_modules/lodash/_baseIsEqual.js","webpack://[name]/./node_modules/lodash/_Map.js","webpack://[name]/./node_modules/lodash/_MapCache.js","webpack://[name]/./node_modules/lodash/_arrayPush.js","webpack://[name]/./node_modules/lodash/_getSymbols.js","webpack://[name]/(webpack)/buildin/module.js","webpack://[name]/./node_modules/lodash/isTypedArray.js","webpack://[name]/./node_modules/lodash/isLength.js","webpack://[name]/./node_modules/lodash/_baseUnary.js","webpack://[name]/./node_modules/lodash/_nodeUtil.js","webpack://[name]/./node_modules/lodash/_isPrototype.js","webpack://[name]/./node_modules/lodash/_assignValue.js","webpack://[name]/./node_modules/lodash/_baseAssignValue.js","webpack://[name]/./node_modules/lodash/_getPrototype.js","webpack://[name]/./node_modules/lodash/_cloneArrayBuffer.js","webpack://[name]/./node_modules/lodash/_isKey.js","webpack://[name]/./node_modules/lodash/identity.js","webpack://[name]/./node_modules/core-js/library/modules/es6.string.iterator.js","webpack://[name]/./node_modules/core-js/library/modules/_to-integer.js","webpack://[name]/./node_modules/core-js/library/modules/_defined.js","webpack://[name]/./node_modules/core-js/library/modules/_iter-define.js","webpack://[name]/./node_modules/core-js/library/modules/_to-primitive.js","webpack://[name]/./node_modules/core-js/library/modules/_iobject.js","webpack://[name]/./node_modules/core-js/library/modules/_cof.js","webpack://[name]/./node_modules/core-js/library/modules/_to-length.js","webpack://[name]/./node_modules/core-js/library/modules/_shared-key.js","webpack://[name]/./node_modules/core-js/library/modules/_shared.js","webpack://[name]/./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://[name]/./node_modules/core-js/library/modules/_wks-ext.js","webpack://[name]/./node_modules/core-js/library/modules/_wks-define.js","webpack://[name]/./node_modules/core-js/library/modules/_object-gops.js","webpack://[name]/./node_modules/process/browser.js","webpack://[name]/./components/rc-components/menu/MenuItem.jsx","webpack://[name]/./components/rc-components/menu/MenuItemGroup.jsx","webpack://[name]/./node_modules/lodash/toString.js","webpack://[name]/./node_modules/babel-runtime/helpers/typeof.js","webpack://[name]/./components/rc-components/tree/TreeNode.jsx","webpack://[name]/./components/message/index.tsx","webpack://[name]/./components/message/util.tsx","webpack://[name]/./components/_util/TaskRunner.tsx","webpack://[name]/./components/rc-components/util/ContainerRender.jsx","webpack://[name]/./components/rc-components/util/Portal.jsx","webpack://[name]/./node_modules/lodash/merge.js","webpack://[name]/./components/rc-components/checkbox/Checkbox.jsx","webpack://[name]/./components/rc-components/checkbox/index.jsx","webpack://[name]/./components/rc-components/tooltip/Tooltip.jsx","webpack://[name]/./components/rc-components/tooltip/index.jsx","webpack://[name]/./node_modules/lodash/_setToArray.js","webpack://[name]/./node_modules/lodash/_copyArray.js","webpack://[name]/./node_modules/lodash/_getAllKeysIn.js","webpack://[name]/./node_modules/core-js/library/modules/_redefine.js","webpack://[name]/./node_modules/core-js/library/modules/_redefine-all.js","webpack://[name]/./node_modules/core-js/library/modules/_an-instance.js","webpack://[name]/./node_modules/core-js/library/modules/_collection.js","webpack://[name]/./node_modules/core-js/library/modules/_set-collection-of.js","webpack://[name]/./node_modules/core-js/library/modules/_set-collection-from.js","webpack://[name]/./components-pro/locale-context/zh_CN.tsx","webpack://[name]/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://[name]/./node_modules/lodash/_freeGlobal.js","webpack://[name]/./node_modules/lodash/_toSource.js","webpack://[name]/./node_modules/lodash/_equalArrays.js","webpack://[name]/./node_modules/lodash/_Uint8Array.js","webpack://[name]/./node_modules/lodash/_getAllKeys.js","webpack://[name]/./node_modules/lodash/_baseGetAllKeys.js","webpack://[name]/./node_modules/lodash/stubArray.js","webpack://[name]/./node_modules/lodash/_arrayLikeKeys.js","webpack://[name]/./node_modules/lodash/_overArg.js","webpack://[name]/./node_modules/lodash/_defineProperty.js","webpack://[name]/./node_modules/lodash/_cloneBuffer.js","webpack://[name]/./node_modules/lodash/_getSymbolsIn.js","webpack://[name]/./node_modules/lodash/_cloneTypedArray.js","webpack://[name]/./node_modules/lodash/_initCloneObject.js","webpack://[name]/./node_modules/lodash/_baseFlatten.js","webpack://[name]/./node_modules/lodash/_overRest.js","webpack://[name]/./node_modules/lodash/_setToString.js","webpack://[name]/./node_modules/lodash/_isStrictComparable.js","webpack://[name]/./node_modules/lodash/_matchesStrictComparable.js","webpack://[name]/./node_modules/lodash/_baseFor.js","webpack://[name]/./node_modules/core-js/library/modules/_a-function.js","webpack://[name]/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://[name]/./node_modules/core-js/library/modules/_dom-create.js","webpack://[name]/./node_modules/core-js/library/modules/_object-keys-internal.js","webpack://[name]/./node_modules/core-js/library/modules/_iter-step.js","webpack://[name]/./node_modules/core-js/library/modules/_is-array.js","webpack://[name]/./node_modules/core-js/library/modules/_object-gopn.js","webpack://[name]/./node_modules/component-indexof/index.js","webpack://[name]/./node_modules/core-js/library/modules/_collection-strong.js","webpack://[name]/./node_modules/core-js/library/modules/_classof.js","webpack://[name]/./node_modules/core-js/library/modules/_array-methods.js","webpack://[name]/./node_modules/core-js/library/modules/_collection-to-json.js","webpack://[name]/./node_modules/mini-store/lib/PropTypes.js","webpack://[name]/./node_modules/enquire.js/src/Util.js","webpack://[name]/./components/rc-components/menu/Divider.jsx","webpack://[name]/./node_modules/lodash/_assignMergeValue.js","webpack://[name]/./node_modules/lodash/_safeGet.js","webpack://[name]/./node_modules/lodash/flatten.js","webpack://[name]/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://[name]/./components/notification/index.tsx","webpack://[name]/./node_modules/add-dom-event-listener/lib/index.js","webpack://[name]/./node_modules/string-template/index.js","webpack://[name]/./node_modules/lodash/flatMap.js","webpack://[name]/./node_modules/warning/warning.js","webpack://[name]/./node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js","webpack://[name]/./node_modules/core-js/library/fn/map.js","webpack://[name]/./node_modules/lodash/_SetCache.js","webpack://[name]/./node_modules/lodash/_cacheHas.js","webpack://[name]/./node_modules/lodash/_mapToArray.js","webpack://[name]/./node_modules/lodash/_Set.js","webpack://[name]/./node_modules/lodash/_baseClone.js","webpack://[name]/./node_modules/lodash/_baseSlice.js","webpack://[name]/./node_modules/lodash/_hasPath.js","webpack://[name]/./node_modules/core-js/library/modules/_object-gopd.js","webpack://[name]/./node_modules/lodash/toNumber.js","webpack://[name]/./node_modules/enquire.js/src/index.js","webpack://[name]/./node_modules/lodash/_baseRest.js","webpack://[name]/./node_modules/lodash/_hasUnicode.js","webpack://[name]/./node_modules/axios/lib/helpers/buildURL.js","webpack://[name]/./node_modules/axios/index.js","webpack://[name]/./node_modules/lodash/isBoolean.js","webpack://[name]/./node_modules/lodash/omitBy.js","webpack://[name]/./node_modules/lodash/isUndefined.js","webpack://[name]/./components-pro/_util/Yallist.tsx","webpack://[name]/./components-pro/_util/Cache.tsx","webpack://[name]/./node_modules/core-js/library/fn/weak-map.js","webpack://[name]/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://[name]/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://[name]/./node_modules/lodash/_baseIsEqualDeep.js","webpack://[name]/./node_modules/lodash/_listCacheClear.js","webpack://[name]/./node_modules/lodash/_listCacheDelete.js","webpack://[name]/./node_modules/lodash/_listCacheGet.js","webpack://[name]/./node_modules/lodash/_listCacheHas.js","webpack://[name]/./node_modules/lodash/_listCacheSet.js","webpack://[name]/./node_modules/lodash/_stackClear.js","webpack://[name]/./node_modules/lodash/_stackDelete.js","webpack://[name]/./node_modules/lodash/_stackGet.js","webpack://[name]/./node_modules/lodash/_stackHas.js","webpack://[name]/./node_modules/lodash/_stackSet.js","webpack://[name]/./node_modules/lodash/_baseIsNative.js","webpack://[name]/./node_modules/lodash/_getRawTag.js","webpack://[name]/./node_modules/lodash/_objectToString.js","webpack://[name]/./node_modules/lodash/_isMasked.js","webpack://[name]/./node_modules/lodash/_coreJsData.js","webpack://[name]/./node_modules/lodash/_getValue.js","webpack://[name]/./node_modules/lodash/_mapCacheClear.js","webpack://[name]/./node_modules/lodash/_Hash.js","webpack://[name]/./node_modules/lodash/_hashClear.js","webpack://[name]/./node_modules/lodash/_hashDelete.js","webpack://[name]/./node_modules/lodash/_hashGet.js","webpack://[name]/./node_modules/lodash/_hashHas.js","webpack://[name]/./node_modules/lodash/_hashSet.js","webpack://[name]/./node_modules/lodash/_mapCacheDelete.js","webpack://[name]/./node_modules/lodash/_isKeyable.js","webpack://[name]/./node_modules/lodash/_mapCacheGet.js","webpack://[name]/./node_modules/lodash/_mapCacheHas.js","webpack://[name]/./node_modules/lodash/_mapCacheSet.js","webpack://[name]/./node_modules/lodash/_setCacheAdd.js","webpack://[name]/./node_modules/lodash/_setCacheHas.js","webpack://[name]/./node_modules/lodash/_arraySome.js","webpack://[name]/./node_modules/lodash/_equalByTag.js","webpack://[name]/./node_modules/lodash/_equalObjects.js","webpack://[name]/./node_modules/lodash/_arrayFilter.js","webpack://[name]/./node_modules/lodash/_baseTimes.js","webpack://[name]/./node_modules/lodash/_baseIsArguments.js","webpack://[name]/./node_modules/lodash/stubFalse.js","webpack://[name]/./node_modules/lodash/_baseIsTypedArray.js","webpack://[name]/./node_modules/lodash/_baseKeys.js","webpack://[name]/./node_modules/lodash/_nativeKeys.js","webpack://[name]/./node_modules/lodash/_DataView.js","webpack://[name]/./node_modules/lodash/_Promise.js","webpack://[name]/./node_modules/lodash/_WeakMap.js","webpack://[name]/./node_modules/lodash/_arrayEach.js","webpack://[name]/./node_modules/lodash/_baseAssign.js","webpack://[name]/./node_modules/lodash/_baseAssignIn.js","webpack://[name]/./node_modules/lodash/_baseKeysIn.js","webpack://[name]/./node_modules/lodash/_nativeKeysIn.js","webpack://[name]/./node_modules/lodash/_copySymbols.js","webpack://[name]/./node_modules/lodash/_copySymbolsIn.js","webpack://[name]/./node_modules/lodash/_initCloneArray.js","webpack://[name]/./node_modules/lodash/_initCloneByTag.js","webpack://[name]/./node_modules/lodash/_cloneDataView.js","webpack://[name]/./node_modules/lodash/_cloneRegExp.js","webpack://[name]/./node_modules/lodash/_cloneSymbol.js","webpack://[name]/./node_modules/lodash/_baseCreate.js","webpack://[name]/./node_modules/lodash/isMap.js","webpack://[name]/./node_modules/lodash/_baseIsMap.js","webpack://[name]/./node_modules/lodash/isSet.js","webpack://[name]/./node_modules/lodash/_baseIsSet.js","webpack://[name]/./node_modules/lodash/_baseUnset.js","webpack://[name]/./node_modules/lodash/_stringToPath.js","webpack://[name]/./node_modules/lodash/_memoizeCapped.js","webpack://[name]/./node_modules/lodash/memoize.js","webpack://[name]/./node_modules/lodash/_baseToString.js","webpack://[name]/./node_modules/lodash/last.js","webpack://[name]/./node_modules/lodash/_parent.js","webpack://[name]/./node_modules/lodash/_customOmitClone.js","webpack://[name]/./node_modules/lodash/_flatRest.js","webpack://[name]/./node_modules/lodash/_isFlattenable.js","webpack://[name]/./node_modules/lodash/_apply.js","webpack://[name]/./node_modules/lodash/_baseSetToString.js","webpack://[name]/./node_modules/lodash/constant.js","webpack://[name]/./node_modules/lodash/_shortOut.js","webpack://[name]/./node_modules/add-dom-event-listener/lib/EventObject.js","webpack://[name]/./node_modules/add-dom-event-listener/lib/EventBaseObject.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://[name]/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://[name]/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://[name]/./node_modules/lodash/map.js","webpack://[name]/./node_modules/lodash/_baseMatches.js","webpack://[name]/./node_modules/lodash/_baseIsMatch.js","webpack://[name]/./node_modules/lodash/_getMatchData.js","webpack://[name]/./node_modules/lodash/_baseMatchesProperty.js","webpack://[name]/./node_modules/lodash/hasIn.js","webpack://[name]/./node_modules/lodash/_baseHasIn.js","webpack://[name]/./node_modules/lodash/property.js","webpack://[name]/./node_modules/lodash/_baseProperty.js","webpack://[name]/./node_modules/lodash/_basePropertyDeep.js","webpack://[name]/./node_modules/lodash/_baseMap.js","webpack://[name]/./node_modules/lodash/_baseEach.js","webpack://[name]/./node_modules/lodash/_baseForOwn.js","webpack://[name]/./node_modules/lodash/_createBaseFor.js","webpack://[name]/./node_modules/lodash/_createBaseEach.js","webpack://[name]/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://[name]/./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack://[name]/./node_modules/core-js/library/fn/symbol/iterator.js","webpack://[name]/./node_modules/core-js/library/modules/_string-at.js","webpack://[name]/./node_modules/core-js/library/modules/_iter-create.js","webpack://[name]/./node_modules/core-js/library/modules/_object-dps.js","webpack://[name]/./node_modules/core-js/library/modules/_array-includes.js","webpack://[name]/./node_modules/core-js/library/modules/_to-absolute-index.js","webpack://[name]/./node_modules/core-js/library/modules/_html.js","webpack://[name]/./node_modules/core-js/library/modules/_object-gpo.js","webpack://[name]/./node_modules/core-js/library/modules/es6.array.iterator.js","webpack://[name]/./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://[name]/./node_modules/babel-runtime/core-js/symbol.js","webpack://[name]/./node_modules/core-js/library/fn/symbol/index.js","webpack://[name]/./node_modules/core-js/library/modules/es6.symbol.js","webpack://[name]/./node_modules/core-js/library/modules/_enum-keys.js","webpack://[name]/./node_modules/core-js/library/modules/_object-gopn-ext.js","webpack://[name]/./node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack://[name]/./node_modules/core-js/library/modules/es7.symbol.observable.js","webpack://[name]/./node_modules/performance-now/lib/performance-now.js","webpack://[name]/./node_modules/@babel/runtime/helpers/superPropBase.js","webpack://[name]/./node_modules/core-js/library/modules/es6.set.js","webpack://[name]/./node_modules/core-js/library/modules/_iter-call.js","webpack://[name]/./node_modules/core-js/library/modules/_is-array-iter.js","webpack://[name]/./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://[name]/./node_modules/core-js/library/modules/_set-species.js","webpack://[name]/./node_modules/core-js/library/modules/_array-species-create.js","webpack://[name]/./node_modules/core-js/library/modules/_array-species-constructor.js","webpack://[name]/./node_modules/core-js/library/modules/es7.set.to-json.js","webpack://[name]/./node_modules/core-js/library/modules/_array-from-iterable.js","webpack://[name]/./node_modules/core-js/library/modules/es7.set.of.js","webpack://[name]/./node_modules/core-js/library/modules/es7.set.from.js","webpack://[name]/./node_modules/create-react-class/factory.js","webpack://[name]/./node_modules/fbjs/lib/emptyObject.js","webpack://[name]/./node_modules/mini-store/lib/Provider.js","webpack://[name]/./node_modules/mini-store/lib/connect.js","webpack://[name]/./node_modules/shallowequal/index.js","webpack://[name]/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://[name]/./node_modules/mini-store/lib/create.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://[name]/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://[name]/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://[name]/./node_modules/regenerator-runtime/runtime.js","webpack://[name]/./node_modules/mutationobserver-shim/dist/mutationobserver.min.js","webpack://[name]/./node_modules/lodash/now.js","webpack://[name]/./node_modules/enquire.js/src/MediaQueryDispatch.js","webpack://[name]/./node_modules/enquire.js/src/MediaQuery.js","webpack://[name]/./node_modules/enquire.js/src/QueryHandler.js","webpack://[name]/./node_modules/lodash/_baseSet.js","webpack://[name]/./node_modules/core-js/library/modules/_object-assign.js","webpack://[name]/./node_modules/lodash/_baseMerge.js","webpack://[name]/./node_modules/lodash/_baseMergeDeep.js","webpack://[name]/./node_modules/lodash/isArrayLikeObject.js","webpack://[name]/./node_modules/lodash/toPlainObject.js","webpack://[name]/./node_modules/lodash/_createAssigner.js","webpack://[name]/./node_modules/lodash/_isIterateeCall.js","webpack://[name]/./node_modules/lodash/_stringToArray.js","webpack://[name]/./node_modules/lodash/_asciiToArray.js","webpack://[name]/./node_modules/lodash/_unicodeToArray.js","webpack://[name]/./node_modules/core-js/library/modules/es6.map.js","webpack://[name]/./node_modules/core-js/library/modules/es7.map.to-json.js","webpack://[name]/./node_modules/core-js/library/modules/es7.map.of.js","webpack://[name]/./node_modules/core-js/library/modules/es7.map.from.js","webpack://[name]/./node_modules/lodash/_baseFindIndex.js","webpack://[name]/./node_modules/@babel/runtime/helpers/construct.js","webpack://[name]/./node_modules/axios/lib/helpers/bind.js","webpack://[name]/./node_modules/axios/lib/cancel/isCancel.js","webpack://[name]/./node_modules/axios/lib/defaults.js","webpack://[name]/./node_modules/axios/lib/adapters/xhr.js","webpack://[name]/./node_modules/axios/lib/core/createError.js","webpack://[name]/./node_modules/axios/lib/core/mergeConfig.js","webpack://[name]/./node_modules/axios/lib/cancel/Cancel.js","webpack://[name]/./node_modules/querystringify/index.js","webpack://[name]/./node_modules/lodash/capitalize.js","webpack://[name]/./node_modules/lodash/findLast.js","webpack://[name]/./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack://[name]/./components-pro/axios/throttleAdapterEnhancer.tsx","webpack://[name]/./components-pro/axios/cacheAdapterEnhancer.tsx","webpack://[name]/./node_modules/lodash/throttle.js","webpack://[name]/./components/grid/col.tsx","webpack://[name]/./components/grid/row.tsx","webpack://[name]/./node_modules/axios/lib/axios.js","webpack://[name]/./node_modules/is-buffer/index.js","webpack://[name]/./node_modules/axios/lib/core/Axios.js","webpack://[name]/./node_modules/axios/lib/core/InterceptorManager.js","webpack://[name]/./node_modules/axios/lib/core/dispatchRequest.js","webpack://[name]/./node_modules/axios/lib/core/transformData.js","webpack://[name]/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://[name]/./node_modules/axios/lib/core/settle.js","webpack://[name]/./node_modules/axios/lib/core/enhanceError.js","webpack://[name]/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://[name]/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://[name]/./node_modules/axios/lib/helpers/cookies.js","webpack://[name]/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://[name]/./node_modules/axios/lib/helpers/combineURLs.js","webpack://[name]/./node_modules/axios/lib/cancel/CancelToken.js","webpack://[name]/./node_modules/axios/lib/helpers/spread.js","webpack://[name]/./node_modules/lodash/_baseDelay.js","webpack://[name]/./node_modules/lodash/upperFirst.js","webpack://[name]/./node_modules/lodash/_createCaseFirst.js","webpack://[name]/./node_modules/lodash/_castSlice.js","webpack://[name]/./node_modules/lodash/_createFind.js","webpack://[name]/./node_modules/lodash/findLastIndex.js","webpack://[name]/./node_modules/lodash/toInteger.js","webpack://[name]/./node_modules/lodash/toFinite.js","webpack://[name]/./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack://[name]/./node_modules/lodash/negate.js","webpack://[name]/./node_modules/lodash/pickBy.js","webpack://[name]/./node_modules/lodash/_basePickBy.js","webpack://[name]/./node_modules/core-js/library/modules/es6.weak-map.js","webpack://[name]/./node_modules/core-js/library/modules/_collection-weak.js","webpack://[name]/./node_modules/core-js/library/modules/es7.weak-map.of.js","webpack://[name]/./node_modules/core-js/library/modules/es7.weak-map.from.js","webpack://[name]/./node_modules/react-codemirror2/index.js","webpack://[name]/./node_modules/codemirror/lib/codemirror.js","webpack://[name]/./components-pro/axios/index.tsx","webpack://[name]/./components-pro/validator/Validity.tsx","webpack://[name]/./components-pro/validator/ValidationResult.tsx","webpack://[name]/./components-pro/_util/isEmpty.tsx","webpack://[name]/./components-pro/number-field/utils.tsx","webpack://[name]/./components-pro/field/utils.tsx","webpack://[name]/./components-pro/validator/rules/typeMismatch.tsx","webpack://[name]/./components-pro/validator/rules/customError.tsx","webpack://[name]/./components-pro/_util/MobxUtils.tsx","webpack://[name]/./components-pro/_util/ObjectChainValue.tsx","webpack://[name]/./components-pro/formatter/utils.tsx","webpack://[name]/./components-pro/formatter/formatString.tsx","webpack://[name]/./components-pro/data-set/utils.tsx","webpack://[name]/./components-pro/formatter/formatNumber.tsx","webpack://[name]/./components-pro/formatter/formatCurrency.tsx","webpack://[name]/./components-pro/validator/rules/uniqueError.tsx","webpack://[name]/./components-pro/validator/rules/index.tsx","webpack://[name]/./components-pro/validator/rules/badInput.tsx","webpack://[name]/./components-pro/validator/rules/patternMismatch.tsx","webpack://[name]/./components-pro/validator/rules/rangeOverflow.tsx","webpack://[name]/./components-pro/validator/rules/rangeUnderflow.tsx","webpack://[name]/./components-pro/validator/rules/stepMismatch.tsx","webpack://[name]/./components-pro/validator/rules/tooLong.tsx","webpack://[name]/./components-pro/validator/rules/tooShort.tsx","webpack://[name]/./components-pro/validator/rules/valueMissing.tsx","webpack://[name]/./components-pro/_util/getReactNodeText.tsx","webpack://[name]/./components-pro/lov/enum.tsx","webpack://[name]/./components-pro/validator/Validator.tsx","webpack://[name]/./components-pro/stores/utils.tsx","webpack://[name]/./components-pro/stores/LovCodeStore.tsx","webpack://[name]/./components-pro/stores/LookupCodeStore.tsx","webpack://[name]/./components-pro/_util/isSame.tsx","webpack://[name]/./components-pro/_util/PromiseQueue.tsx","webpack://[name]/./components-pro/_util/isSameLike.tsx","webpack://[name]/./components-pro/data-set/Field.tsx","webpack://[name]/./components-pro/data-set/Record.tsx","webpack://[name]/./components-pro/data-set/DataSetSnapshot.tsx","webpack://[name]/./components-pro/_util/EventManager.tsx","webpack://[name]/./components/_util/UnitConvertor.tsx","webpack://[name]/./components-pro/_util/autobind.tsx","webpack://[name]/./components-pro/_util/createDefaultSetter.tsx","webpack://[name]/./components-pro/core/ViewComponent.tsx","webpack://[name]/./components-pro/icon/index.tsx","webpack://[name]/./node_modules/mobx-react-lite/dist/index.module.js","webpack://[name]/./node_modules/mobx-react/dist/mobx-react.module.js","webpack://[name]/./components-pro/form/FormContext.tsx","webpack://[name]/./components-pro/data-set/DataSetComponent.tsx","webpack://[name]/./components-pro/trigger/PopupInner.tsx","webpack://[name]/./components-pro/trigger/Popup.tsx","webpack://[name]/./components-pro/animate/index.tsx","webpack://[name]/./components-pro/trigger/enum.tsx","webpack://[name]/./components-pro/_util/TaskRunner.tsx","webpack://[name]/./components-pro/trigger/TriggerChild.tsx","webpack://[name]/./components-pro/trigger/Trigger.tsx","webpack://[name]/./components-pro/tooltip/placements.tsx","webpack://[name]/./components-pro/tooltip/Tooltip.tsx","webpack://[name]/./components-pro/tooltip/index.tsx","webpack://[name]/./components-pro/field/enum.tsx","webpack://[name]/./components-pro/form/utils.tsx","webpack://[name]/./components-pro/field/CloseButton.tsx","webpack://[name]/./components-pro/field/FormField.tsx","webpack://[name]/./components-pro/progress/Progress.tsx","webpack://[name]/./components-pro/button/enum.tsx","webpack://[name]/./components-pro/progress/index.tsx","webpack://[name]/./components-pro/ripple/index.tsx","webpack://[name]/./components-pro/button/Button.tsx","webpack://[name]/./components-pro/spin/index.tsx","webpack://[name]/./components-pro/_util/AsyncComponent.tsx","webpack://[name]/./components-pro/data-set/DataSetRequestError.tsx","webpack://[name]/./components-pro/modal/utils.tsx","webpack://[name]/./components-pro/modal/Modal.tsx","webpack://[name]/./components-pro/modal-container/Mask.tsx","webpack://[name]/./components-pro/modal-container/ModalContainer.tsx","webpack://[name]/./components-pro/modal/confirm.tsx","webpack://[name]/./components-pro/data-set/Transport.tsx","webpack://[name]/./components-pro/data-set/DataSet.tsx","webpack://[name]/./components-pro/data-set/index.tsx","webpack://[name]/./components-pro/form/Form.tsx","webpack://[name]/./components-pro/form/index.tsx","webpack://[name]/./components/_util/resizeObserver.tsx","webpack://[name]/./components-pro/radio/enum.tsx","webpack://[name]/./components-pro/table/Column.tsx","webpack://[name]/./components-pro/radio/Radio.tsx","webpack://[name]/./components-pro/check-box/CheckBox.tsx","webpack://[name]/./components-pro/check-box/index.tsx","webpack://[name]/./components-pro/radio/index.tsx","webpack://[name]/./components-pro/switch/Switch.tsx","webpack://[name]/./components-pro/text-field/enum.tsx","webpack://[name]/./components-pro/text-field/TextField.tsx","webpack://[name]/./components-pro/_util/measureTextWidth.tsx","webpack://[name]/./components-pro/trigger-field/TriggerField.tsx","webpack://[name]/./components-pro/option/Option.tsx","webpack://[name]/./components-pro/option/OptGroup.tsx","webpack://[name]/./components-pro/option/normalizeOptions.tsx","webpack://[name]/./components-pro/select/Select.tsx","webpack://[name]/./components-pro/select-box/SelectBox.tsx","webpack://[name]/./components-pro/lov/LovView.tsx","webpack://[name]/./components-pro/lov/Lov.tsx","webpack://[name]/./components-pro/_util/keepRunning.tsx","webpack://[name]/./components-pro/number-field/NumberField.tsx","webpack://[name]/./components-pro/currency/Currency.tsx","webpack://[name]/./components-pro/date-picker/enum.tsx","webpack://[name]/./components-pro/date-picker/DaysView.tsx","webpack://[name]/./components-pro/date-picker/TimesView.tsx","webpack://[name]/./components-pro/date-picker/DateTimesView.tsx","webpack://[name]/./components-pro/date-picker/WeeksView.tsx","webpack://[name]/./components-pro/date-picker/MonthsView.tsx","webpack://[name]/./components-pro/date-picker/YearsView.tsx","webpack://[name]/./components-pro/date-picker/DecadeYearsView.tsx","webpack://[name]/./components-pro/date-picker/DatePicker.tsx","webpack://[name]/./components-pro/date-time-picker/DateTimePicker.tsx","webpack://[name]/./components-pro/week-picker/WeekPicker.tsx","webpack://[name]/./components-pro/month-picker/MonthPicker.tsx","webpack://[name]/./components-pro/year-picker/YearPicker.tsx","webpack://[name]/./components-pro/intl-field/IntlList.tsx","webpack://[name]/./components-pro/intl-field/IntlField.tsx","webpack://[name]/./components-pro/url-field/UrlField.tsx","webpack://[name]/./components-pro/email-field/EmailField.tsx","webpack://[name]/./components-pro/color-picker/ColorPicker.tsx","webpack://[name]/./components-pro/table/utils.tsx","webpack://[name]/./components-pro/table/ColumnGroup.tsx","webpack://[name]/./components-pro/table/ColumnGroups.tsx","webpack://[name]/./components-pro/table/TableStore.tsx","webpack://[name]/./components-pro/table/TableContext.tsx","webpack://[name]/./components-pro/table/TableHeaderCell.tsx","webpack://[name]/./components-pro/table/TableHeader.tsx","webpack://[name]/./components-pro/pagination/enum.tsx","webpack://[name]/./components-pro/pagination/Pager.tsx","webpack://[name]/./components-pro/pagination/Pagination.tsx","webpack://[name]/./components-pro/table/TableEditor.tsx","webpack://[name]/./components-pro/table/TableCol.tsx","webpack://[name]/./components-pro/table/TableWrapper.tsx","webpack://[name]/./components-pro/output/Output.tsx","webpack://[name]/./components-pro/table/TableCell.tsx","webpack://[name]/./components-pro/table/ExpandIcon.tsx","webpack://[name]/./components-pro/table/TableRow.tsx","webpack://[name]/./components-pro/table/ExpandedRow.tsx","webpack://[name]/./components-pro/table/TableTBody.tsx","webpack://[name]/./components-pro/table/TableFooterCell.tsx","webpack://[name]/./components-pro/table/TableFooter.tsx","webpack://[name]/./components-pro/table/query-bar/TableButtons.tsx","webpack://[name]/./components-pro/modal/index.tsx","webpack://[name]/./components-pro/table/query-bar/TableToolBar.tsx","webpack://[name]/./components-pro/table/query-bar/FilterSelect.tsx","webpack://[name]/./components-pro/dropdown/enum.tsx","webpack://[name]/./components-pro/dropdown/placements.tsx","webpack://[name]/./components-pro/dropdown/Dropdown.tsx","webpack://[name]/./components-pro/table/query-bar/ColumnFilter.tsx","webpack://[name]/./components-pro/table/query-bar/TableFilterBar.tsx","webpack://[name]/./components-pro/button/index.tsx","webpack://[name]/./components-pro/table/query-bar/TableAdvancedQueryBar.tsx","webpack://[name]/./components-pro/table/query-bar/index.tsx","webpack://[name]/./components-pro/table/TableBody.tsx","webpack://[name]/./components-pro/table/Table.tsx","webpack://[name]/./components-pro/table/index.tsx","webpack://[name]/./components-pro/text-field/index.tsx","webpack://[name]/./components-pro/number-field/index.tsx","webpack://[name]/./components-pro/currency/index.tsx","webpack://[name]/./components-pro/password/Password.tsx","webpack://[name]/./components-pro/password/index.tsx","webpack://[name]/./components-pro/url-field/index.tsx","webpack://[name]/./components-pro/email-field/index.tsx","webpack://[name]/./components-pro/range/Range.tsx","webpack://[name]/./components-pro/text-area/enum.tsx","webpack://[name]/./components-pro/range/index.tsx","webpack://[name]/./components-pro/text-area/TextArea.tsx","webpack://[name]/./components-pro/text-area/index.tsx","webpack://[name]/./components-pro/date-picker/index.tsx","webpack://[name]/./components-pro/date-time-picker/index.tsx","webpack://[name]/./components-pro/time-picker/TimePicker.tsx","webpack://[name]/./components-pro/time-picker/index.tsx","webpack://[name]/./components-pro/week-picker/index.tsx","webpack://[name]/./components-pro/month-picker/index.tsx","webpack://[name]/./components-pro/year-picker/index.tsx","webpack://[name]/./components-pro/color-picker/index.tsx","webpack://[name]/./components-pro/tabs/index.tsx","webpack://[name]/./components-pro/icon-picker/IconItem.tsx","webpack://[name]/./components-pro/icon-picker/IconCategory.tsx","webpack://[name]/./components-pro/icon-picker/IconPicker.tsx","webpack://[name]/./components-pro/icon-picker/index.tsx","webpack://[name]/./components-pro/intl-field/index.tsx","webpack://[name]/./components-pro/lov/index.tsx","webpack://[name]/./components-pro/select/index.tsx","webpack://[name]/./components-pro/select-box/index.tsx","webpack://[name]/./components-pro/transfer/TransferList.tsx","webpack://[name]/./components-pro/transfer/TransferOperation.tsx","webpack://[name]/./components-pro/transfer/Transfer.tsx","webpack://[name]/./components-pro/transfer/index.tsx","webpack://[name]/./components-pro/modal-container/index.tsx","webpack://[name]/./components-pro/upload/UploadList.tsx","webpack://[name]/./components-pro/upload/Upload.tsx","webpack://[name]/./components-pro/upload/index.tsx","webpack://[name]/./components-pro/row/index.tsx","webpack://[name]/./components-pro/col/index.tsx","webpack://[name]/./components-pro/pagination/index.tsx","webpack://[name]/./components-pro/menu/index.tsx","webpack://[name]/./components-pro/notification/index.tsx","webpack://[name]/./components-pro/tree/util.tsx","webpack://[name]/./components-pro/tree/index.tsx","webpack://[name]/./components-pro/code-area/CodeArea.tsx","webpack://[name]/./components-pro/dropdown/index.tsx","webpack://[name]/./components-pro/output/index.tsx","webpack://[name]/./components-pro/switch/index.tsx","webpack://[name]/./components-pro/stores/index.tsx","webpack://[name]/./components-pro/field/index.tsx","webpack://[name]/./components-pro/code-area/index.tsx","webpack://[name]/./components-pro/index.tsx","webpack://[name]/./index-pro-with-locales.js","webpack://[name]/./components-pro sync ^\\.\\/locale-context\\/.+_.+\\.tsx$","webpack://[name]/./components-pro/locale-context/en_GB.tsx","webpack://[name]/./components-pro/locale-context/en_US.tsx","webpack://[name]/./components-pro/locale-context/ja_JP.tsx"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__6__","__WEBPACK_EXTERNAL_MODULE__19__","__WEBPACK_EXTERNAL_MODULE__32__","installedModules","__webpack_require__","m","obj","key","value","Object","defineProperty","enumerable","configurable","writable","__decorate","decorators","target","desc","d","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","self","ReferenceError","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","instance","Constructor","TypeError","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","push","apply","source","forEach","getOwnPropertyDescriptors","defineProperties","_defineProperties","props","descriptor","protoProps","staticProps","prototype","_typeof","assertThisInitialized","call","subClass","superClass","create","constructor","_extends","assign","hasOwnProperty","this","hasOwn","classNames","classes","arg","argType","Array","isArray","inner","join","default","DataSetEvents","DataSetSelection","DataSetStatus","RecordStatus","FieldType","SortOrder","BooleanValue","FieldIgnore","FieldTrim","FieldFormat","globalConfig","observable","map","maxAge","max","code","add","update","LabelLayout","horizontal","TableQueryBarType","normal","defaultFeedback","componentName","$l","categories","jsonDate","date","dateTime","time","year","month","week","getConfig","get","getPrefixCls","suffixCls","customizePrefixCls","getProPrefixCls","mergeProps","configure","config","runInAction","includes","isObject","set","toJS","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","indexOf","propertyIsEnumerable","KeyCode","e","keyCode","altKey","ctrlKey","metaKey","F1","F12","ALT","CAPS_LOCK","CONTEXT_MENU","CTRL","DOWN","END","ESC","HOME","INSERT","LEFT","MAC_FF_META","META","NUMLOCK","NUM_CENTER","PAGE_DOWN","PAGE_UP","PAUSE","PRINT_SCREEN","RIGHT","SHIFT","UP","WIN_KEY","WIN_KEY_RIGHT","ZERO","NINE","NUM_ZERO","NUM_MULTIPLY","A","Z","navigator","userAgent","SPACE","QUESTION_MARK","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","MAC_ENTER","BACKSPACE","TAB","ENTER","DELETE","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","WIN_IME","superPropBase","_get","property","receiver","base","arrayWithoutHoles","iterableToArray","nonIterableSpread","arr","zh_CN","en_GB","en_US","LocaleContext","locale","defaultLocale","supports","defaultSupports","moment","normalizeLanguage","lang","setMomentLocale","component","cmp","tslib_1","action","injectionOptions","localeContext","formatReactTemplate","Size","ColumnLock","ColumnAlign","ScrollPosition","SelectionMode","TableButtonType","TableCommandType","TableMode","TableEditMode","TablePaginationPosition","TableColumnTooltip","arrayMap","baseClone","baseUnset","castPath","copyObject","customOmitClone","flatRest","getAllKeysIn","omit","paths","result","isDeep","path","CLONE_DEEP_FLAG","Icon","iconfontPrefix","type","className","otherProps","classString","displayName","warned","valid","message","warning","baseGetTag","isObjectLike","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","error","done","Promise","then","fn","args","err","undefined","ProgressType","ProgressStatus","ProgressPosition","arrayWithHoles","iterableToArrayLimit","nonIterableRest","LabelAlign","ResponsiveKeys","arrDel","list","clone","slice","index","splice","arrAdd","posToArr","pos","split","getPosition","level","getNodeChildren","children","child","isTreeNode","isCheckDisabled","node","disabled","disableCheckbox","traverseTreeNodes","treeNodes","subTreeData","callback","processNode","parent","childList","data","parentPos","subNodes","Children","subNode","subIndex","subPos","getStrictlyValue","checkedKeys","halfChecked","checked","getFullKeyList","keyList","isParent","childPos","directly","parentPath","childPath","len","getNodesStatistic","statistic","keyNodes","posNodes","nodeList","getDragNodesKeys","eventKey","dragNodesKeys","nodePos","calcDropPosition","event","treeNode","offsetTop","ele","getClientRects","top","left","rect","getBoundingClientRect","width","height","doc","ownerDocument","win","defaultView","docElem","documentElement","pageYOffset","clientTop","pageXOffset","clientLeft","getOffset","selectHandle","offsetHeight","pageY","calcExpandedKeys","needExpandKeys","needExpandPathList","some","calcExpandedKeyList","calcSelectedKeys","selectedKeys","multiple","calcCheckStateConduct","tgtCheckedKeys","tgtHalfCheckedKeys","conduct","sub","conductDown","conductUp","allSubChecked","every","halfCheckedKeys","calcCheckedKeys","keyProps","checkable","checkStrictly","_typeof2","Symbol","iterator","toArrayChildren","ret","isValidElement","findChildInChildrenByKey","find","findShownChildInChildrenByKey","hiddenProp","Error","mergeChildren","prev","next","nextChildrenPending","pendingChildren","concat","transitionName","transitionAppear","animation","appear","transitionEnter","enter","transitionLeave","leave","transitionMap","AnimateChild","stop","animUtil","transition","animationType","finishCallback","findDOMNode","nameIsObj","end","stopper","isCssAnimationSupported","name","activeName","cssAnimate","active","style","cloneElement","Component","propTypes","PropTypes","any","oneOfType","string","defaultKey","Date","now","getChildrenFromProps","Animate","currentlyAnimatingKeys","keysToEnter","keysToLeave","state","childrenRefs","performEnter","childRef","componentWillEnter","handleDoneAdding","bind","performAppear","componentWillAppear","exclusive","onAppear","noop","onEnd","onEnter","nextProps","isValidChildByKey","performLeave","componentWillLeave","handleDoneLeaving","onLeave","currentChildren","c1","c2","same","child2","isSameChildren","setState","nextChildren","newChildren","nextChild","newChild","currentChild","hasPrev","showInNext","hasNext","showInNow","Cmp","componentProps","stateChildren","createElement","ref","passedProps","bool","func","defaultProps","baseIsEqual","other","getKeyFromChildrenIndex","menuEventKey","prefix","getMenuIdFromSubMenuEventKey","loopMenuItem","cb","isMenuItemGroup","loopMenuItemRecursively","construct","isSubMenu","isMenuItem","menuAllProps","getWidth","elem","setStyle","styleProperty","React","ReactNoopUpdateQueue","updater","addEventListenerWrap","eventType","unstable_batchedUpdates","addDOMEventListener","connect","Provider","_Provider3","_interopRequireDefault","_connect3","_create3","__esModule","condition","format","a","b","f","argIndex","replace","framesToPop","global","vendors","suffix","raf","caf","last","id","queue","_now","Math","setTimeout","cp","cancelled","round","handle","cancel","polyfill","requestAnimationFrame","cancelAnimationFrame","re","toString","ClassList","el","nodeType","classList","array","remove","removeMatching","test","toggle","force","has","getAttribute","shift","contains","scrollbarWidth","rootFontSize","measureScrollbar","direction","fontSize","document","getComputedStyle","parseFloat","getRootFontSize","scrollDiv","cssText","body","appendChild","size","offsetWidth","clientWidth","clientHeight","removeChild","freeGlobal","freeSelf","Function","store","uid","USE_SYMBOL","__g","core","version","__e","n","parentNode","LazyRenderBox","hiddenClassName","hidden","count","only","PopupInner","onMouseEnter","onMouseLeave","prefixCls","saveRef","Popup","popupDomNode","align","currentAlignClassName","getClassNameFromAlign","getClassName","onAlign","stretch","getRootDomNode","visible","stretchChecked","targetHeight","targetWidth","$ele","savePopupRef","saveAlignRef","rootNode","getPopupDomNode","setStretchSize","ReactDOM","popupInstance","maskTransitionName","maskAnimation","destroyPopupOnHide","sizeStyle","minHeight","minWidth","popupInnerProps","getZIndexStyle","getTransitionName","getTarget","monitorWindowResize","childrenProps","zIndex","maskElement","mask","maskTransition","getMaskTransitionName","getMaskElement","getPopupElement","ALL_HANDLERS","IS_REACT_16","createPortal","Trigger","popupVisible","fireEvents","delaySetPopupVisible","mouseEnterDelay","mouseLeaveDelay","clearDelayTimer","relatedTarget","_component","isFocusToShow","focusTime","focusDelay","preClickTime","preTouchTime","isBlurToHide","blurDelay","preventDefault","setPopupVisible","isContextMenuToShow","close","preTime","min","abs","nextVisible","isClickToHide","isClickToShow","maskClosable","popupNode","popupPlacement","builtinPlacements","a1","a2","points","placement","getPopupClassNameFromAlign","popupClassName","onPopupAlign","popupAnimation","popupTransitionName","popupStyle","popup","getPopupAlign","mouseProps","isMouseEnterToShow","onPopupMouseEnter","isMouseLeaveToHide","onPopupMouseLeave","getPopupClassFromAlign","savePopup","popupContainer","position","getPopupContainer","getDocument","prevPopupVisible","afterPopupVisibleChange","defaultPopupVisible","h","componentDidUpdate","_","prevState","currentDocument","renderComponent","clickOutsideHandler","addEventListener","onDocumentClick","touchOutsideHandler","contextMenuOutsideHandler1","onContextMenuClose","contextMenuOutsideHandler2","clearOutsideHandler","popupAlign","placementStr","baseAlign","getAlignFromPlacement","onPopupVisibleChange","delayS","delay","delayTimer","clearTimeout","childPros","showAction","hideAction","alignInstance","forceAlign","childCallback","newChildProps","onContextMenu","createTwoChains","onClick","onMouseDown","onTouchStart","onFocus","onBlur","portal","trigger","forceRender","Portal","getContainer","didUpdate","handlePortalUpdate","getComponent","ContainerRender","autoMount","arrayOf","isRequired","number","toNumber","nativeMax","nativeMin","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","flush","g","anObject","IE8_DOM_DEFINE","toPrimitive","dP","Attributes","it","getPrototype","funcProto","objectProto","funcToString","objectCtorString","proto","Ctor","ctx","hide","PROTOTYPE","$export","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","expProto","virtual","Menu","selectInfo","selectable","getState","selectedKey","onSelect","innerMenu","getWrappedInstance","onKeyDown","processSingle","oneChanged","open","openKeys","changed","onOpenChange","onDeselect","defaultSelectedKeys","defaultOpenKeys","activeKey","getActiveKey","updateMiniStore","step","openTransitionName","animationName","openAnimation","mode","lastOpen","getFlatInstanceArray","subMenuKey","extraProps","triggerSubMenuAction","renderCommonMenuItem","parentMenu","SubPopupMenu","setInnerMenu","oneOf","onDestroy","subMenuOpenDelay","subMenuCloseDelay","forceSubMenuRender","focusable","defaultActiveFirst","inlineIndent","getRawTag","objectToString","symToStringTag","toStringTag","propIsEnumerable","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","from","to","val","toObject","s","createDesc","Progress","autoAdjustOverflowEnabled","adjustX","adjustY","autoAdjustOverflowDisabled","targetOffset","getOverflowOptions","autoAdjustOverflow","Tooltip","onVisibleChange","isNoTitle","domNode","placements","getPlacements","transformOrigin","offset","saveTooltip","tooltip","defaultVisible","arrowPointAtCenter","arrowWidth","horizontalArrowShift","verticalArrowShift","placementMap","right","bottom","topLeft","leftTop","topRight","rightTop","bottomRight","rightBottom","bottomLeft","leftBottom","overflow","rcPlacements","element","__ANT_BUTTON","isHoverTrigger","picked","omited","splitObject","spanStyle","display","cursor","buttonStyle","pointerEvents","title","overlay","openClassName","getTooltipContainer","getDisabledCompatibleChildren","childProps","childCls","template","flatMap","text","isString","stringText","placeholder","textArr","Fragment","defaultValue","baseIsNative","getValue","isFunction","isLength","Checkbox","saveCheckbox","rcCheckbox","nextState","nextContext","checkboxGroup","context","shallowEqual","focus","blur","indeterminate","restProps","checkboxProps","onChange","toggleOption","label","checkboxClass","contextTypes","wrapEvent","eventName","originalEvent","MouseDown","show","currentTarget","x","clientX","y","clientY","rippleChild","newProps","onMouseUp","onDragEnd","PureComponent","RippleChild","handleMouseDown","maxWidth","maxHeight","sqrt","currentCircleStyle","currentStyle","ripple","Ripple","baseDelay","defer","baseRest","defaultMessage","console","arrayLikeKeys","baseKeys","isArrayLike","assignValue","baseAssignValue","customizer","isNew","newValue","isSymbol","exec","IObject","defined","isBuffer","l","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","merge","deepMerge","extend","trim","str","enhancer","WrappedComponent","pathStyle","transitionDuration","prevTimeStamp","percent","strokeColor","strokeLinecap","strokeWidth","trailColor","trailWidth","Circle","gapDegree","radius","beginPositionX","beginPositionY","endPositionX","endPositionY","gapPosition","pathString","PI","trailPathStyle","strokeDasharray","strokeDashoffset","strokePathStyle","getPathStyles","viewBox","stroke","fillOpacity","Loading","cx","SIZE","cy","progressInfo","progress","status","successPercent","showInfo","progressStatus","parseInt","success","textFormatter","percentNumber","circleType","circle","dashboard","exception","line","percentStyle","small","successPercentStyle","successSegment","circleSize","circleStyle","circleWidth","gapPos","gapDeg","loading","large","off","useCapture","removeEventListener","attachEvent","detachEvent","EventManager","events","toLowerCase","findIndex","on","capture","rest","all","stopPropagation","stopEvent","ReactComponentWithPureRenderMixin","shouldComponentUpdate","shallowCompare","createChainedFunction","animate","requestAnimationFrameId","cssAnimation","start","opacity","START_EVENT_NAME_MAP","transitionstart","WebkitTransition","MozTransition","OTransition","msTransition","animationstart","WebkitAnimation","MozAnimation","OAnimation","msAnimation","END_EVENT_NAME_MAP","transitionend","animationend","startEvents","endEvents","process","EVENT_NAME_MAP","baseEventName","baseEvents","styleName","eventListener","addStartEventListener","startEvent","removeStartEventListener","addEndEventListener","endEvent","removeEndEventListener","Event","capitalPrefixes","prefixes","getStyleProperty","getPropertyValue","fixBrowserByTimeout","transitionDelay","animationDelay","animationDuration","rcEndAnimTimeout","rcEndListener","clearBrowserBugTimeout","endCallback","activeClassName","nodeClasses","rcAnimTimeout","setTransition","p","v","isKey","stringToPath","aFunction","that","domPrefixes","elm","Spin","spinning","notCssAnimationSupported","debounceTimeout","delayTimeout","currentSpinning","isNaN","Number","indicator","dotClassName","getIndicatorWidth","tip","wrapperClassName","spinClassName","divProps","spinElement","renderIndicator","animateClassName","containerClassName","language","toArray","rcTree","shape","showIcon","icon","draggable","loadData","filterTreeNode","renderTreeNode","isKeyChecked","onNodeExpand","onNodeSelect","onNodeMouseEnter","onNodeMouseLeave","onNodeContextMenu","onNodeDragStart","onNodeDragEnter","onNodeDragOver","onNodeDragLeave","onNodeDragEnd","onNodeDrop","onBatchNodeCheck","onCheckConductFinished","Tree","expandedKeys","onDragStart","dragNode","onDragEnter","dropPosition","dragOverNodeKey","delayedDragEnterLogic","newExpandedKeys","onDragOver","onDragLeave","onDrop","dropNodeKey","posArr","dropResult","dropToGap","selected","targetSelected","selectedNodes","setUncontrolledState","startNode","checkedBatch","onCheck","checkedKeySet","halfCheckedKeySet","selectedObj","newCheckedKeys","newHalfCheckedKeys","eventObj","checkedNodes","checkedNodesPositions","onExpand","expanded","targetExpanded","onRightClick","prevProps","needSync","newState","myPrevProps","checkSync","autoExpandParent","dragOver","dragOverGapTop","dragOverGapBottom","defaultExpandAll","defaultExpandParent","defaultExpandedKeys","defaultCheckedKeys","getSyncProps","switcherIcon","showLine","domProps","tabIndex","role","unselectable","canUseDOM","MENUITEM_OVERFLOWED_CLASSNAME","DOMWrap","lastVisibleIndex","ul","keyPrefix","overflowedItems","renderPlaceholder","overflowedIndicator","theme","propStyle","visibility","k","SubMenu","ulChildrenNodes","lastOverflowedIndicatorPlaceholder","menuItemNodes","getMenuItemNodes","menuItemSizes","overflowedIndicatorWidth","originalTotalWidth","reduce","acc","cur","handleResize","currentSumWidth","liWidth","setChildrenWidthAndResize","menuUl","resizeObserver","ResizeObserver","entries","observe","MutationObserver","mutationObserver","disconnect","attributes","subTree","childNode","item","overflowed","getOverflowedSubMenuItem","Tag","tag","renderChildren","updateActiveKey","menuId","getEventKey","originalActiveKey","found","handled","activeItem","hover","instanceArray","reverse","activeIndex","ci","allDisabled","isActive","renderMenuItem","rootPrefixCls","manualRef","onItemHover","getOpenTransitionName","itemIcon","expandIcon","haveRendered","haveOpened","animProps","connected","DataView","Map","Set","WeakMap","toSource","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","isArrayIter","toLength","getIterFn","BREAK","RETURN","iterable","ITERATOR","iterFn","TYPE","_t","whatsNew","suggestion","edit","series","icons","favorite","loadSuccess","_result","loadFailed","submitSuccess","submitFailed","ListCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","__data__","clear","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","entry","eq","nativeCreate","getNative","isKeyable","baseIsArguments","isArguments","stubFalse","freeExports","freeModule","Buffer","reIsUint","iteratee","baseKeysIn","bitmap","$keys","enumBugKeys","px","random","def","TAG","stat","setMeta","setDesc","w","isExtensible","FREEZE","preventExtensions","meta","KEY","NEED","fastKey","getWeak","onFreeze","updateDefaultActiveFirst","guid","popupPlacementMap","vertical","menu","menuInstance","isOpen","onTitleClick","triggerOpenChange","domEvent","subMenuInstance","onTitleMouseEnter","onTitleMouseLeave","addKeyPath","keyPath","openChange","mouseenterTimeout","subMenuTitle","popupMenu","isRootMenu","minWidthTimeout","adjustWidth","baseProps","onSubMenuClick","_menuId","saveMenuInstance","isInlineMode","getOpenClassName","getActiveClassName","getDisabledClassName","getSelectedClassName","isChildrenSelected","mouseEvents","titleClickEvents","titleMouseEvents","paddingLeft","ariaOwns","saveSubMenuTitle","aria-expanded","aria-haspopup","triggerNode","popupOffset","TreeNode","renderSwitcherIcon","isLeaf","switcherCls","switcherOriginCls","baseGet","matchMediaPolifill","mediaQuery","media","matches","addListener","removeListener","Notice","clearCloseTimer","onClose","duration","closeTimer","startCloseTimer","componentClass","closable","closeIcon","seed","Notification","notices","notice","previousState","noticeNodes","content","classnames","properties","div","called","render","notification","noticeProps","removeNotice","destroy","unmountComponentAtNode","Breakpoint","enquire","matchMedia","responsiveMap","xxl","xl","lg","md","sm","xs","responsiveArray","Responsive","breakpoints","items","isDisabled","register","getValues","unregister","breakpoint","match","unmatch","processValue","vendorPrefix","jsCssMap","Webkit","Moz","ms","getVendorPrefix","getTransformName","setTransitionProperty","transitionProperty","setTransform","transform","getComputedStyleX","matrix2d","matrix3d","forceRelayout","originalStyle","css","getScroll","method","getScrollLeft","getScrollTop","box","getClientPosition","parentWindow","isWindow","_RE_NUM_NO_PX","RegExp","RE_POS","CURRENT_STYLE","RUNTIME_STYLE","getOffsetDirection","dir","option","useCssRight","useCssBottom","oppositeOffsetDirection","setLeftTop","presetH","presetV","horizontalProperty","verticalProperty","oppositeHorizontalProperty","oppositeVerticalProperty","originalTransition","originalOffset","getTransitionProperty","old","preset","_key","_dir","_off","setTransform$1","originalXY","matrix","getTransformXY","resultXY","xy","match2d","setTransformXY","each","isBorderBoxFn","cs","computedStyle","rsLeft","pixelLeft","BOX_MODELS","CONTENT_INDEX","PADDING_INDEX","BORDER_INDEX","getPBMWidth","which","prop","j","cssProp","domUtils","getParent","host","getWH","ex","extra","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","isBorderBox","cssBoxValue","borderBoxValueOrIsBorderBox","refWin","documentElementProp","compatMode","cssShow","getWHIgnoreDisplay","_len","_key2","swap","mix","first","charAt","toUpperCase","includeMargin","utils","getWindow","ignoreShake","oriOffset","oLeft","toFixed","oTop","tLeft","tTop","useCssTransform","setOffset","getWindowScrollLeft","getWindowScrollTop","getOffsetParent","positionStyle","nodeName","getParent$1","getVisibleRectForElement","visibleRect","Infinity","originalPosition","scrollX","scrollY","documentWidth","scrollWidth","documentHeight","scrollHeight","bodyStyle","overflowX","innerWidth","overflowY","innerHeight","isAncestorFixed","maxVisibleWidth","maxVisibleHeight","getRegion","outerWidth","outerHeight","getAlignOffset","region","getElFuturePos","elRegion","refNodeRegion","p1","p2","diff","isFailX","elFuturePos","isFailY","flip","reg","flipOffset","convertOffset","offsetLen","substring","normalizeOffset","doAlign","tgtRegion","isTgtRegionVisible","newOverflowCfg","fail","newElRegion","newPoints","newOffset","newTargetOffset","isCompleteFailX","_newPoints","t","_newOffset","_newTargetOffset","isCompleteFailY","isStillFailX","isStillFailY","resizeWidth","resizeHeight","adjustForViewport","alignElement","refNode","targetRegion","isOutOfVisibleRect","__getOffsetParent","__getVisibleRectForElement","Align","domAlign","startMonitorWindowResize","preHidden","preAlign","preTarget","reAlign","lastTarget","stopMonitorWindowResize","monitorBufferTime","resizeHandler","bufferMonitor","TaskRunner","toKey","baseMatches","baseMatchesProperty","identity","Empty","dPs","IE_PROTO","createDict","iframeDocument","iframe","src","contentWindow","write","lt","Properties","Iterators","TO_STRING_TAG","DOMIterables","NAME","Collection","MapShim","getIndex","class_1","__entries__","delete","_i","_a","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","transitionKeys","mutationObserverSupported","ResizeObserverController","addObserver","observer","observers_","connected_","connect_","removeObserver","observers","disconnect_","refresh","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","onTransitionEnd_","mutationsObserver_","characterData","subtree","mutationEventsAdded_","_b","propertyName","getInstance","instance_","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","throttle","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","contentRect_","broadcastWidth","broadcastHeight","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","Element","observations","observations_","controller_","unobserve","clearActive","_this","observation","activeObservations_","callbackCtx_","callback_","controller","callbackCtx","generateKey","isNil","webkitTransform","mozTransform","isTransformSupported","isVertical","tabBarPosition","getDataAttr","substr","TabPane","createReactClass","destroyInactiveTabPane","getDefaultProps","_isActived","cls","isRender","aria-hidden","getDefaultActiveKey","Tabs","tabBar","onTabClick","setActiveKey","eventKeyCode","nextKey","getNextActiveKey","previousKey","unshift","defaultActiveKey","activeKeyIsValid","renderTabContent","renderTabBar","contents","onNavKeyDown","panels","TabContent","animated","animatedWithMargin","getTabPanes","getActiveIndex","animatedStyle","marginDirection","getMarginStyle","WebkitTransform","MozTransform","getTransformPropValue","translate","getTransformByIndex","init","wrapNode","nav","containerOffset","inkBarNode","inkBar","activeTab","inkBarNodeStyle","tabNode","tabOffset","transformSupported","TabsType","TabsPosition","inkBarAnimated","componentDidMount","componentWillUnmount","timeout","getInkBarNode","scrollAnimated","onPrevClick","onNextClick","getInitialState","debouncedResize","debounce","setNextPrev","scrollToActiveTab","resizeEvent","nextPrev","isNextPrevShown","navNode","navNodeWH","getScrollWH","containerWH","getOffsetWH","container","navWrapNodeWH","navWrap","minOffset","realOffset","setNext","setPrev","getOffsetLT","checkNextPrev","navOffset","navStyle","prevTransitionEnd","needToSroll","lastNextPrevShown","activeTabWH","wrapOffset","activeTabOffset","navWrapNode","getScrollBarNode","showNextPrev","prevButton","onTransitionEnd","nextButton","navClassName","navClasses","getTabs","tabBarGutter","rst","tab","aria-disabled","aria-selected","marginRight","getRootNode","extraContent","topOrBottom","tabBarExtraContentStyle","float","extraContentStyle","ScrollableInkTabBar","mixins","TabBarMixin","InkTabBarMixin","ScrollableTabBarMixin","tabs","scrollbarNode","createNewTab","targetKey","onEdit","removeTab","handleChange","isFlexSupported","tabPosition","tabBarStyle","hideAdd","tabBarExtraContent","tabPaneAnimated","tabPane","isCard","card","childrenWithClose","subMenu","saveSubMenu","menuTheme","MenuItem","menuItem","saveMenuItem","inlineCollapsed","overlayClassName","inlineOpenKeys","handleClick","handleOpenChange","setOpenKeys","getInlineCollapsed","switchModeFromInline","siderCollapsed","querySelectorAll","menuMode","menuOpenAnimation","getRealMenuMode","getMenuOpenAnimation","menuClassName","menuProps","collapsedWidth","Divider","Item","ItemGroup","childContextTypes","Lang","buildURLWithAxiosConfig","builtURL","buildURL","urlPath","queryString","paramsPair","sort","buildSortedURL","url","params","paramsSerializer","JSON","stringify","isCacheLike","cache","del","baseIsEqualDeep","bitmask","stack","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","values","arrayFilter","stubArray","nativeGetSymbols","getSymbols","symbol","webpackPolyfill","deprecate","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","freeProcess","types","binding","objValue","overArg","Uint8Array","arrayBuffer","byteLength","reIsDeepProp","reIsPlainProp","$at","iterated","point","ceil","floor","returnThis","LIBRARY","redefine","$iterCreate","setToStringTag","BUGGY","VALUES","Base","DEFAULT","IS_SET","FORCED","getMethod","kind","methods","IteratorPrototype","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","valueOf","cof","toInteger","shared","SHARED","copyright","wksExt","$Symbol","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","nextTick","browser","env","argv","versions","once","removeAllListeners","emit","prependListener","prependOnceListener","listeners","cwd","chdir","umask","isSelected","attrs","attribute","mouseEvent","notFound","checkbox","MenuItemGroup","titleClassName","listClassName","renderInnerMenuItem","baseToString","_iterator2","_symbol2","onlyTreeNodeWarned","nodeContextTypes","rcTreeNode","onUpCheckConduct","nodeChecked","nodeHalfChecked","checkedCount","enabledChildrenCount","nextChecked","nextHalfChecked","isSelectable","targetChecked","onDownCheckConduct","dragNodeHighlight","dataTransfer","setData","callbackPromise","loadStatus","hasChildren","treeDisabled","switcherIconFromProps","switcherIconFromCtx","$custom","getNodeState","$icon","wrapClass","renderIcon","$title","setSelectHandle","aria-grabbed","onSelectorClick","wrapper","renderFirst","$children","syncLoadData","originList","targetList","treeSelectable","renderSwitcher","renderCheckbox","renderSelector","messageInstance","defaultDuration","defaultTop","defaultBottom","defaultPlacement","getCustomizePrefixCls","getMessageInstance","newInstance","getPlacementStyle","defaultTransitionName","getPlacementTransitionName","iconType","warn","callbacks","interval","setInterval","clearInterval","ready","unstable_renderSubtreeIntoContainer","autoDestroy","removeContainer","createContainer","_container","forceUpdate","baseMerge","createAssigner","srcIndex","nativeEvent","input","defaultChecked","PureRenderMixin","readOnly","autoFocus","others","globalProps","saveInput","arrowContent","overlayStyle","afterVisibleChange","destroyTooltipOnHide","saveTrigger","baseGetAllKeys","getSymbolsIn","keysIn","safe","forbiddenField","fails","redefineAll","forOf","anInstance","DESCRIPTORS","common","IS_MAP","IS_WEAK","ADDER","_c","IS_ADDER","getConstructor","setStrong","COLLECTION","of","mapping","mapFn","nextItem","Table","show_cached_seletion","hide_cached_seletion","edit_button","create_button","save_button","cancel_button","delete_button","remove_button","reset_button","query_button","expand_button","collapse_button","export_button","advanced_search","dirty_info","restore","empty_data","choose_export_columns","column_name","filter_bar_placeholder","advanced_query","advanced_query_conditions","Pagination","records_per_page","Upload","file_selection","click_to_upload","upload_success","upload_failure","no_file","upload_path_unset","not_acceptable_prompt","file_list_max_length","Modal","ok","DataSet","unsaved_data_confirm","invalid_query_dataset","delete_selected_row_confirm","delete_all_row_confirm","query_failure","submit_success","submit_failure","cannot_add_record_when_head_no_current","DatePicker","value_missing_no_label","value_missing","type_mismatch","today","this_week","EmailField","IntlField","modal_title","NumberField","Radio","SelectBox","Select","no_matching_results","select_all","unselect_all","Lov","choose","Transfer","UrlField","ColorPicker","Validator","bad_input","pattern_mismatch","range_overflow","range_underflow","step_mismatch","step_mismatch_between","too_long","too_short","unique","unknown","_setPrototypeOf","SetCache","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","othIndex","arrayPush","keysFunc","symbolsFunc","baseTimes","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","allocUnsafe","copy","cloneArrayBuffer","typedArray","byteOffset","baseCreate","isPrototype","isFlattenable","baseFlatten","depth","predicate","isStrict","otherArgs","baseSetToString","setToString","shortOut","srcValue","baseFor","createBaseFor","is","toIObject","arrayIndexOf","names","hiddenKeys","getEntry","_f","$iterDefine","setSpecies","validate","_l","callbackfn","_k","ARG","tryGet","callee","asc","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","res","classof","storeShape","_propTypes","_propTypes2","subscribe","collection","REACT_STATICS","getDerivedStateFromProps","KNOWN_STATICS","caller","arity","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","defaultGetContainer","notificationInstance","getNotificationInstance","cacheKey","typeToIcon","api","outerPrefixCls","iconNode","autoMarginTag","description","btn","wrapCallback","ne","_EventObject2","_ret","_EventObject","nargs","setCacheAdd","setCacheHas","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","argsTag","funcTag","genTag","objectTag","cloneableTags","isFlat","isFull","isFunc","subValue","hasFunc","pIE","gOPD","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","MediaQueryDispatch","overRest","reHasUnicode","encode","encodeURIComponent","serializedParams","parts","toISOString","hashmarkIndex","baseIteratee","negate","pickBy","Node","Yallist","tail","head","removeNode","thisp","walker","deleteCount","nodes","inserted","insert","er","naiveLength","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LIST","CACHE","UPDATE_AGE_ON_GET","isStale","hit","doUse","unshiftNode","forEachStep","Entry","Cache","lc","stale","dispose","noDisposeOnSet","updateAgeOnGet","reset","expiresAt","_value","mL","allowStale","mA","lC","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","location","propFullName","secret","getShim","ReactPropTypes","elementType","instanceOf","objectOf","exact","checkPropTypes","equalArrays","equalByTag","equalObjects","arrayTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","assocIndexOf","pop","pairs","LARGE_ARRAY_SIZE","isMasked","reIsHostCtor","reIsNative","nativeObjectToString","isOwn","unmasked","coreJsData","maskSrcKey","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","mapToArray","setToArray","symbolProto","symbolValueOf","convert","objProps","objLength","skipCtor","objCtor","othCtor","resIndex","typedArrayTags","nativeKeys","nativeKeysIn","isProto","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","dataView","reFlags","regexp","lastIndex","objectCreate","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","memoizeCapped","rePropName","reEscapeChar","charCodeAt","quote","subString","memoize","FUNC_ERROR_TEXT","resolver","memoized","INFINITY","symbolToString","baseSlice","isPlainObject","flatten","spreadableSymbol","isConcatSpreadable","constant","nativeNow","lastCalled","stamp","remaining","_EventBaseObject2","_objectAssign2","TRUE","FALSE","commonProps","isNullOrUndefined","eventNormalizers","fix","charCode","deltaX","deltaY","delta","wheelDelta","axis","wheelDeltaY","wheelDeltaX","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","eventDoc","button","pageX","scrollLeft","scrollTop","fromElement","toElement","retTrue","retFalse","DomEventObject","isNative","cancelBubble","isDefaultPrevented","defaultPrevented","getPreventDefault","returnValue","fixFns","normalizer","srcElement","fixFn","EventBaseObjectProto","returnFalse","returnTrue","EventBaseObject","isEventObject","isPropagationStopped","isImmediatePropagationStopped","stopImmediatePropagation","halt","immediate","arr2","iter","baseMap","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","isStrictComparable","hasIn","baseHasIn","hasPath","baseProperty","basePropertyDeep","baseEach","baseForOwn","createBaseEach","fromRight","eachFunc","sourceKeys","TO_STRING","getKeys","toAbsoluteIndex","IS_INCLUDES","fromIndex","ObjectProto","addToUnscopables","Arguments","wrap","AllSymbols","_create","$defineProperties","enumKeys","$defineProperty","$propertyIsEnumerable","isEnum","OPSymbols","HIDDEN","$getOwnPropertyDescriptor","$getOwnPropertyNames","gOPN","$getOwnPropertySymbols","IS_OP","$fails","wks","wksDefine","gOPNExt","$GOPD","$GOPS","$DP","$JSON","_stringify","TO_PRIMITIVE","SymbolRegistry","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","gOPS","windowNames","getWindowNames","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","uptime","getTime","strong","ArrayProto","getIteratorMethod","SPECIES","speciesConstructor","original","toJSON","_assign","emptyObject","_invariant","ReactComponent","injectedMixins","ReactClassInterface","statics","getChildContext","componentWillMount","componentWillReceiveProps","componentWillUpdate","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","updateComponent","ReactClassStaticInterface","RESERVED_SPEC_KEYS","mixSpecIntoComponent","createMergedResultFunction","specPolicy","mixStaticSpecIntoComponent","autobind","spec","isAlreadyDefined","autoBindPairs","__reactAutoBindPairs","ReactClassMixin","isReactClassMethod","mergeIntoWithNoDuplicateKeys","one","two","ReactClassComponent","IsMountedPreMixin","__isMounted","IsMountedPostMixin","replaceState","enqueueReplaceState","isMounted","autoBindKey","bindAutoBindMethods","refs","initialState","methodName","_createClass","_react","_PropTypes","_inherits","miniStore","_classCallCheck","_possibleConstructorReturn","mapStateToProps","shouldSubscribe","finnalMapStateToProps","defaultMapStateToProps","Connect","subscribed","trySubscribe","tryUnsubscribe","unsubscribe","wrappedInstance","_this2","isStateless","_react2","_shallowequal2","getDisplayName","_reactLifecyclesCompat","_hoistNonReactStatics2","objA","objB","compare","compareContext","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","partial","listener","_arr","_n","_d","_e","_s","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","addedNodes","removedNodes","previousSibling","nextSibling","attributeName","attributeNamespace","oldValue","nodeValue","childNodes","q","z","u","namespaceURI","mo_id","_period","attributeFilter","attributeOldValue","characterDataOldValue","takeRecords","MediaQuery","Util","queries","browserIsIncapable","shouldDegrade","isUnconditional","handler","addHandler","query","removeHandler","QueryHandler","handlers","mql","assess","constuctor","qh","equals","deferSetup","setup","initialised","nested","$assign","aLen","assignMergeValue","baseMergeDeep","safeGet","isArrayLikeObject","toPlainObject","mergeFunc","isCommon","isTyped","isIterateeCall","assigner","sources","guard","asciiToArray","hasUnicode","unicodeToArray","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","_construct","Parent","Class","sham","Proxy","isNativeReflectConstruct","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","defaults","XMLHttpRequest","transformRequest","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","settle","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","username","password","Authorization","btoa","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","abort","send","enhanceError","config1","config2","Cancel","decode","decodeURIComponent","part","parser","upperFirst","findLast","createFind","isNativeFunction","_wrapNativeSuper","_cache","Wrapper","throttleAdapterEnhancer","threshold","cachedRecord","timestamp","responsePromise","LOGGER_LEVEL","recordCacheWithRequest","cacheAdapterEnhancer","enabledByDefault","cacheFlag","defaultCache","reaction","lookupCache","lengthCalculator","getDefaultCache","useCache","stringOrNumber","objectOrNumber","Col","span","order","pull","sizeClassObj","sizeProps","Row","renderRow","gutter","justify","rowStyle","marginLeft","cols","col","paddingRight","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","spread","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","use","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","reason","fns","normalizedName","isAxiosError","fileName","lineNumber","columnNumber","ignoreDuplicateOf","parsed","originURL","msie","urlParsingNode","resolveURL","href","setAttribute","protocol","search","hash","hostname","port","pathname","requestURL","expires","domain","secure","cookie","toGMTString","relativeURL","executor","resolvePromise","token","createCaseFirst","castSlice","stringToArray","strSymbols","chr","findIndexFunc","baseFindIndex","toFinite","remainder","basePickBy","baseSet","InternalMap","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","WEAK_MAP","uncaughtFrozenStore","ufstore","$WeakMap","UncaughtFrozenStore","findUncaughtFrozen","arrayFind","createArrayMethod","$has","arrayFindIndex","extendStatics","__extends","__","cm","SERVER_RENDERED","Helper","tx","ty","Shared","delegateCursor","scroll","editor","getDoc","setCursor","delegateScroll","coordinates","scrollTo","delegateSelection","ranges","setSelections","selection","autoScroll","getOption","applyNext","preserved","autoCursor","applyUserDefined","wire","onCopy","onCursor","getCursor","onCursorActivity","onCut","onDblClick","onGutterClick","onKeyPress","onKeyUp","onPaste","onRenderLine","onScroll","getScrollInfo","onSelection","onUpdate","onViewportChange","_super","Controlled","hydrate","userDefinedOptions","setOption","mirror","hydrated","mounted","deferred","resolveChange","initChange","emulating","lastLine","lastChar","getLine","replaceRange","ch","setValue","clearHistory","origin","undo","redo","mirrorChange","setHistory","getHistory","editorWillMount","defineMode","phantomChange","onBeforeChange","applied","editorDidMount","initCb","appliedNext","appliedUserDefined","editorWillUnmount","editorDidConfigure","UnControlled","detached","detach","onBeforeChangeCb","continueChange","editorDidAttach","editorDidDetach","platform","gecko","ie_upto10","ie_11up","edge","ie","ie_version","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","android","mobile","mac","chromeOS","windows","presto_version","flipCtrlCmd","captureRightClick","classTest","range","rmClass","current","after","removeChildren","firstChild","removeChildrenAndAdd","elt","createTextNode","eltP","activeElt","activeElement","shadowRoot","addClass","joinClasses","as","createRange","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","copyObj","overwrite","countColumn","tabSize","startIndex","startValue","nextTab","selectionStart","selectionEnd","Delayed","scrollerGap","Pass","sel_dontScroll","sel_mouse","sel_move","findColumn","goal","skipped","spaceStrs","spaceStr","lst","insertSorted","score","priority","nothing","createObj","inst","nonASCIISingleCaseWordChar","isWordCharBasic","isWordChar","helper","isEmpty","extendingChars","isExtendingChar","skipExtendingChars","findFirst","pred","midF","mid","Display","place","scrollbarFiller","gutterFiller","lineDiv","selectionDiv","cursorDiv","measure","lineMeasure","lineSpace","lines","mover","sizer","sizerWidth","heightForcer","gutters","lineGutter","scroller","viewFrom","viewTo","reportedViewFrom","reportedViewTo","view","renderedView","externalMeasured","viewOffset","lastWrapHeight","lastWrapWidth","updateLineNumbers","nativeBarWidth","barHeight","barWidth","scrollbarsClipped","lineNumWidth","lineNumInnerWidth","lineNumChars","alignWidgets","cachedCharWidth","cachedTextHeight","cachedPaddingH","maxLine","maxLineLength","maxLineChanged","wheelDX","wheelDY","wheelStartX","wheelStartY","selForContextMenu","activeTouch","chunk","sz","chunkSize","getBetween","getLines","updateLineHeight","lineNo","no","lineAtHeight","outer","i$1","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","sticky","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","linelen","clipToLen","clipPosArray","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","getMarkedSpanFor","spans","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","span$1","found$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","findMaxLine","bidiOther","getBidiPartAt","bidiOrdering","lowTypes","arabicTypes","charType","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","outerType","type$1","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","j$2","nstart","getOrder","noHandlers","emitter","map$$1","_handlers","getHandlers","signal","signalDOMEvent","override","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","e_preventDefault","e_stopPropagation","e_stop","e_target","e_button","zwspSupported","badBidiRects","dragAndDrop","zeroWidthElement","hasBadBidiRects","txt","r0","r1","splitLinesAuto","nl","rt","hasSelection","getSelection","te","range$$1","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","copyState","nstate","innerMode","startState","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","eol","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","hideFirstChars","lookAhead","oracle","baseToken","SavedContext","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlays","i_end","opaque","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","nextLine","startAt","stream","callBlankLine","readToken","blankLine","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","addToken","buildToken","buildTokenBadBidi","allowFrontierUpdate","insertLineContent","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","startStyle","endStyle","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","buildViewArray","nextPos","operationGroup","fireCallbacksForOps","group","delayedCallbacks","ops","op","cursorActivityCalled","orphanDelayedCallbacks","signalLater","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","getLineContent","ext","built","background","insertBefore","updateLineBackground","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","gutterLeft","gutterWidth","alignable","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","widgetHeight","parentStyle","eventInWidget","paddingTop","paddingVert","paddingH","scrollGap","displayWidth","displayHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","updateExternalMeasurement","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","ensureLineHeights","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","pageScrollX","pageScrollY","marginTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","invert","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","targetTop","boxIsAfter","widgetHeight$$1","ltr","_lineNo","closestDist","endX","dist","baseX","chAround","boxAround","atLeft","atStart","textHeight","anchor","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","colDiff","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursorHeight","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openLeft","openRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorBlinkRate","ensureFocus","delayBlurEvent","delayingBlurEvent","receivedFocus","updateHeightsInViewport","prevBottom","updateWidgetHeight","chWidth","visibleLines","viewport","ensure","ensureFrom","ensureTo","alignHorizontally","comp","gutterW","maybeUpdateLineNumberWidth","innerW","updateGutterSpace","scrollIntoView","scrollPos","calculateScrollPos","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","scrollToPos","margin","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollbars","isScroller","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","NativeScrollbars","vert","horiz","checkedZeroWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","bar","maybeDisable","elt$$1","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","borderBottom","coverGutterNextToScrollbar","scrollbarModel","initScrollbars","scrollbarStyle","nextOpId","startOperation","viewChanged","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","ownsGroup","pushOperation","endOperation","endCb","finishOperation","endOperation_R1","updatedDisplay","mustUpdate","updateDisplayIfNeeded","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","marginBottom","borderRightWidth","maybeClipScrollbars","DisplayUpdate","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","limit","endCoords","startTop","startLeft","scrollPosIntoView","doScroll","scrollNode","maybeScrollWindow","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","editorIsHidden","wrapperHeight","oldDisplayWidth","viewportMargin","different","adjustView","toUpdate","selSnapshot","hasFocus","anchorNode","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","rm","currentWheelTarget","updateNumber","patchDisplay","removeAllRanges","addRange","restoreSelection","updateGutters","specs","gElt","setGuttersForLineNumbers","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","dy","wheelEventPixels","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","attachDoc","setDirectionClass","History","startGen","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","newSel","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","makeChange","ignoreReadOnly","suppressEdits","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","splitLines","rebaseHistSelSingle","rebaseHistArray","copied","changeLine","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","leaf","maybeSpill","me","spilled","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","cloneNode","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","withOp","visual","dHeight","findSharedMarkers","findMarks","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","lineSeparator","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","extendSelectionsBy","addSelection","getSelections","replaceSelection","dup","replaceSelections","hint","oldPrev","newPrev","computeReplacedSel","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","link","splitIds","iterLinkedDocs","getEditor","setDirection","directionChanged","eachLine","lastDrop","clearDragCursor","files","isReadOnly","FileReader","File","loadFile","file","allowDropFileTypes","reader","onload","readAsText","draggingText","text$1","getData","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","registerGlobalHandlers","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","127","145","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","addModifierNames","noShift","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","moveInStorageOrder","prep","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","leftPos","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","up","showCrossHair","handleCharBinding","lastClick","lastDoubleClick","PastClick","supportsTouch","clickInGutter","repeat","clickRepeat","selectingText","handleMappedButton","contained","behavior","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","move","buttons","curCount","leftButtonSelect","leftButtonDown","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","contextMenuInGutter","themeChanged","Init","optionHandlers","guttersChanged","dragDropChanged","wasOn","funcs","dragFunctions","over","drop","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","frag","effectAllowed","setDragImage","img","_top","inp","getField","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","findPosH","origDir","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","searchInVisualLine","getRes","nextCh","moveVisually","findNextLine","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","textContent","dist$1","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromNode","toNode","toIndex","newText","closing","extraLinebreak","addText","walk","cmText","markerID","isBlock","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","deflt","notOnInit","defineOption","newBreaks","getInputField","attach","integer","defineOptions","helpers","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","interpret","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","addEditorMethods","dontDelegate","dependencies","defineMIME","mime","defineExtension","defineDocExtension","fromTextArea","tabindex","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","cmpPos","addLegacyProps","jsonMimeType","Accept","Validity","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","uniqueError","computed","ValidationResult","MAX_SAFE_INTEGER","getPrecision","valueString","getPrecisionFactor","stepPrecision","currentValuePrecision","getMaxPrecision","precisionFix","precisionFactor","getBeforeStepValue","minFactor","stepFactor","getNearStepValues","valueFactor","minFactorBase","maxFactor","beforeStepFactor","afterStepFactor","toRangeValue","getDateFormatByFieldType","formatter","getDateFormatByField","defaultFormat","isMoment","isValid","emailReg","urlReg","colorRgbaReg","colorHexReg","email","color","customValidator","validationMessage","ruleName","mobxGet","isObservableObject","mobxSet","restKey","fields","mobxRemove","supportsLocales","toLocaleStringSupportsLocales","toLocaleString","getNumberFormatOptions","currency","minimumFractionDigits","maximumFractionDigits","toLocaleStringPolyfill","fraction","formatString","uppercase","lowercase","capitalize","transformString","fieldTrim","both","trimLeft","trimRight","trimString","formatNumber","formatCurrency","getOrderFields","processToJSON","processOne","checkRange","trueValue","falseValue","intl","sortTree","orderField","MIN_SAFE_INTEGER","record1","record2","localeCompare","checkParentByInsert","doExport","findBindFields","myField","excludeSelf","startsWith","numberSorter","stringSorter","generateJSONData","isSelect","noCascade","json","toJSONData","__dirty","prepareSubmitData","records","created","updated","destroyed","sync","storeWith","defaultAxiosConfigAdapter","generateConfig","dataSet","axiosConfigAdapter","newConfig","globalAdapter","transport","prepareForSubmit","configs","generateResponseData","dataKey","ObjectChainValue","getRecordValue","fieldName","checkField","tlsBind","tlsKey","processIntlField","fieldProps","languages","dynamicProps","newDynamicProps","findBindFieldBy","myName","processFieldValue","showValueIfNotFound","getText","getLimit","defaultValidationMessages","otherValue","invalid","results","validationRules","endsWith","generatePattern","nearStepValues","0","1","maxLength","minLength","validateType","isEmptyArray","required","getReactNodeText","textDiv","LovFieldType","ViewMode","control","innerValidationResults","clearErrors","uniqueRefFields","uniqueRefField","validator","reportMessage","dsName","report","rules","addError","execute","valueMiss","validity","controlProps","omitBy","getValidatorProps","validationResult","uniqueRefValidationResult","validationResults","currentValidationResult","getLovPara","lovPara","cascadeMap","cascade","processAxiosConfig","axiosConfig","generateConditionField","conditionField","conditionFieldType","conditionFieldName","gridFieldName","conditionFieldLovCode","conditionFieldSelectCode","conditionFieldSelectUrl","conditionFieldSelectTf","conditionFieldSelectVf","conditionFieldRequired","INT","TEXT","DATE","DATETIME","POPUP","getFieldType","lovCode","lookupCode","lookupUrl","textField","valueField","aliasName","LovCodeStore","pendings","lovCodes","lovDS","getConfigUrl","getDefineAxiosConfig","pending","ds","lovPageSize","lovItems","parentIdField","idField","treeFlag","dataSetProps","getQueryAxiosConfig","primaryKey","cacheSelection","paging","parentField","conditionFieldSequence","configItem","querys","gridField","generateGridField","queryFields","lovDefineUrl","getQueryUrl","customUrl","lovQueryUrl","codes","LookupCodeStore","lookupAxiosConfig","getUrl","lovCodeStore","isSame","isEqual","PromiseQueue","queueing","isSameLike","Field","lastDynamicProps","isDynamicPropsComputing","pristineProps","fetchLookup","fetchLovConfig","dsField","findDataSetField","propsName","executeDynamicProps","checkDynamicProp","dynamicProp","dsValue","fireEvent","fieldChange","handlePropChange","lookup","getOptions","checkValidity","lookupStore","getAxiosConfig","dsConfig","fetchLookupData","lookupData","fetchConfig","newProp","oldProp","intlFields","langField","pristineValue","getPristineValue","auto","IDGen","Record","dataSetSnapshot","cascadeRecordsMap","initData","isCurrent","isCached","initFields","processData","pristineData","normalizeData","normalizeCascadeData","isCascadeSelect","__id","childDataSet","cascadeRecords","isObservableArray","oldName","addField","oneField","commit","cloneData","toData","tlsData","commitTls","memo","resetInBatch","totalCount","newData","snapShorts","commitData","langName","langProps","bindValue","needIgnore","ignore","always","clean","isDelete","childrenInfoForDelete","jsonArray","checkedLength","isIndeterminate","expandField","expand","treeData","childParentId","parentId","getCascadeRecords","DataSetSnapshot","originalData","currentPage","cachedSelected","pxToRem","num","toPx","mapStore","createDefaultSetter","superStore","getBoundSuper","boundFn","ViewComponent","setObservableProps","getWrapperClassNames","getWrapperProps","getOtherProps","getMergedClassNames","_props","_context","observableProps","getObservableProps","handleFocus","handleBlur","elementReference","elementClassName","wrapperProps","wrapperReference","isFocus","isFocused","updateObservableProps","spellCheck","onDoubleClick","onMouseMove","onMouseOver","onMouseOut","globalIsUsingStaticRendering","isUsingStaticRendering","__assign","__read","ar","printDebugValue","EMPTY_ARRAY","useForceUpdate","setTick","tick","EMPTY_OBJECT","useObserver","baseComponentName","isDisposed","rendering","useUnmount","track","baseComponent","wrappedComponent","memoComponent","realOptions","forwardRef","hoistBlackList","copyStaticProperties","$$typeof","ObserverComponent","ObserverPropsCheck","extraKey","hasProp","hasExtraProp","locks","$","reportObserved","reportChanged","for","isMobxInjector","isReactClass","isPrototypeOf","componentWillReact","reactComponent","createContext","ee","observableArray","observableArrayOf","observableMap","observableObject","arrayOrObservableArray","arrayOrObservableArrayOf","objectOrObservableObject","reactionScheduler","DataSetComponent","PopupKeyGen","contentRendered","popupKey","onAnimateAppear","onAnimateEnter","onAnimateLeave","onAnimateEnd","getMergedProps","getStyleFromAlign","currentAlignStyle","Action","ShowAction","HideAction","TriggerChild","createChains","childHandle","handleContextMenu","handleMouseEnter","handleMouseLeave","popupTask","documentEvent","animateFrameId","popupHidden","defaultPopupHidden","getPopup","handleEvent","handleDocumentScroll","handleDocumentMouseDown","setPopupHidden","delaySetPopupHidden","forcePopupAlign","popupCls","onPopupAnimateAppear","onPopupAnimateEnter","onPopupAnimateLeave","onPopupAnimateEnd","popupContent","getPopupStyleFromAlign","handlePopupMouseEnter","handlePopupMouseLeave","handlePopupMouseDown","getCls","isPointsEq","onPopupHiddenChange","click","contextMenu","mouseEnter","mouseLeave","MobxPropTypes","mobxAction","rcAutoAdjustOverflow","onHiddenChange","defaultHidden","arrowCls","contentCls","ShowHelp","getProperty","fieldProperty","CloseButton","FormField","emptyValue","maxTagTextLength","noValidate","pristine","dataIndex","defaultTo","handleKeyDown","hasFloatLabel","getProp","showHelp","newLine","getLabel","addToForm","removeFromForm","formNode","removeField","getValidationMessage","labelLayout","validationRenderer","beginRange","endRange","onEnterDown","handleEnterDown","syncValueOnBlur","prepareSetValue","removeValue","getDateFormat","isControlled","editable","processRenderer","renderer","defaultRenderer","processText","rangeValue","getDataSetValue","multipleValue","toMultipleValue","oldValues","_value1","_value2","rangeTarget","isLowerRange","addValue","getValueKey","afterRemoveValue","removeValues","_repeat","setRangeTarget","fromRangeValue","getOldValue","processRangeValue","valueLength","maxTagCount","maxTagPlaceholder","repeats","blockClassName","tags","renderRangeValue","renderValidationMessage","closeBtn","handleMutipleValueRemove","isValidationMessageHidden","omittedValues","onClear","onInvalid","renderWrapper","renderHelpMessage","recordField","contextType","FormContext","rowSpan","colSpan","none","onInput","ObserverFormField","ButtonColor","FuncType","ButtonType","ButtonWaitType","Button","handleClickWait","getHandleClick","waitType","afterClick","handleClickIfBubble","funcType","raised","childrenCount","buttonIcon","hasString","submitting","flat","gray","blue","red","green","yellow","purple","dark","asyncComponent","importComponent","DataSetRequestError","normalizeProps","isBoolean","moveEvent","okCancelEvent","saveCancelRef","cancelButton","registerOk","registerCancel","getDefaultFooter","okBtn","cancelBtn","okCancel","okFirst","drawer","keyboardClosable","fullScreen","header","getHeader","getBody","footer","getFooter","downEvent","moveX","moveY","onOk","ret1","ret2","onCancel","movable","getTitle","getHeaderButtons","headerProps","handleHeaderMouseDown","closeButton","getCloseButton","modal","handleOk","handleCancel","okProps","cancelProps","okText","cancelText","getWrappedFooter","destroyOnClose","afterClose","Mask","defaultBodyStyle","KeyGen","containerInstanses","removeInstanse","instanse","addInstanse","getKey","getRoot","hideBodyScrollBar","hasScrollBar","showBodyScrollBar","ModalContainer","modals","handleAnimationEnd","modalKey","isEnter","handleMaskClick","currentLocation","originModals","MARGIN_RIGHT_ARRAY","drawers","indexInDrawers","CURRENT_WIDTH","getModalWidth","NEXT_WIDTH","NEXT_MARGIN","thisHidden","animationProps","mount","confirm","titleNode","contentNode","Transport","queryUrl","validateUrl","submitUrl","exportUrl","tls","tlsUrl","inBatchSelection","syncChildrenRemote","remoteKeys","childName","syncChild","queryDataSet","autoQuery","autoCreate","queryParameter","processListener","initChildren","initEvents","initQueryDataSet","indexChange","handleCascade","previous","page","doQuery","loadDataFromResponse","columns","checkReadable","generateQueryParameter","_HAP_EXCEL_EXPORT_COLUMNS","totalKey","_r","generateOrderQueryString","locate","modifiedCheck","currentRecord","findInAllPage","isModified","currentIndex","totalPage","confirmMessage","beforeDelete","deleteRecord","removeAll","transferRecords","initialValue","reduceRight","getFieldSorter","recordOrIndex","single","cachedIndex","unSelect","currentSelected","unSelectAll","setCachedSelected","allData","total","autoQueryAfterSubmit","statusKey","restCreatedData","restUpdatedData","dataStatus","findRecordById","para","storeSelected","autoLocateFirst","beforeLoad","releaseCachedSelected","nextRecord","getFromTree","load","selectedIndex","getIndexInCurrentPage","childDs","resp","axiosConfigs","changeSubmitStatus","axiosStatic","handleSubmitSuccess","handleSubmitFail","changeStatus","generateQueryString","handleLoadSuccess","handleLoadFail","cacheSelectionKeys","cached","syncChildren","feedback","myTotal","onlyClient","childRecords","clearCachedSelected","oldSnapshot","pagesize","param","sortname","sortorder","bindField","pageQuery","generatePageQueryString","generatePageQuery","sortName","sortOrder","parentParam","reslove","isRemoved","dirtyRecords","uniqueKeys","NameGen","labelWidthPropTypes","labelAlignPropTypes","center","labelLayoutPropTypes","Form","responsiveItems","labelAlign","labelWidth","onSubmit","handleSubmit","onReset","handleReset","fill","labelWidths","normalizeLabelWidth","rows","rowIndex","colIndex","noLabel","childrenArray","completeLine","fieldLabelWidth","newColSpan","currentRow","isOutput","labelClassName","fieldElementProps","rasterizedChildren","handleResponsive","persist","processParams","onSuccess","onError","getFields","getFieldsById","responsiveColumns","responsiveWidth","defaultLabelAlign","responsiveAlign","defaultLabelLayout","responsiveLabelLayout","ReactResizeObserver","resizeProp","fixedWidth","fixedHeight","onComponentUpdated","destroyObserver","Column","minColumnWidth","columnWidth","lock","resizable","sortable","hideable","isChecked","checkedValue","renderInner","getTextNode","renderFloatLabel","getChildrenText","getLabelChildren","setChecked","ObserverRadio","CheckBox","unCheckedValue","unCheckedChildren","ObserverCheckBox","Switch","GroupItemCategory","PLACEHOLDER_SUPPORT","measureTextWidth","innerHTML","TextField","tagContainer","getSuffix","getPrefix","renderGroup","getWrappedEditor","getInnerSpanButton","otherPrevNode","getOtherPrevNode","otherNextNode","getOtherNextNode","placeholderDiv","renderPlaceHolder","renderedValue","renderRenderedValue","floatLabel","multipleHolder","renderMultipleHolder","addonBefore","addonAfter","inputElement","renderInputElement","renderTooltipHelp","wrapGroupItem","holders","getPlaceholders","category","startPlaceholder","endPlaceHolder","endValue","editorStyle","handleRangeStart","handleRangeEnd","saveTagContainer","handleTagAnimateEnd","handleTagAnimateEnter","renderMultipleValues","renderRangeEditor","renderMultipleEditor","textIndent","getDefaultSuffix","wrapperSuffix","wrapperPrefix","toValueString","getPlaceHolderNode","clearButton","wrapperInnerSpanButton","handleClearButtonClick","removeLastValue","setText","restricted","restrictInput","setSelectionRange","restrict","autoComplete","ObserverTextField","BUILT_IN_PLACEMENTS","TriggerField","setPopup","statePopup","triggerShowDelay","triggerHiddenDelay","getPopupProps","getPopupContent","handlePopupAnimateAppear","handlePopupAnimateEnd","handlePopupHiddenChange","getTriggerIconFont","Option","OptGroup","normalizeOptions","disabledField","selectionType","reactNode","getOptionsFromChildren","elements","groups","getStore","defaultSearchMatcher","getItemKey","getSimpleValue","comboOptions","doSearch","searchRemote","checkValueReaction","cascadeOptions","processSelectedData","checkComboReaction","generateComboOption","clearCheckValue","clearCheckCombo","checkValueOnOptionsChange","combo","checkValue","checkCombo","clearReaction","removeComboOptions","primitiveValue","searchMatcher","notFoundContent","dropdownMenuStyle","optionRenderer","onOption","menuDisabled","getGroups","optGroups","filteredOptions","previousGroup","optionProps","optionDisabled","itemContent","getNotFoundContent","saveMenu","menuMultiple","getMenuPrefixCls","handleMenuClick","getMenu","chooseAll","unChooseAll","dropdownMatchSelectWidth","handleKeyDownPrevNext","handleKeyDownFirstLast","handleKeyDownEsc","handleKeyDownSpace","resetFilter","findByTextWithValue","primitive","optionsWithCombo","autoType","simpleValue","currentComboOption","findByText","findByValue","removeComboOption","createComboOption","_exists","unChoose","processRecordToObject","searchable","setLovPara","processObjectValue","processLookupValue","handleOptionUnSelect","handleOptionSelect","newValues","optionsFilter","filterData","cascades","ObserverSelect","GroupIdGen","renderItem","handleItemChange","LovView","handleRow","gridFieldSequence","gridFieldWidth","gridFieldAlign","queryColumns","tableProps","tree","getColumns","queryFieldsLimit","selectionMode","rowbox","onRow","openModal","modalProps","noCache","handleLovViewSelect","handleLovViewClose","handleLovViewOk","resetOptions","filterText","setQueryParameter","lovStore","holder","getButtonProps","editableFlag","getLovDataSet","keepRunning","delayer","keeper","stopFn","handlePlus","handleMinus","handleKeyDownUp","handleKeyDownDown","isPlus","currentValue","getCurrentValidValue","nearStep","nextValue","plus","v1","v2","nearMaxStep","allowDecimal","isNegative","allowNegative","precision","getFormatter","getFormatOptions","ObserverNumberField","Currency","TimeUnit","alwaysValidDate","TimesView_1","DaysView","renderHeader","renderBody","renderFooter","changeSelectedDate","getCloneDate","subtract","changeViewMode","startOf","endOf","selectedDate","onSelectedDateChange","onViewModeChange","handlePrevYearClick","handlePrevMonthClick","handleMonthSelect","localeData","monthsShort","handleYearSelect","handleNextYearClick","handleNextMonthClick","renderPanel","getPanelClass","cellSpacing","renderPanelHead","renderPanelBody","getDaysOfWeek","firstDay","daysInMonth","renderCell","isValidDate","prevMonth","getFirstDay","currentYear","currentMonth","lastDay","cells","isBefore","currentDate","dayProps","handleCellClick","days","weekdaysMin","firstDayOfWeek","dow","day","TimeUnitQueue","hour","minute","second","TimesView","getCurrentUnit","changeUnit","getPrevUnit","getNextUnit","handleDateTimeSelect","onWheel","handleWheel","getTimeBar","handleTimeCellClick","currentUnit","DateTimesView","handleTimeSelect","WeeksView","weekProps","getWeekCell","MonthsView","lastMonth","monthProps","YearsView","decade","prevYear","lastYear","yearProps","DecadeYearsView","decadeProps","viewComponents","getViewMode","getSelectedDate","getDefaultViewMode","getCellRenderer","handleSelect","handleSelectedDateChange","handelViewModeChange","cellRenderer","getValidDate","minOrMax","getLimitWithType","isUnderRange","exists","handleKeyDownRight","handleKeyDownLeft","handleKeyDownEnd","handleKeyDownHome","handleKeyDownPageUp","handleKeyDownPageDown","handleKeyDownEnter","handleKeyDownTab","checkMoment","isAfter","m1","m2","isBetween","DateTimePicker","_minOrMax","WeekPicker","MonthPicker","YearPicker","IntlList","renderOptions","setLoading","storeLocales","handleIntlListClose","handleIntlListOk","handleIntlListCancel","intlField","Boolean","locales","getNodeRect","eventManager","HSV","saveGradientRef","gradient","saveSelectPointerRef","selectPointer","saveHuePointerRef","huePointer","saveHueRef","hue","saveOpacityRef","saveOpacityPointerRef","opacityPointer","setHuePointer","setGradientPointer","hueColor","backgroundColor","huePointerProps","handleHPMouseDown","handleHueClick","gradientProps","handleGPClick","gradientPointerProps","handleGPMouseDown","getPopupFooter","hexToRGB","rgbToHSV","setHSV","hsvToRGB","hg","hb","ha","rgbToHEX","setHueColor","hueLeft","hex","hexNum","hexArray","rgb","h1","pointer","isClient","wrapY","wrapW","wrapH","pointerH","pointerW","positionToHSV","hexColor","valueR","valueG","valueColor","onGPMouseUp","onHPMouseUp","setColor","getEditorByField","getAlignByField","getEditorByColumnAndRecord","cellEditor","isRadio","findCell","tableStore","currentEditRecord","tableCellPrefixCls","wrapperSelector","selector","findFirstFocusableElement","findIndexedSibling","nextElementSibling","previousElementSibling","dataset","getAttributeNodeNS","isDisabledRow","getColumnKey","getHeight","ColumnGroup","ColumnGroups","deep","wide","lastLeaf","sum","SELECTION_KEY","EXPAND_KEY","renderSelectionBox","getHeaderTexts","TableStore","handleSelectAllChange","showCachedSeletion","lockColumnsHeadRowsHeight","lockColumnsBodyRowsHeight","lockColumnsFootRowsHeight","expandedRows","setProps","leafNamedColumns","currentEditorName","reserve","showEditor","isExpanded","isTree","isRowExpanded","hoverRow","setRowExpanded","leafColumns","getLeafColumns","expandIconAsCell","allChecked","hasRowBox","selectionColumn","multipleSelectionRenderer","styledHidden","columnResizable","pagination","rowHeight","highLightRow","queryBar","editing","totalLeafColumnsWidth","bodyHeight","addExpandColumn","addSelectionColumn","mergeDefaultProps","newColumns","newColumn","normalizeColumns","leftFixedColumns","rightFixedColumns","columnGroups","groupedColumns","leftColumns","rightColumns","leftLeafColumns","rightLeafColumns","treeRecords","selectedLength","expandedRowRenderer","expandIconColumnIndex","editMode","inline","TableHeaderCell","resizeBoundary","headerDom","getHeaderNode","resizeColumn","getNode","prevColumn","setResizeColumn","resizeStart","resizePosition","setSplitLinePosition","resize","resizeEnd","newWidth","resizeLine","rectLeft","resizerPrefixCls","handleLeftResize","handleRightResize","sortPrefixCls","headerClassName","headerStyle","command","headerNode","innerProps","cellStyle","textAlign","fieldHelp","helpIcon","data-index","renderResizer","TableContext","TableHeader","getTableHeaderRows","trs","row","tds","getHeaderRowStyle","getRowHeight","leftGroupedColumns","rightGroupedColumns","SizeChangerPosition","Pager","defaultItemRender","handlePageSizeChange","handlePagerClick","pageSizeOptions","itemRender","pagerList","getPager","bufferSize","showSizeChangerLabel","showSizeChanger","sizeChangerOptionRenderer","sizeChangerPosition","showTotal","showPager","sizeChanger","renderSizeChange","renderTotal","renderPagers","TableEditor","showNextEditor","cell","hideEditor","editorProps","newEditorProps","handleEditorKeyDown","handleEditorKeyEnterDown","handleEditorBlur","renderEditor","handleEditorFocus","TableCol","handleTransitionEnd","fireResizeEnd","onResizeEnd","TableWrapper","syncFixedTableRowHeight","handleResizeEnd","hasHeader","hasFooter","hasEmptyWidth","getCol","leafEditorColumns","tableWrapper","hasBody","getEditors","tableWidth","getColGroup","leftLeafColumnsWidth","rightLeafColumnsWidth","columnLock","leafColumnsWidth","Output","getRenderedValue","inTab","TableCell","handleOutputChange","nextFrameActionId","syncSize","thisRecord","thisName","computeOverFlow","measureWidth","inlineEdit","handleCommandEdit","handleCommandDelete","getCommand","handleCommandSave","handleCommandCancel","defaultButtonProps","renderCommand","cellEditorInCell","hasCheckFieldColumn","indentSize","hasEditor","saveOutput","indentText","checkBox","getCheckBox","onCell","cellPrefix","cellExternalProps","td","getInnerNode","tableBodyWrap","sl","handleBodyScrollLeft","ExpandIcon","shallowequal","expandable","iconPrefixCls","TableRow","rowExternalProps","childrenRendered","rowKey","isHover","handleSelection","onClickCapture","hasExpandIcon","renderExpandIcon","tr","bottomSide","handleBodyScrollTop","focusRow","columnIndex","expandRowByClick","handleExpandChange","needIndentSpaced","expandRows","expandedRow","rowProps","rowRenderer","rowPrefixCls","handleClickCapture","handleSelectionByClick","dblclick","handleSelectionByDblClick","mousedown","handleSelectionByMouseDown","getCell","renderExpandRow","isRowHover","setRowHover","ExpandedRow","TableTBody","syncBodyHeight","tableBody","getRows","getEmptyRow","getRow","emptyText","tdStyle","renderExpandedRows","TableFooterCell","footerClassName","footerStyle","TableFooter","TableButtons","buttonGroup","TableToolBar","handleQuery","more","dirtyInfo","currentFields","createFields","moreFields","getMoreButton","getDirtyInfo","handleQueryReset","openMore","isMore","handleFieldEnter","getQueryBar","FilterSelect","setFilterText","optionDataSet","handleDataSetUpdate","handleDataSetReset","selectField","paramName","fieldValue","getFieldLabel","setQueryValue","getQueryValues","getQueryFieldMultiple","getQueryField","filtered","setSelectField","addQueryParams","getQueryRecord","multipleFieldExistsValue","handleInput","handleFieldEnterDown","isEditorReadOnly","getInputFilterOptions","getFieldSelectOptions","hiddenIfNone","handleFieldChange","getFieldEditor","getFieldSelect","Placements","topCenter","bottomCenter","whiteSpace","Dropdown","propsHidden","propsVisible","onOverlayClick","triggerAction","getMenuElement","ColumnFilter","setDropDownHidden","handleHiddenChange","handleMenuSelect","handleMenuUnSelect","TableFilterBar","getButtons","renderSuffix","TableAdvancedQueryBar","moreFieldsButton","getMoreFieldsButton","getResetButton","newStyle","valueFilter","getFilterSelect","TableQueryBar","exportModal","expandAll","collapseAll","getColumnHeaders","columnHeaders","exportDataSet","handleExport","handleButtonCreate","handleButtonSubmit","handleButtonDelete","handleButtonRemove","handleButtonReset","handleButtonExport","handleExpandAll","handleCollapseAll","filterBarFieldName","filterBarPlaceholder","showQueryBar","getQueryFields","renderToolBar","renderFilterBar","advancedBar","renderAdvancedQueryBar","TableBody","getRef","fixedLeft","scrollbar","hasFooterAndNotLock","buttonsEnumType","syncSizeInFrame","initDefaultExpandedRows","prePage","nextPage","firstRow","lastRow","lineHeight","processDataSetListener","flag","handleDataSetLoad","handleDataSetCreate","isAnyColumnsLeftLock","isAnyColumnsRightLock","getTable","getPagination","getLeftFixedTable","getRightFixedTable","saveResizeRef","scrollId","tableFootWrap","fixedColumnsBodyLeft","bodyTable","fixedColumnsBodyRight","lastScrollTop","headTable","tableHeadWrap","footTable","lastScrollLeft","setScrollPositionClassName","isAnyColumnsLock","scrollToLeft","table","scrollToRight","setScrollPosition","middle","scrollPosition","getTableHeader","getTableBody","getTableFooter","paginationPosition","getPaginationPosition","paginationProps","getCacheSelectionSwitch","handleSwitchChange","tableHead","tableFooter","tableHeadRef","tableBodyRef","tableFootRef","renderTable","handleBodyScroll","getStyleHeight","tableTitle","tableHeader","defaultRowExpanded","Password","reveal","handleToggleReveal","doReveal","resetReveal","dragEvent","renderTrack","getPercent","handleTrackClick","handleDrag","handleDragStart","handleDragEnd","totalLength","oneStepLength","ResizeType","TextArea","TimePicker","Colorpicker","IconItem","IconCategory","setPage","onPageChange","syncItemPosition","handlePageChange","getIcons","handleItemSelect","renderPagination","renderIcons","IconPicker","categoryPages","activeCategory","categoryKeys","changeSelected","setActiveCategory","setCategoryPage","isLeft","COLUMNS","activeCategoryIndex","newKey","newPage","isUP","handleKeyDownLeftOrRight","handleKeyDownUpOrDown","selectedIcon","filteredIcons","renderFilteredIcons","renderIconCategories","handleTabsChange","TransferList","onSelectAll","selectedText","handleClear","searchField","getSearchField","getHeaderSelected","TransferOperation","moveToLeft","moveToRight","leftActive","rightActive","sourceSelected","selectRecord","titles","handleSourceSelectAllChange","sourceFilter","handleMoveToLeft","handleMoveToRight","handleTargetSelectAllChange","handleTargetMenuClick","targetFilter","UploadList","showPreviewImage","previewImageWidth","previewImg","removeIcon","progressProps","filename","rmProps","listProps","listWrapperCls","getResponse","xhr","saveNativeInputElement","nativeInputElement","handleWrapperBtnClick","handleUploadBtnClick","startUpload","fileList","uploadFiles","handleRemove","removeFileItem","formAction","accept","uploadImmediately","showUploadBtn","uploadProps","inputWrapperBtn","uploadBtn","fileBuffer","getUid","URL","createObjectURL","onFileChange","fileListMaxLength","isAcceptFiles","formData","onprogress","loaded","handleProgress","append","errorMsg","handleSuccess","handleError","timeoutMsg","targetItem","getFileItem","onUploadSuccess","onUploadError","acceptTypes","acceptType","matchKey","getTreeNodes","forceRenderKeys","titleField","getTreeNode","stateForceRenderKeys","handleExpand","setExpand","stateExpandedKeys","handleCheck","setCheck","stateCheckedKeys","_selectedKeys","onLoad","loadedKeys","stores","defaultCodeMirrorOptions","lint","CodeArea","cmOptions","getCodeMirrorOptions","handleCodeMirrorBlur","codeMirrorInstance","codeMirrorText","getRaw","handleCodeMirrorDidMount","formatHotKey","unFormatHotKey","Tab","getFormatted","_editor","_data","handleCodeMirrorKeyDown","handleBeforeChange","c7n","req","webpackContext","webpackContextResolve","ja_JP","getter","ns","moduleId","modules"],"mappings":"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","file":"choerodon-ui-pro-with-locales.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"mobx\"), require(\"react-dom\"), require(\"moment\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"mobx\", \"react-dom\", \"moment\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"choerodon-ui-pro-with-locales.min\"] = factory(require(\"react\"), require(\"mobx\"), require(\"react-dom\"), require(\"moment\"));\n\telse\n\t\troot[\"choerodon-ui-pro-with-locales.min\"] = factory(root[\"React\"], root[\"mobx\"], root[\"ReactDOM\"], root[\"moment\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__19__, __WEBPACK_EXTERNAL_MODULE__32__) {\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 = 974);\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__;","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;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","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}\n\nmodule.exports = _assertThisInitialized;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","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;","var defineProperty = require(\"./defineProperty\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread2;","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;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","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;","/*!\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","export var DataSetEvents;\r\n(function (DataSetEvents) {\r\n DataSetEvents[\"query\"] = \"query\";\r\n DataSetEvents[\"beforeLoad\"] = \"beforeLoad\";\r\n DataSetEvents[\"load\"] = \"load\";\r\n DataSetEvents[\"loadFailed\"] = \"loadFailed\";\r\n DataSetEvents[\"submit\"] = \"submit\";\r\n DataSetEvents[\"submitSuccess\"] = \"submitSuccess\";\r\n DataSetEvents[\"submitFailed\"] = \"submitFailed\";\r\n DataSetEvents[\"select\"] = \"select\";\r\n DataSetEvents[\"unSelect\"] = \"unSelect\";\r\n DataSetEvents[\"selectAll\"] = \"selectAll\";\r\n DataSetEvents[\"unSelectAll\"] = \"unSelectAll\";\r\n DataSetEvents[\"indexChange\"] = \"indexChange\";\r\n DataSetEvents[\"update\"] = \"update\";\r\n DataSetEvents[\"fieldChange\"] = \"fieldChange\";\r\n DataSetEvents[\"export\"] = \"export\";\r\n DataSetEvents[\"create\"] = \"create\";\r\n DataSetEvents[\"beforeDelete\"] = \"beforeDelete\";\r\n DataSetEvents[\"reset\"] = \"reset\";\r\n})(DataSetEvents || (DataSetEvents = {}));\r\nexport var DataSetSelection;\r\n(function (DataSetSelection) {\r\n DataSetSelection[\"single\"] = \"single\";\r\n DataSetSelection[\"multiple\"] = \"multiple\";\r\n})(DataSetSelection || (DataSetSelection = {}));\r\nexport var DataSetStatus;\r\n(function (DataSetStatus) {\r\n DataSetStatus[\"loading\"] = \"loading\";\r\n DataSetStatus[\"submitting\"] = \"submitting\";\r\n DataSetStatus[\"ready\"] = \"ready\";\r\n})(DataSetStatus || (DataSetStatus = {}));\r\nexport var RecordStatus;\r\n(function (RecordStatus) {\r\n RecordStatus[\"delete\"] = \"delete\";\r\n RecordStatus[\"update\"] = \"update\";\r\n RecordStatus[\"add\"] = \"add\";\r\n RecordStatus[\"sync\"] = \"sync\";\r\n})(RecordStatus || (RecordStatus = {}));\r\nexport var FieldType;\r\n(function (FieldType) {\r\n FieldType[\"auto\"] = \"auto\";\r\n FieldType[\"boolean\"] = \"boolean\";\r\n FieldType[\"number\"] = \"number\";\r\n FieldType[\"currency\"] = \"currency\";\r\n FieldType[\"string\"] = \"string\";\r\n FieldType[\"date\"] = \"date\";\r\n FieldType[\"dateTime\"] = \"dateTime\";\r\n FieldType[\"week\"] = \"week\";\r\n FieldType[\"month\"] = \"month\";\r\n FieldType[\"year\"] = \"year\";\r\n FieldType[\"time\"] = \"time\";\r\n FieldType[\"object\"] = \"object\";\r\n FieldType[\"intl\"] = \"intl\";\r\n FieldType[\"email\"] = \"email\";\r\n FieldType[\"url\"] = \"url\";\r\n FieldType[\"color\"] = \"color\";\r\n FieldType[\"reactNode\"] = \"reactNode\";\r\n})(FieldType || (FieldType = {}));\r\nexport var SortOrder;\r\n(function (SortOrder) {\r\n SortOrder[\"asc\"] = \"asc\";\r\n SortOrder[\"desc\"] = \"desc\";\r\n})(SortOrder || (SortOrder = {}));\r\nexport var BooleanValue;\r\n(function (BooleanValue) {\r\n BooleanValue[\"trueValue\"] = \"trueValue\";\r\n BooleanValue[\"falseValue\"] = \"falseValue\";\r\n})(BooleanValue || (BooleanValue = {}));\r\nexport var FieldIgnore;\r\n(function (FieldIgnore) {\r\n FieldIgnore[\"always\"] = \"always\";\r\n FieldIgnore[\"clean\"] = \"clean\";\r\n FieldIgnore[\"never\"] = \"never\";\r\n})(FieldIgnore || (FieldIgnore = {}));\r\nexport var FieldTrim;\r\n(function (FieldTrim) {\r\n FieldTrim[\"both\"] = \"both\";\r\n FieldTrim[\"left\"] = \"left\";\r\n FieldTrim[\"right\"] = \"right\";\r\n FieldTrim[\"none\"] = \"none\";\r\n})(FieldTrim || (FieldTrim = {}));\r\nexport var FieldFormat;\r\n(function (FieldFormat) {\r\n FieldFormat[\"uppercase\"] = \"uppercase\";\r\n FieldFormat[\"lowercase\"] = \"lowercase\";\r\n FieldFormat[\"capitalize\"] = \"capitalize\";\r\n})(FieldFormat || (FieldFormat = {}));\r\n","import { observable, runInAction, toJS } from 'mobx';\r\nimport isObject from 'lodash/isObject';\r\nimport { categories } from 'choerodon-ui-font';\r\nimport { RecordStatus } from 'choerodon-ui/pro/lib/data-set/enum';\r\nimport { $l } from 'choerodon-ui/pro/lib/locale-context';\r\nimport { TableQueryBarType } from 'choerodon-ui/pro/lib/table/enum';\r\nimport defaultFeedback from 'choerodon-ui/pro/lib/data-set/FeedBack';\r\nimport { LabelLayout } from 'choerodon-ui/pro/lib/form/enum';\r\nconst defaultRenderEmpty = (componentName) => {\r\n switch (componentName) {\r\n case 'Table':\r\n return $l('Table', 'empty_data');\r\n case 'Select':\r\n return $l('Select', 'no_matching_results');\r\n default:\r\n }\r\n};\r\nconst globalConfig = observable.map([\r\n ['prefixCls', 'c7n'],\r\n ['proPrefixCls', 'c7n-pro'],\r\n ['iconfontPrefix', 'icon'],\r\n ['ripple', true],\r\n ['lookupCache', { maxAge: 1000 * 60 * 10, max: 100 }],\r\n ['lookupUrl', code => `/common/code/${code}/`],\r\n ['lookupAxiosMethod', 'post'],\r\n ['lovDefineUrl', code => `/sys/lov/lov_define?code=${code}`],\r\n ['lovQueryUrl', code => `/common/lov/dataset/${code}`],\r\n ['dataKey', 'rows'],\r\n ['totalKey', 'total'],\r\n ['statusKey', '__status'],\r\n ['tlsKey', '__tls'],\r\n [\r\n 'status',\r\n { [RecordStatus.add]: 'add', [RecordStatus.update]: 'update', [RecordStatus.delete]: 'delete' },\r\n ],\r\n ['labelLayout', LabelLayout.horizontal],\r\n ['queryBar', TableQueryBarType.normal],\r\n ['tableBorder', true],\r\n ['tableHighLightRow', true],\r\n ['tableRowHeight', 30],\r\n ['tableColumnResizable', true],\r\n ['modalSectionBorder', true],\r\n ['modalOkFirst', true],\r\n ['feedback', defaultFeedback],\r\n ['renderEmpty', defaultRenderEmpty],\r\n ['icons', categories],\r\n [\r\n 'formatter',\r\n {\r\n jsonDate: 'YYYY-MM-DD HH:mm:ss',\r\n date: 'YYYY-MM-DD',\r\n dateTime: 'YYYY-MM-DD HH:mm:ss',\r\n time: 'HH:mm:ss',\r\n year: 'YYYY',\r\n month: 'YYYY-MM',\r\n week: 'YYYY-Wo',\r\n },\r\n ],\r\n]);\r\nexport function getConfig(key) {\r\n // FIXME: observable.map把构建map时传入的key类型和value类型分别做了union,\r\n // 丢失了一一对应的映射关系,导致函数调用者无法使用union后的返回值类型,因此需要指定本函数返回值为any\r\n return globalConfig.get(key);\r\n}\r\nexport function getPrefixCls(suffixCls, customizePrefixCls) {\r\n if (customizePrefixCls) {\r\n return customizePrefixCls;\r\n }\r\n return `${getConfig('prefixCls')}-${suffixCls}`;\r\n}\r\nexport function getProPrefixCls(suffixCls, customizePrefixCls) {\r\n if (customizePrefixCls) {\r\n return customizePrefixCls;\r\n }\r\n return `${getConfig('proPrefixCls')}-${suffixCls}`;\r\n}\r\nconst mergeProps = ['transport', 'feedback', 'formatter'];\r\nexport default function configure(config) {\r\n runInAction(() => {\r\n Object.keys(config).forEach((key) => {\r\n const value = config[key];\r\n if (mergeProps.includes(key) && isObject(value)) {\r\n globalConfig.set(key, {\r\n ...toJS(globalConfig.get(key)),\r\n ...value,\r\n });\r\n }\r\n else {\r\n globalConfig.set(key, config[key]);\r\n }\r\n });\r\n });\r\n}\r\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","export default class KeyCode {\r\n /*\r\n whether text and modified key is entered at the same time.\r\n */\r\n static isTextModifyingKeyEvent(e) {\r\n const keyCode = e.keyCode;\r\n if ((e.altKey && !e.ctrlKey) ||\r\n e.metaKey ||\r\n // Function keys don't generate text\r\n (keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12)) {\r\n return false;\r\n }\r\n // The following keys are quite harmless, even in combination with\r\n // CTRL, ALT or SHIFT.\r\n switch (keyCode) {\r\n case KeyCode.ALT:\r\n case KeyCode.CAPS_LOCK:\r\n case KeyCode.CONTEXT_MENU:\r\n case KeyCode.CTRL:\r\n case KeyCode.DOWN:\r\n case KeyCode.END:\r\n case KeyCode.ESC:\r\n case KeyCode.HOME:\r\n case KeyCode.INSERT:\r\n case KeyCode.LEFT:\r\n case KeyCode.MAC_FF_META:\r\n case KeyCode.META:\r\n case KeyCode.NUMLOCK:\r\n case KeyCode.NUM_CENTER:\r\n case KeyCode.PAGE_DOWN:\r\n case KeyCode.PAGE_UP:\r\n case KeyCode.PAUSE:\r\n case KeyCode.PRINT_SCREEN:\r\n case KeyCode.RIGHT:\r\n case KeyCode.SHIFT:\r\n case KeyCode.UP:\r\n case KeyCode.WIN_KEY:\r\n case KeyCode.WIN_KEY_RIGHT:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n /*\r\n whether character is entered.\r\n */\r\n static isCharacterKey(keyCode) {\r\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\r\n return true;\r\n }\r\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\r\n return true;\r\n }\r\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\r\n return true;\r\n }\r\n // Safari sends zero key code for non-latin characters.\r\n if (keyCode === 0 &&\r\n typeof window !== 'undefined' &&\r\n window.navigator.userAgent.indexOf('WebKit') !== -1) {\r\n return true;\r\n }\r\n switch (keyCode) {\r\n case KeyCode.SPACE:\r\n case KeyCode.QUESTION_MARK:\r\n case KeyCode.NUM_PLUS:\r\n case KeyCode.NUM_MINUS:\r\n case KeyCode.NUM_PERIOD:\r\n case KeyCode.NUM_DIVISION:\r\n case KeyCode.SEMICOLON:\r\n case KeyCode.DASH:\r\n case KeyCode.EQUALS:\r\n case KeyCode.COMMA:\r\n case KeyCode.PERIOD:\r\n case KeyCode.SLASH:\r\n case KeyCode.APOSTROPHE:\r\n case KeyCode.SINGLE_QUOTE:\r\n case KeyCode.OPEN_SQUARE_BRACKET:\r\n case KeyCode.BACKSLASH:\r\n case KeyCode.CLOSE_SQUARE_BRACKET:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * MAC_ENTER\r\n */\r\nKeyCode.MAC_ENTER = 3;\r\n/**\r\n * BACKSPACE\r\n */\r\nKeyCode.BACKSPACE = 8;\r\n/**\r\n * TAB\r\n */\r\nKeyCode.TAB = 9;\r\n/**\r\n * NUMLOCK on FF/Safari Mac\r\n */\r\nKeyCode.NUM_CENTER = 12; // NUMLOCK on FF/Safari Mac\r\n/**\r\n * ENTER\r\n */\r\nKeyCode.ENTER = 13;\r\n/**\r\n * SHIFT\r\n */\r\nKeyCode.SHIFT = 16;\r\n/**\r\n * CTRL\r\n */\r\nKeyCode.CTRL = 17;\r\n/**\r\n * ALT\r\n */\r\nKeyCode.ALT = 18;\r\n/**\r\n * PAUSE\r\n */\r\nKeyCode.PAUSE = 19;\r\n/**\r\n * CAPS_LOCK\r\n */\r\nKeyCode.CAPS_LOCK = 20;\r\n/**\r\n * ESC\r\n */\r\nKeyCode.ESC = 27;\r\n/**\r\n * SPACE\r\n */\r\nKeyCode.SPACE = 32;\r\n/**\r\n * PAGE_UP\r\n */\r\nKeyCode.PAGE_UP = 33; // also NUM_NORTH_EAST\r\n/**\r\n * PAGE_DOWN\r\n */\r\nKeyCode.PAGE_DOWN = 34; // also NUM_SOUTH_EAST\r\n/**\r\n * END\r\n */\r\nKeyCode.END = 35; // also NUM_SOUTH_WEST\r\n/**\r\n * HOME\r\n */\r\nKeyCode.HOME = 36; // also NUM_NORTH_WEST\r\n/**\r\n * LEFT\r\n */\r\nKeyCode.LEFT = 37; // also NUM_WEST\r\n/**\r\n * UP\r\n */\r\nKeyCode.UP = 38; // also NUM_NORTH\r\n/**\r\n * RIGHT\r\n */\r\nKeyCode.RIGHT = 39; // also NUM_EAST\r\n/**\r\n * DOWN\r\n */\r\nKeyCode.DOWN = 40; // also NUM_SOUTH\r\n/**\r\n * PRINT_SCREEN\r\n */\r\nKeyCode.PRINT_SCREEN = 44;\r\n/**\r\n * INSERT\r\n */\r\nKeyCode.INSERT = 45; // also NUM_INSERT\r\n/**\r\n * DELETE\r\n */\r\nKeyCode.DELETE = 46; // also NUM_DELETE\r\n/**\r\n * ZERO\r\n */\r\nKeyCode.ZERO = 48;\r\n/**\r\n * ONE\r\n */\r\nKeyCode.ONE = 49;\r\n/**\r\n * TWO\r\n */\r\nKeyCode.TWO = 50;\r\n/**\r\n * THREE\r\n */\r\nKeyCode.THREE = 51;\r\n/**\r\n * FOUR\r\n */\r\nKeyCode.FOUR = 52;\r\n/**\r\n * FIVE\r\n */\r\nKeyCode.FIVE = 53;\r\n/**\r\n * SIX\r\n */\r\nKeyCode.SIX = 54;\r\n/**\r\n * SEVEN\r\n */\r\nKeyCode.SEVEN = 55;\r\n/**\r\n * EIGHT\r\n */\r\nKeyCode.EIGHT = 56;\r\n/**\r\n * NINE\r\n */\r\nKeyCode.NINE = 57;\r\n/**\r\n * QUESTION_MARK\r\n */\r\nKeyCode.QUESTION_MARK = 63; // needs localization\r\n/**\r\n * A\r\n */\r\nKeyCode.A = 65;\r\n/**\r\n * B\r\n */\r\nKeyCode.B = 66;\r\n/**\r\n * C\r\n */\r\nKeyCode.C = 67;\r\n/**\r\n * D\r\n */\r\nKeyCode.D = 68;\r\n/**\r\n * E\r\n */\r\nKeyCode.E = 69;\r\n/**\r\n * F\r\n */\r\nKeyCode.F = 70;\r\n/**\r\n * G\r\n */\r\nKeyCode.G = 71;\r\n/**\r\n * H\r\n */\r\nKeyCode.H = 72;\r\n/**\r\n * I\r\n */\r\nKeyCode.I = 73;\r\n/**\r\n * J\r\n */\r\nKeyCode.J = 74;\r\n/**\r\n * K\r\n */\r\nKeyCode.K = 75;\r\n/**\r\n * L\r\n */\r\nKeyCode.L = 76;\r\n/**\r\n * M\r\n */\r\nKeyCode.M = 77;\r\n/**\r\n * N\r\n */\r\nKeyCode.N = 78;\r\n/**\r\n * O\r\n */\r\nKeyCode.O = 79;\r\n/**\r\n * P\r\n */\r\nKeyCode.P = 80;\r\n/**\r\n * Q\r\n */\r\nKeyCode.Q = 81;\r\n/**\r\n * R\r\n */\r\nKeyCode.R = 82;\r\n/**\r\n * S\r\n */\r\nKeyCode.S = 83;\r\n/**\r\n * T\r\n */\r\nKeyCode.T = 84;\r\n/**\r\n * U\r\n */\r\nKeyCode.U = 85;\r\n/**\r\n * V\r\n */\r\nKeyCode.V = 86;\r\n/**\r\n * W\r\n */\r\nKeyCode.W = 87;\r\n/**\r\n * X\r\n */\r\nKeyCode.X = 88;\r\n/**\r\n * Y\r\n */\r\nKeyCode.Y = 89;\r\n/**\r\n * Z\r\n */\r\nKeyCode.Z = 90;\r\n/**\r\n * META\r\n */\r\nKeyCode.META = 91; // WIN_KEY_LEFT\r\n/**\r\n * WIN_KEY_RIGHT\r\n */\r\nKeyCode.WIN_KEY_RIGHT = 92;\r\n/**\r\n * CONTEXT_MENU\r\n */\r\nKeyCode.CONTEXT_MENU = 93;\r\n/**\r\n * NUM_ZERO\r\n */\r\nKeyCode.NUM_ZERO = 96;\r\n/**\r\n * NUM_ONE\r\n */\r\nKeyCode.NUM_ONE = 97;\r\n/**\r\n * NUM_TWO\r\n */\r\nKeyCode.NUM_TWO = 98;\r\n/**\r\n * NUM_THREE\r\n */\r\nKeyCode.NUM_THREE = 99;\r\n/**\r\n * NUM_FOUR\r\n */\r\nKeyCode.NUM_FOUR = 100;\r\n/**\r\n * NUM_FIVE\r\n */\r\nKeyCode.NUM_FIVE = 101;\r\n/**\r\n * NUM_SIX\r\n */\r\nKeyCode.NUM_SIX = 102;\r\n/**\r\n * NUM_SEVEN\r\n */\r\nKeyCode.NUM_SEVEN = 103;\r\n/**\r\n * NUM_EIGHT\r\n */\r\nKeyCode.NUM_EIGHT = 104;\r\n/**\r\n * NUM_NINE\r\n */\r\nKeyCode.NUM_NINE = 105;\r\n/**\r\n * NUM_MULTIPLY\r\n */\r\nKeyCode.NUM_MULTIPLY = 106;\r\n/**\r\n * NUM_PLUS\r\n */\r\nKeyCode.NUM_PLUS = 107;\r\n/**\r\n * NUM_MINUS\r\n */\r\nKeyCode.NUM_MINUS = 109;\r\n/**\r\n * NUM_PERIOD\r\n */\r\nKeyCode.NUM_PERIOD = 110;\r\n/**\r\n * NUM_DIVISION\r\n */\r\nKeyCode.NUM_DIVISION = 111;\r\n/**\r\n * F1\r\n */\r\nKeyCode.F1 = 112;\r\n/**\r\n * F2\r\n */\r\nKeyCode.F2 = 113;\r\n/**\r\n * F3\r\n */\r\nKeyCode.F3 = 114;\r\n/**\r\n * F4\r\n */\r\nKeyCode.F4 = 115;\r\n/**\r\n * F5\r\n */\r\nKeyCode.F5 = 116;\r\n/**\r\n * F6\r\n */\r\nKeyCode.F6 = 117;\r\n/**\r\n * F7\r\n */\r\nKeyCode.F7 = 118;\r\n/**\r\n * F8\r\n */\r\nKeyCode.F8 = 119;\r\n/**\r\n * F9\r\n */\r\nKeyCode.F9 = 120;\r\n/**\r\n * F10\r\n */\r\nKeyCode.F10 = 121;\r\n/**\r\n * F11\r\n */\r\nKeyCode.F11 = 122;\r\n/**\r\n * F12\r\n */\r\nKeyCode.F12 = 123;\r\n/**\r\n * NUMLOCK\r\n */\r\nKeyCode.NUMLOCK = 144;\r\n/**\r\n * SEMICOLON\r\n */\r\nKeyCode.SEMICOLON = 186; // needs localization\r\n/**\r\n * DASH\r\n */\r\nKeyCode.DASH = 189; // needs localization\r\n/**\r\n * EQUALS\r\n */\r\nKeyCode.EQUALS = 187; // needs localization\r\n/**\r\n * COMMA\r\n */\r\nKeyCode.COMMA = 188; // needs localization\r\n/**\r\n * PERIOD\r\n */\r\nKeyCode.PERIOD = 190; // needs localization\r\n/**\r\n * SLASH\r\n */\r\nKeyCode.SLASH = 191; // needs localization\r\n/**\r\n * APOSTROPHE\r\n */\r\nKeyCode.APOSTROPHE = 192; // needs localization\r\n/**\r\n * SINGLE_QUOTE\r\n */\r\nKeyCode.SINGLE_QUOTE = 222; // needs localization\r\n/**\r\n * OPEN_SQUARE_BRACKET\r\n */\r\nKeyCode.OPEN_SQUARE_BRACKET = 219; // needs localization\r\n/**\r\n * BACKSLASH\r\n */\r\nKeyCode.BACKSLASH = 220; // needs localization\r\n/**\r\n * CLOSE_SQUARE_BRACKET\r\n */\r\nKeyCode.CLOSE_SQUARE_BRACKET = 221; // needs localization\r\n/**\r\n * WIN_KEY\r\n */\r\nKeyCode.WIN_KEY = 224;\r\n/**\r\n * MAC_FF_META\r\n */\r\nKeyCode.MAC_FF_META = 224; // Firefox (Gecko) fires this for the meta key instead of 91\r\n/**\r\n * WIN_IME\r\n */\r\nKeyCode.WIN_IME = 229;\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__19__;","var superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","module.exports = require(\"regenerator-runtime\");\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","import zh_CN from './zh_CN';\r\nexport default zh_CN;\r\n","export default {\r\n zh_CN: '简体中文',\r\n en_GB: 'English',\r\n en_US: 'English(US)',\r\n};\r\n","import * as tslib_1 from \"tslib\";\r\nimport { action, get, observable, runInAction } from 'mobx';\r\nimport moment from 'moment';\r\nimport defaultLocale from './locale';\r\nimport defaultSupports from './supports';\r\nimport normalizeLanguage from '../_util/normalizeLanguage';\r\nfunction setMomentLocale(locale) {\r\n moment.locale(normalizeLanguage(locale ? locale.lang : defaultLocale.lang));\r\n}\r\nexport class LocaleContext {\r\n constructor() {\r\n runInAction(() => {\r\n this.locale = defaultLocale;\r\n this.supports = defaultSupports;\r\n });\r\n }\r\n setLocale(locale) {\r\n setMomentLocale(locale);\r\n this.locale = locale;\r\n }\r\n setSupports(supports) {\r\n this.supports = supports;\r\n }\r\n get(component, key) {\r\n const cmp = get(this.locale, component);\r\n return (cmp && get(cmp, key)) || `${component}.${key}`;\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], LocaleContext.prototype, \"locale\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], LocaleContext.prototype, \"supports\", void 0);\r\ntslib_1.__decorate([\r\n action\r\n], LocaleContext.prototype, \"setLocale\", null);\r\nexport default new LocaleContext();\r\n","import localeContext from './LocaleContext';\r\nimport formatReactTemplate from '../formatter/formatReactTemplate';\r\nexport function $l(component, key, injectionOptions) {\r\n const locale = localeContext.get(component, key);\r\n if (injectionOptions) {\r\n return formatReactTemplate(locale, injectionOptions);\r\n }\r\n return locale;\r\n}\r\nexport default localeContext;\r\n","export var Size;\r\n(function (Size) {\r\n Size[\"default\"] = \"default\";\r\n Size[\"small\"] = \"small\";\r\n Size[\"large\"] = \"large\";\r\n})(Size || (Size = {}));\r\n","export var ColumnLock;\r\n(function (ColumnLock) {\r\n ColumnLock[\"left\"] = \"left\";\r\n ColumnLock[\"right\"] = \"right\";\r\n})(ColumnLock || (ColumnLock = {}));\r\nexport var ColumnAlign;\r\n(function (ColumnAlign) {\r\n ColumnAlign[\"left\"] = \"left\";\r\n ColumnAlign[\"center\"] = \"center\";\r\n ColumnAlign[\"right\"] = \"right\";\r\n})(ColumnAlign || (ColumnAlign = {}));\r\nexport var ScrollPosition;\r\n(function (ScrollPosition) {\r\n ScrollPosition[\"left\"] = \"left\";\r\n ScrollPosition[\"right\"] = \"right\";\r\n ScrollPosition[\"both\"] = \"both\";\r\n ScrollPosition[\"middle\"] = \"middle\";\r\n})(ScrollPosition || (ScrollPosition = {}));\r\nexport var SelectionMode;\r\n(function (SelectionMode) {\r\n SelectionMode[\"rowbox\"] = \"rowbox\";\r\n SelectionMode[\"click\"] = \"click\";\r\n SelectionMode[\"none\"] = \"none\";\r\n SelectionMode[\"dblclick\"] = \"dblclick\";\r\n SelectionMode[\"mousedown\"] = \"mousedown\";\r\n})(SelectionMode || (SelectionMode = {}));\r\nexport var TableButtonType;\r\n(function (TableButtonType) {\r\n TableButtonType[\"add\"] = \"add\";\r\n TableButtonType[\"delete\"] = \"delete\";\r\n TableButtonType[\"remove\"] = \"remove\";\r\n TableButtonType[\"save\"] = \"save\";\r\n TableButtonType[\"query\"] = \"query\";\r\n TableButtonType[\"reset\"] = \"reset\";\r\n TableButtonType[\"expandAll\"] = \"expandAll\";\r\n TableButtonType[\"collapseAll\"] = \"collapseAll\";\r\n TableButtonType[\"export\"] = \"export\";\r\n})(TableButtonType || (TableButtonType = {}));\r\nexport var TableCommandType;\r\n(function (TableCommandType) {\r\n TableCommandType[\"edit\"] = \"edit\";\r\n TableCommandType[\"delete\"] = \"delete\";\r\n})(TableCommandType || (TableCommandType = {}));\r\nexport var TableMode;\r\n(function (TableMode) {\r\n TableMode[\"list\"] = \"list\";\r\n TableMode[\"tree\"] = \"tree\";\r\n})(TableMode || (TableMode = {}));\r\nexport var TableEditMode;\r\n(function (TableEditMode) {\r\n TableEditMode[\"cell\"] = \"cell\";\r\n TableEditMode[\"inline\"] = \"inline\";\r\n})(TableEditMode || (TableEditMode = {}));\r\nexport var TableQueryBarType;\r\n(function (TableQueryBarType) {\r\n TableQueryBarType[\"normal\"] = \"normal\";\r\n TableQueryBarType[\"bar\"] = \"bar\";\r\n TableQueryBarType[\"none\"] = \"none\";\r\n TableQueryBarType[\"advancedBar\"] = \"advancedBar\";\r\n})(TableQueryBarType || (TableQueryBarType = {}));\r\nexport var TablePaginationPosition;\r\n(function (TablePaginationPosition) {\r\n TablePaginationPosition[\"top\"] = \"top\";\r\n TablePaginationPosition[\"bottom\"] = \"bottom\";\r\n TablePaginationPosition[\"both\"] = \"both\";\r\n})(TablePaginationPosition || (TablePaginationPosition = {}));\r\nexport var TableColumnTooltip;\r\n(function (TableColumnTooltip) {\r\n TableColumnTooltip[\"none\"] = \"none\";\r\n TableColumnTooltip[\"always\"] = \"always\";\r\n TableColumnTooltip[\"overflow\"] = \"overflow\";\r\n})(TableColumnTooltip || (TableColumnTooltip = {}));\r\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { getConfig } from '../configure';\r\nconst Icon = function Icon(props) {\r\n const iconfontPrefix = getConfig('iconfontPrefix');\r\n const { type, className = '', ...otherProps } = props;\r\n const classString = classNames(iconfontPrefix, `${iconfontPrefix}-${type}`, className);\r\n return <i {...otherProps} className={classString}/>;\r\n};\r\nIcon.displayName = 'Icon';\r\nexport default Icon;\r\n","import warning from 'warning';\r\nconst warned = {};\r\nexport default (valid, message) => {\r\n if (!valid && !warned[message]) {\r\n warning(false, message);\r\n warned[message] = true;\r\n }\r\n};\r\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\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;","module.exports = __WEBPACK_EXTERNAL_MODULE__32__;","export var ProgressType;\r\n(function (ProgressType) {\r\n ProgressType[\"line\"] = \"line\";\r\n ProgressType[\"circle\"] = \"circle\";\r\n ProgressType[\"dashboard\"] = \"dashboard\";\r\n ProgressType[\"loading\"] = \"loading\";\r\n})(ProgressType || (ProgressType = {}));\r\nexport var ProgressStatus;\r\n(function (ProgressStatus) {\r\n ProgressStatus[\"normal\"] = \"normal\";\r\n ProgressStatus[\"success\"] = \"success\";\r\n ProgressStatus[\"active\"] = \"active\";\r\n ProgressStatus[\"exception\"] = \"exception\";\r\n})(ProgressStatus || (ProgressStatus = {}));\r\nexport var ProgressPosition;\r\n(function (ProgressPosition) {\r\n ProgressPosition[\"top\"] = \"top\";\r\n ProgressPosition[\"bottom\"] = \"bottom\";\r\n ProgressPosition[\"left\"] = \"left\";\r\n ProgressPosition[\"right\"] = \"right\";\r\n})(ProgressPosition || (ProgressPosition = {}));\r\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","export var LabelAlign;\r\n(function (LabelAlign) {\r\n LabelAlign[\"left\"] = \"left\";\r\n LabelAlign[\"center\"] = \"center\";\r\n LabelAlign[\"right\"] = \"right\";\r\n})(LabelAlign || (LabelAlign = {}));\r\nexport var LabelLayout;\r\n(function (LabelLayout) {\r\n LabelLayout[\"horizontal\"] = \"horizontal\";\r\n LabelLayout[\"vertical\"] = \"vertical\";\r\n LabelLayout[\"placeholder\"] = \"placeholder\";\r\n LabelLayout[\"float\"] = \"float\";\r\n LabelLayout[\"none\"] = \"none\";\r\n})(LabelLayout || (LabelLayout = {}));\r\nexport var ResponsiveKeys;\r\n(function (ResponsiveKeys) {\r\n ResponsiveKeys[\"xs\"] = \"xs\";\r\n ResponsiveKeys[\"sm\"] = \"sm\";\r\n ResponsiveKeys[\"md\"] = \"md\";\r\n ResponsiveKeys[\"lg\"] = \"lg\";\r\n ResponsiveKeys[\"xl\"] = \"xl\";\r\n ResponsiveKeys[\"xxl\"] = \"xxl\";\r\n})(ResponsiveKeys || (ResponsiveKeys = {}));\r\n","/* eslint no-loop-func: 0*/\nimport { Children } from 'react';\nimport warning from '../../_util/warning';\n\nexport function arrDel(list, value) {\n const clone = list.slice();\n const index = clone.indexOf(value);\n if (index >= 0) {\n clone.splice(index, 1);\n }\n return clone;\n}\n\nexport function arrAdd(list, value) {\n const clone = list.slice();\n if (clone.indexOf(value) === -1) {\n clone.push(value);\n }\n return clone;\n}\n\nexport function posToArr(pos) {\n return pos.split('-');\n}\n\n// Only used when drag, not affect SSR.\nexport function getOffset(ele) {\n if (!ele.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n\n const rect = ele.getBoundingClientRect();\n if (rect.width || rect.height) {\n const doc = ele.ownerDocument;\n const win = doc.defaultView;\n const docElem = doc.documentElement;\n\n return {\n top: rect.top + win.pageYOffset - docElem.clientTop,\n left: rect.left + win.pageXOffset - docElem.clientLeft,\n };\n }\n\n return rect;\n}\n\nexport function getPosition(level, index) {\n return `${level}-${index}`;\n}\n\nexport function getNodeChildren(children) {\n const childList = Array.isArray(children) ? children : [children];\n return childList\n .filter(child => child && child.type && child.type.isTreeNode);\n}\n\nexport function isCheckDisabled(node) {\n const { disabled, disableCheckbox } = node.props || {};\n return !!(disabled || disableCheckbox);\n}\n\nexport function traverseTreeNodes(treeNodes, subTreeData, callback) {\n if (typeof subTreeData === 'function') {\n callback = subTreeData;\n subTreeData = false;\n }\n\n function processNode(node, index, parent) {\n const children = node ? node.props.children : treeNodes;\n const pos = node ? getPosition(parent.pos, index) : 0;\n\n // Filter children\n const childList = getNodeChildren(children);\n\n // Process node if is not root\n if (node) {\n const data = {\n node,\n index,\n pos,\n key: node.key || pos,\n parentPos: parent.node ? parent.pos : null,\n };\n\n // Children data is not must have\n if (subTreeData) {\n // Statistic children\n const subNodes = [];\n Children.forEach(childList, (subNode, subIndex) => {\n // Provide limit snapshot\n const subPos = getPosition(pos, index);\n subNodes.push({\n node: subNode,\n key: subNode.key || subPos,\n pos: subPos,\n index: subIndex,\n });\n });\n data.subNodes = subNodes;\n }\n\n // Can break traverse by return false\n if (callback(data) === false) {\n return;\n }\n }\n\n // Process children node\n Children.forEach(childList, (subNode, subIndex) => {\n processNode(subNode, subIndex, { node, pos });\n });\n }\n\n processNode(null);\n}\n\n/**\n * [Legacy] Return halfChecked when it has value.\n * @param checkedKeys\n * @param halfChecked\n * @returns {*}\n */\nexport function getStrictlyValue(checkedKeys, halfChecked) {\n if (halfChecked) {\n return { checked: checkedKeys, halfChecked };\n }\n return checkedKeys;\n}\n\nexport function getFullKeyList(treeNodes) {\n const keyList = [];\n traverseTreeNodes(treeNodes, ({ key }) => {\n keyList.push(key);\n });\n return keyList;\n}\n\n/**\n * Check position relation.\n * @param parentPos\n * @param childPos\n * @param directly only directly parent can be true\n * @returns {boolean}\n */\nexport function isParent(parentPos, childPos, directly = false) {\n if (!parentPos || !childPos || parentPos.length > childPos.length) return false;\n\n const parentPath = posToArr(parentPos);\n const childPath = posToArr(childPos);\n\n // Directly check\n if (directly && parentPath.length !== childPath.length - 1) return false;\n\n const len = parentPath.length;\n for (let i = 0; i < len; i += 1) {\n if (parentPath[i] !== childPath[i]) return false;\n }\n\n return true;\n}\n\n/**\n * Statistic TreeNodes info\n * @param treeNodes\n * @returns {{}}\n */\nexport function getNodesStatistic(treeNodes) {\n const statistic = {\n keyNodes: {},\n posNodes: {},\n nodeList: [],\n };\n\n traverseTreeNodes(treeNodes, true, ({ node, index, pos, key, subNodes, parentPos }) => {\n const data = { node, index, pos, key, subNodes, parentPos };\n statistic.keyNodes[key] = data;\n statistic.posNodes[pos] = data;\n statistic.nodeList.push(data);\n });\n\n return statistic;\n}\n\nexport function getDragNodesKeys(treeNodes, node) {\n const { eventKey, pos } = node.props;\n const dragNodesKeys = [];\n\n traverseTreeNodes(treeNodes, ({ pos: nodePos, key }) => {\n if (isParent(pos, nodePos)) {\n dragNodesKeys.push(key);\n }\n });\n dragNodesKeys.push(eventKey || pos);\n return dragNodesKeys;\n}\n\nexport function calcDropPosition(event, treeNode) {\n const offsetTop = getOffset(treeNode.selectHandle).top;\n const offsetHeight = treeNode.selectHandle.offsetHeight;\n const pageY = event.pageY;\n const gapHeight = 2; // [Legacy] TODO: remove hard code\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/**\n * Auto expand all related node when sub node is expanded\n * @param keyList\n * @param props\n * @returns [string]\n */\nexport function calcExpandedKeys(keyList, props) {\n if (!keyList) {\n return [];\n }\n\n const { children } = props;\n\n // Fill parent expanded keys\n const { keyNodes, nodeList } = getNodesStatistic(children);\n const needExpandKeys = {};\n const needExpandPathList = [];\n\n // Fill expanded nodes\n keyList.forEach((key) => {\n const node = keyNodes[key];\n if (node) {\n needExpandKeys[key] = true;\n needExpandPathList.push(node.pos);\n }\n });\n\n // Match parent by path\n nodeList.forEach(({ pos, key }) => {\n if (needExpandPathList.some(childPos => isParent(pos, childPos))) {\n needExpandKeys[key] = true;\n }\n });\n\n const calcExpandedKeyList = Object.keys(needExpandKeys);\n\n // [Legacy] Return origin keyList if calc list is empty\n return calcExpandedKeyList.length ? calcExpandedKeyList : keyList;\n}\n\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\nexport function calcSelectedKeys(selectedKeys, props) {\n if (!selectedKeys) {\n return undefined;\n }\n\n const { multiple } = props;\n if (multiple) {\n return selectedKeys.slice();\n }\n\n if (selectedKeys.length) {\n return [selectedKeys[0]];\n }\n return selectedKeys;\n}\n\n/**\n * Check conduct is by key level. It pass though up & down.\n * When conduct target node is check means already conducted will be skip.\n * @param treeNodes\n * @param checkedKeys\n * @returns {{checkedKeys: Array, halfCheckedKeys: Array}}\n */\nexport function calcCheckStateConduct(treeNodes, checkedKeys) {\n const { keyNodes, posNodes } = getNodesStatistic(treeNodes);\n\n const tgtCheckedKeys = {};\n const tgtHalfCheckedKeys = {};\n\n // Conduct up\n function conductUp(key, halfChecked) {\n if (tgtCheckedKeys[key]) return;\n\n const { subNodes = [], parentPos, node } = keyNodes[key];\n if (isCheckDisabled(node)) return;\n\n const allSubChecked = !halfChecked && subNodes\n .filter(sub => !isCheckDisabled(sub.node))\n .every(sub => tgtCheckedKeys[sub.key]);\n\n if (allSubChecked) {\n tgtCheckedKeys[key] = true;\n } else {\n tgtHalfCheckedKeys[key] = true;\n }\n\n if (parentPos !== null) {\n conductUp(posNodes[parentPos].key, !allSubChecked);\n }\n }\n\n // Conduct down\n function conductDown(key) {\n if (tgtCheckedKeys[key]) return;\n const { subNodes = [], node } = keyNodes[key];\n\n if (isCheckDisabled(node)) return;\n\n tgtCheckedKeys[key] = true;\n\n subNodes.forEach((sub) => {\n conductDown(sub.key);\n });\n }\n\n function conduct(key) {\n if (!keyNodes[key]) {\n warning(false, `'${key}' does not exist in the tree.`);\n return;\n }\n\n const { subNodes = [], parentPos, node } = keyNodes[key];\n if (isCheckDisabled(node)) return;\n\n tgtCheckedKeys[key] = true;\n\n // Conduct down\n subNodes\n .filter(sub => !isCheckDisabled(sub.node))\n .forEach((sub) => {\n conductDown(sub.key);\n });\n\n // Conduct up\n if (parentPos !== null) {\n conductUp(posNodes[parentPos].key);\n }\n }\n\n checkedKeys.forEach((key) => {\n conduct(key);\n });\n\n return {\n checkedKeys: Object.keys(tgtCheckedKeys),\n halfCheckedKeys: Object.keys(tgtHalfCheckedKeys)\n .filter(key => !tgtCheckedKeys[key]),\n };\n}\n\n/**\n * Calculate the value of checked and halfChecked keys.\n * This should be only run in init or props changed.\n */\nexport function calcCheckedKeys(keys, props) {\n const { checkable, children, checkStrictly } = props;\n\n if (!checkable || !keys) {\n return null;\n }\n\n // Convert keys to object format\n let keyProps;\n if (Array.isArray(keys)) {\n // [Legacy] Follow the api doc\n keyProps = {\n checkedKeys: keys,\n halfCheckedKeys: undefined,\n };\n } else if (typeof keys === 'object') {\n keyProps = {\n checkedKeys: keys.checked || undefined,\n halfCheckedKeys: keys.halfChecked || undefined,\n };\n } else {\n warning(false, '`CheckedKeys` is not an array or an object');\n return null;\n }\n\n // Do nothing if is checkStrictly mode\n if (checkStrictly) {\n return keyProps;\n }\n\n // Conduct calculate the check status\n const { checkedKeys = [] } = keyProps;\n return calcCheckStateConduct(children, checkedKeys);\n}\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","import { Children, isValidElement } from 'react';\r\nexport function toArrayChildren(children) {\r\n const ret = [];\r\n Children.forEach(children, child => {\r\n if (isValidElement(child)) {\r\n ret.push(child);\r\n }\r\n });\r\n return ret;\r\n}\r\nexport function findChildInChildrenByKey(children, key) {\r\n if (children) {\r\n return children.find(child => child && child.key === key);\r\n }\r\n}\r\nexport function findShownChildInChildrenByKey(children, key, hiddenProp) {\r\n let ret;\r\n if (children) {\r\n children.forEach(child => {\r\n if (child && child.key === key && !child.props[hiddenProp]) {\r\n if (ret) {\r\n throw new Error('two child with same key for animate children');\r\n }\r\n ret = child;\r\n }\r\n });\r\n }\r\n return ret;\r\n}\r\n// export function findHiddenChildInChildrenByKey(children, key, showProp):boolean {\r\n// let found = false;\r\n// if (children) {\r\n// children.forEach(function (child) {\r\n// if (found) {\r\n// return;\r\n// }\r\n// found = child && child.key === key && !child.props[showProp];\r\n// });\r\n// }\r\n// return found;\r\n// }\r\nexport function isSameChildren(c1, c2, hiddenProp) {\r\n let same = c1.length === c2.length;\r\n if (same) {\r\n c1.forEach((child, index) => {\r\n const child2 = c2[index];\r\n if (child && child2) {\r\n if ((child && !child2) || (!child && child2)) {\r\n same = false;\r\n }\r\n else if (child.key !== child2.key) {\r\n same = false;\r\n }\r\n else if (hiddenProp && child.props[hiddenProp] !== child2.props[hiddenProp]) {\r\n same = false;\r\n }\r\n }\r\n });\r\n }\r\n return same;\r\n}\r\nexport function mergeChildren(prev, next) {\r\n let ret = [];\r\n const nextChildrenPending = {};\r\n let pendingChildren = [];\r\n prev.forEach(child => {\r\n if (child && child.key && findChildInChildrenByKey(next, child.key)) {\r\n if (pendingChildren.length) {\r\n nextChildrenPending[child.key] = pendingChildren;\r\n pendingChildren = [];\r\n }\r\n }\r\n else {\r\n pendingChildren.push(child);\r\n }\r\n });\r\n next.forEach(child => {\r\n if (child && child.key && {}.hasOwnProperty.call(nextChildrenPending, child.key)) {\r\n ret = ret.concat(nextChildrenPending[child.key]);\r\n }\r\n ret.push(child);\r\n });\r\n return ret.concat(pendingChildren);\r\n}\r\n","export default {\r\n isAppearSupported(props) {\r\n return props.transitionName && props.transitionAppear || props.animation.appear;\r\n },\r\n isEnterSupported(props) {\r\n return props.transitionName && props.transitionEnter || props.animation.enter;\r\n },\r\n isLeaveSupported(props) {\r\n return props.transitionName && props.transitionLeave || props.animation.leave;\r\n },\r\n allowAppearCallback(props) {\r\n return props.transitionAppear || props.animation.appear;\r\n },\r\n allowEnterCallback(props) {\r\n return props.transitionEnter || props.animation.enter;\r\n },\r\n allowLeaveCallback(props) {\r\n return props.transitionLeave || props.animation.leave;\r\n },\r\n};\r\n","import { cloneElement, Component, isValidElement } from 'react';\r\nimport { findDOMNode } from 'react-dom';\r\nimport omit from 'lodash/omit';\r\nimport PropTypes from 'prop-types';\r\nimport cssAnimate, { isCssAnimationSupported } from 'css-animation';\r\nimport animUtil from './util';\r\nconst transitionMap = {\r\n enter: 'transitionEnter',\r\n appear: 'transitionAppear',\r\n leave: 'transitionLeave',\r\n};\r\nexport default class AnimateChild extends Component {\r\n componentWillUnmount() {\r\n this.stop();\r\n }\r\n componentWillEnter(done) {\r\n if (animUtil.isEnterSupported(this.props)) {\r\n this.transition('enter', done);\r\n }\r\n else {\r\n done(this);\r\n }\r\n }\r\n componentWillAppear(done) {\r\n if (animUtil.isAppearSupported(this.props)) {\r\n this.transition('appear', done);\r\n }\r\n else {\r\n done(this);\r\n }\r\n }\r\n componentWillLeave(done) {\r\n if (animUtil.isLeaveSupported(this.props)) {\r\n this.transition('leave', done);\r\n }\r\n else {\r\n done(this);\r\n }\r\n }\r\n transition(animationType, finishCallback) {\r\n const node = findDOMNode(this);\r\n if (node) {\r\n const { props } = this;\r\n const { transitionName, animation = {} } = props;\r\n const nameIsObj = typeof transitionName === 'object';\r\n this.stop();\r\n const end = () => {\r\n this.stopper = null;\r\n finishCallback(this);\r\n };\r\n if ((isCssAnimationSupported || !animation[animationType]) &&\r\n transitionName &&\r\n props[transitionMap[animationType]]) {\r\n const name = nameIsObj\r\n ? transitionName[animationType]\r\n : `${transitionName}-${animationType}`;\r\n let activeName = `${name}-active`;\r\n if (nameIsObj && transitionName[`${animationType}Active`]) {\r\n activeName = transitionName[`${animationType}Active`];\r\n }\r\n this.stopper = cssAnimate(node, {\r\n name,\r\n active: activeName,\r\n }, end);\r\n }\r\n else {\r\n this.stopper = animation[animationType](node, end);\r\n }\r\n }\r\n }\r\n stop() {\r\n const { stopper } = this;\r\n if (stopper) {\r\n this.stopper = null;\r\n stopper.stop();\r\n }\r\n }\r\n render() {\r\n const { children, ...otherProps } = this.props;\r\n if (isValidElement(children)) {\r\n const props = omit(otherProps, [\r\n 'animation',\r\n 'transitionName',\r\n 'transitionEnter',\r\n 'transitionAppear',\r\n 'transitionLeave',\r\n ]);\r\n const { style } = children.props;\r\n return cloneElement(children, { ...props, style: { ...props.style, ...style } });\r\n }\r\n return children;\r\n }\r\n}\r\nAnimateChild.displayName = 'AnimateChild';\r\nAnimateChild.propTypes = {\r\n children: PropTypes.any,\r\n transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n animation: PropTypes.any,\r\n};\r\n","import { cloneElement, Component, createElement, isValidElement, } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport noop from 'lodash/noop';\r\nimport { findChildInChildrenByKey, findShownChildInChildrenByKey, isSameChildren, mergeChildren, toArrayChildren, } from './ChildrenUtils';\r\nimport AnimateChild from './AnimateChild';\r\nimport animUtil from './util';\r\nconst defaultKey = `animate_${Date.now()}`;\r\nfunction getChildrenFromProps(props) {\r\n const { children } = props;\r\n if (isValidElement(children)) {\r\n if (!children.key) {\r\n return cloneElement(children, {\r\n key: defaultKey,\r\n });\r\n }\r\n }\r\n return children;\r\n}\r\nexport default class Animate extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.currentlyAnimatingKeys = {};\r\n this.keysToEnter = [];\r\n this.keysToLeave = [];\r\n this.state = {\r\n children: toArrayChildren(getChildrenFromProps(this.props)),\r\n };\r\n this.childrenRefs = {};\r\n this.performEnter = (key) => {\r\n const childRef = this.childrenRefs[key];\r\n if (childRef) {\r\n this.currentlyAnimatingKeys[key] = true;\r\n childRef.componentWillEnter(this.handleDoneAdding.bind(this, key, 'enter'));\r\n }\r\n };\r\n this.performAppear = (key) => {\r\n const childRef = this.childrenRefs[key];\r\n if (childRef) {\r\n this.currentlyAnimatingKeys[key] = true;\r\n childRef.componentWillAppear(this.handleDoneAdding.bind(this, key, 'appear'));\r\n }\r\n };\r\n this.handleDoneAdding = (key, type, childRef) => {\r\n const { props } = this;\r\n const { exclusive, onAppear = noop, onEnd = noop, onEnter = noop } = props;\r\n delete this.currentlyAnimatingKeys[key];\r\n if (exclusive && props !== this.nextProps) {\r\n return;\r\n }\r\n if (!this.isValidChildByKey(toArrayChildren(getChildrenFromProps(props)), key)) {\r\n this.performLeave(key);\r\n }\r\n else if (type === 'appear') {\r\n if (animUtil.allowAppearCallback(props)) {\r\n onAppear(key, childRef);\r\n onEnd(key, true, childRef);\r\n }\r\n }\r\n else if (animUtil.allowEnterCallback(props)) {\r\n onEnter(key, childRef);\r\n onEnd(key, true, childRef);\r\n }\r\n };\r\n this.performLeave = (key) => {\r\n const childRef = this.childrenRefs[key];\r\n if (childRef) {\r\n this.currentlyAnimatingKeys[key] = true;\r\n childRef.componentWillLeave(this.handleDoneLeaving.bind(this, key));\r\n }\r\n };\r\n this.handleDoneLeaving = (key, childRef) => {\r\n const { props, state: { children }, } = this;\r\n const { exclusive, onEnd = noop, onLeave = noop, hiddenProp } = props;\r\n delete this.currentlyAnimatingKeys[key];\r\n if (exclusive && props !== this.nextProps) {\r\n return;\r\n }\r\n const currentChildren = toArrayChildren(getChildrenFromProps(props));\r\n if (this.isValidChildByKey(currentChildren, key)) {\r\n this.performEnter(key);\r\n }\r\n else {\r\n const end = () => {\r\n if (animUtil.allowLeaveCallback(props)) {\r\n onLeave(key, childRef);\r\n onEnd(key, false, childRef);\r\n }\r\n };\r\n if (!isSameChildren(children, currentChildren, hiddenProp)) {\r\n this.setState({\r\n children: currentChildren,\r\n }, end);\r\n }\r\n else {\r\n end();\r\n }\r\n }\r\n };\r\n }\r\n componentDidMount() {\r\n const { hiddenProp } = this.props;\r\n let { children } = this.state;\r\n if (hiddenProp) {\r\n children = children.filter(child => !child.props[hiddenProp]);\r\n }\r\n children.forEach(child => {\r\n if (child && child.key) {\r\n this.performAppear(child.key);\r\n }\r\n });\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n this.nextProps = nextProps;\r\n const nextChildren = toArrayChildren(getChildrenFromProps(nextProps));\r\n const { exclusive, hiddenProp } = this.props;\r\n const { children } = this.state;\r\n const currentlyAnimatingKeys = this.currentlyAnimatingKeys;\r\n if (exclusive) {\r\n Object.keys(currentlyAnimatingKeys).forEach(key => this.stop(key));\r\n }\r\n const currentChildren = exclusive\r\n ? toArrayChildren(getChildrenFromProps(this.props))\r\n : children;\r\n let newChildren = [];\r\n if (hiddenProp) {\r\n nextChildren.forEach(nextChild => {\r\n if (nextChild) {\r\n let newChild;\r\n const currentChild = findChildInChildrenByKey(currentChildren, nextChild.key);\r\n if (nextChild.props[hiddenProp] && currentChild && !currentChild.props[hiddenProp]) {\r\n newChild = cloneElement(nextChild, { [hiddenProp]: false });\r\n }\r\n else {\r\n newChild = nextChild;\r\n }\r\n if (newChild) {\r\n newChildren.push(newChild);\r\n }\r\n }\r\n });\r\n newChildren = mergeChildren(currentChildren, newChildren);\r\n }\r\n else {\r\n newChildren = mergeChildren(currentChildren, nextChildren);\r\n }\r\n this.setState({\r\n children: newChildren,\r\n });\r\n nextChildren.forEach(child => {\r\n const key = child && child.key;\r\n if (key) {\r\n if (child && currentlyAnimatingKeys[key]) {\r\n return;\r\n }\r\n const hasPrev = child && findChildInChildrenByKey(currentChildren, key);\r\n if (hiddenProp) {\r\n const showInNext = !child.props[hiddenProp];\r\n if (hasPrev) {\r\n const showInNow = findShownChildInChildrenByKey(currentChildren, key, hiddenProp);\r\n if (!showInNow && showInNext) {\r\n this.keysToEnter.push(key);\r\n }\r\n }\r\n else if (showInNext) {\r\n this.keysToEnter.push(key);\r\n }\r\n }\r\n else if (!hasPrev) {\r\n this.keysToEnter.push(key);\r\n }\r\n }\r\n });\r\n currentChildren.forEach(child => {\r\n const key = child && child.key;\r\n if (key) {\r\n if (child && currentlyAnimatingKeys[key]) {\r\n return;\r\n }\r\n const hasNext = child && findChildInChildrenByKey(nextChildren, key);\r\n if (hiddenProp) {\r\n const showInNow = !child.props[hiddenProp];\r\n if (hasNext) {\r\n const showInNext = findShownChildInChildrenByKey(nextChildren, key, hiddenProp);\r\n if (!showInNext && showInNow) {\r\n this.keysToLeave.push(key);\r\n }\r\n }\r\n else if (showInNow) {\r\n this.keysToLeave.push(key);\r\n }\r\n }\r\n else if (!hasNext) {\r\n this.keysToLeave.push(key);\r\n }\r\n }\r\n });\r\n }\r\n componentDidUpdate() {\r\n const keysToEnter = this.keysToEnter;\r\n this.keysToEnter = [];\r\n keysToEnter.forEach(this.performEnter);\r\n const keysToLeave = this.keysToLeave;\r\n this.keysToLeave = [];\r\n keysToLeave.forEach(this.performLeave);\r\n }\r\n isValidChildByKey(currentChildren, key) {\r\n const { hiddenProp } = this.props;\r\n if (hiddenProp) {\r\n return !!findShownChildInChildrenByKey(currentChildren, key, hiddenProp);\r\n }\r\n return !!findChildInChildrenByKey(currentChildren, key);\r\n }\r\n stop(key) {\r\n delete this.currentlyAnimatingKeys[key];\r\n const component = this.childrenRefs[key];\r\n if (component) {\r\n component.stop();\r\n }\r\n }\r\n render() {\r\n const { props } = this;\r\n this.nextProps = props;\r\n const { animation, transitionName, transitionEnter, transitionAppear, transitionLeave, component: Cmp, componentProps, ...otherProps } = props;\r\n const { children: stateChildren } = this.state;\r\n let children = [];\r\n if (stateChildren) {\r\n children = stateChildren.map(child => {\r\n if (child === null || child === undefined) {\r\n return child;\r\n }\r\n if (!child.key) {\r\n throw new Error('must set key for animate children');\r\n }\r\n return createElement(AnimateChild, {\r\n key: child.key,\r\n ref: node => {\r\n if (child.key) {\r\n this.childrenRefs[child.key] = node;\r\n }\r\n },\r\n animation,\r\n transitionName,\r\n transitionEnter,\r\n transitionAppear,\r\n transitionLeave,\r\n }, child);\r\n });\r\n }\r\n if (Cmp) {\r\n const passedProps = omit(otherProps, [\r\n 'exclusive',\r\n 'onEnd',\r\n 'onEnter',\r\n 'onLeave',\r\n 'onAppear',\r\n 'hiddenProp',\r\n ]);\r\n return createElement(Cmp, {\r\n ...passedProps,\r\n ...componentProps,\r\n }, children);\r\n }\r\n return children[0] || null;\r\n }\r\n}\r\nAnimate.displayName = 'Animate';\r\nAnimate.propTypes = {\r\n component: PropTypes.any,\r\n componentProps: PropTypes.object,\r\n animation: PropTypes.object,\r\n transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n transitionEnter: PropTypes.bool,\r\n transitionAppear: PropTypes.bool,\r\n exclusive: PropTypes.bool,\r\n transitionLeave: PropTypes.bool,\r\n onEnd: PropTypes.func,\r\n onEnter: PropTypes.func,\r\n onLeave: PropTypes.func,\r\n onAppear: PropTypes.func,\r\n hiddenProp: PropTypes.string,\r\n};\r\nAnimate.defaultProps = {\r\n animation: {},\r\n component: 'span',\r\n componentProps: {},\r\n transitionEnter: true,\r\n transitionLeave: true,\r\n transitionAppear: false,\r\n};\r\n","import Animate from './Animate';\r\nexport default Animate;\r\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","import React, { Children } from 'react';\nimport warning from '../../_util/warning';\n\nexport function getKeyFromChildrenIndex(child, menuEventKey, index) {\n const prefix = menuEventKey || '';\n return child.key || `${prefix}item_${index}`;\n}\n\nexport function getMenuIdFromSubMenuEventKey(eventKey) {\n return `${eventKey}-menu-`;\n}\n\nexport function loopMenuItem(children, cb) {\n let index = -1;\n Children.forEach(children, c => {\n index++;\n if (c && c.type && c.type.isMenuItemGroup) {\n Children.forEach(c.props.children, c2 => {\n index++;\n cb(c2, index);\n });\n } else {\n cb(c, index);\n }\n });\n}\n\nexport function loopMenuItemRecursively(children, keys, ret) {\n if (!children || ret.find) {\n return;\n }\n Children.forEach(children, c => {\n if (c) {\n const construct = c.type;\n if (\n !construct ||\n !(construct.isSubMenu || construct.isMenuItem || construct.isMenuItemGroup)\n ) {\n return;\n }\n if (keys.indexOf(c.key) !== -1) {\n ret.find = true;\n } else if (c.props.children) {\n loopMenuItemRecursively(c.props.children, keys, ret);\n }\n }\n });\n}\n\nexport const menuAllProps = [\n 'defaultSelectedKeys',\n 'selectedKeys',\n 'defaultOpenKeys',\n 'openKeys',\n 'mode',\n 'getPopupContainer',\n 'onSelect',\n 'onDeselect',\n 'onDestroy',\n 'openTransitionName',\n 'openAnimation',\n 'subMenuOpenDelay',\n 'subMenuCloseDelay',\n 'forceSubMenuRender',\n 'triggerSubMenuAction',\n 'level',\n 'selectable',\n 'multiple',\n 'onOpenChange',\n 'visible',\n 'focusable',\n 'defaultActiveFirst',\n 'prefixCls',\n 'inlineIndent',\n 'parentMenu',\n 'title',\n 'rootPrefixCls',\n 'eventKey',\n 'active',\n 'onItemHover',\n 'onTitleMouseEnter',\n 'onTitleMouseLeave',\n 'onTitleClick',\n 'popupAlign',\n 'popupOffset',\n 'isOpen',\n 'renderMenuItem',\n 'manualRef',\n 'subMenuKey',\n 'disabled',\n 'index',\n 'isSelected',\n 'store',\n 'activeKey',\n 'builtinPlacements',\n 'overflowedIndicator',\n\n // the following keys found need to be removed from test regression\n 'attribute',\n 'value',\n 'popupClassName',\n 'inlineCollapsed',\n 'menu',\n 'theme',\n 'itemIcon',\n 'expandIcon',\n];\n\nexport const getWidth = elem =>\n (elem &&\n typeof elem.getBoundingClientRect === 'function' &&\n elem.getBoundingClientRect().width) ||\n 0;\n\nexport const setStyle = (elem, styleProperty, value) => {\n if (elem && typeof elem.style === 'object') {\n elem.style[styleProperty] = value;\n }\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\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","/* eslint-disable camelcase */\r\nimport addDOMEventListener from 'add-dom-event-listener';\r\nimport { unstable_batchedUpdates } from 'react-dom';\r\nexport default function addEventListenerWrap(target, eventType, cb) {\r\n const callback = unstable_batchedUpdates\r\n ? function run(e) {\r\n unstable_batchedUpdates(cb, e);\r\n }\r\n : cb;\r\n return addDOMEventListener(target, eventType, callback);\r\n}\r\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.create = exports.connect = exports.Provider = undefined;\n\nvar _Provider2 = require('./Provider');\n\nvar _Provider3 = _interopRequireDefault(_Provider2);\n\nvar _connect2 = require('./connect');\n\nvar _connect3 = _interopRequireDefault(_connect2);\n\nvar _create2 = require('./create');\n\nvar _create3 = _interopRequireDefault(_create2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Provider = _Provider3.default;\nexports.connect = _connect3.default;\nexports.create = _create3.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\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","/**\n * Module dependencies.\n */\n\ntry {\n var index = require('indexof');\n} catch (err) {\n var index = require('component-indexof');\n}\n\n/**\n * Whitespace regexp.\n */\n\nvar re = /\\s+/;\n\n/**\n * toString reference.\n */\n\nvar toString = Object.prototype.toString;\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\n\nmodule.exports = function(el){\n return new ClassList(el);\n};\n\n/**\n * Initialize a new ClassList for `el`.\n *\n * @param {Element} el\n * @api private\n */\n\nfunction ClassList(el) {\n if (!el || !el.nodeType) {\n throw new Error('A DOM element reference is required');\n }\n this.el = el;\n this.list = el.classList;\n}\n\n/**\n * Add class `name` if not already present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.add = function(name){\n // classList\n if (this.list) {\n this.list.add(name);\n return this;\n }\n\n // fallback\n var arr = this.array();\n var i = index(arr, name);\n if (!~i) arr.push(name);\n this.el.className = arr.join(' ');\n return this;\n};\n\n/**\n * Remove class `name` when present, or\n * pass a regular expression to remove\n * any which match.\n *\n * @param {String|RegExp} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.remove = function(name){\n if ('[object RegExp]' == toString.call(name)) {\n return this.removeMatching(name);\n }\n\n // classList\n if (this.list) {\n this.list.remove(name);\n return this;\n }\n\n // fallback\n var arr = this.array();\n var i = index(arr, name);\n if (~i) arr.splice(i, 1);\n this.el.className = arr.join(' ');\n return this;\n};\n\n/**\n * Remove all classes matching `re`.\n *\n * @param {RegExp} re\n * @return {ClassList}\n * @api private\n */\n\nClassList.prototype.removeMatching = function(re){\n var arr = this.array();\n for (var i = 0; i < arr.length; i++) {\n if (re.test(arr[i])) {\n this.remove(arr[i]);\n }\n }\n return this;\n};\n\n/**\n * Toggle class `name`, can force state via `force`.\n *\n * For browsers that support classList, but do not support `force` yet,\n * the mistake will be detected and corrected.\n *\n * @param {String} name\n * @param {Boolean} force\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.toggle = function(name, force){\n // classList\n if (this.list) {\n if (\"undefined\" !== typeof force) {\n if (force !== this.list.toggle(name, force)) {\n this.list.toggle(name); // toggle again to correct\n }\n } else {\n this.list.toggle(name);\n }\n return this;\n }\n\n // fallback\n if (\"undefined\" !== typeof force) {\n if (!force) {\n this.remove(name);\n } else {\n this.add(name);\n }\n } else {\n if (this.has(name)) {\n this.remove(name);\n } else {\n this.add(name);\n }\n }\n\n return this;\n};\n\n/**\n * Return an array of classes.\n *\n * @return {Array}\n * @api public\n */\n\nClassList.prototype.array = function(){\n var className = this.el.getAttribute('class') || '';\n var str = className.replace(/^\\s+|\\s+$/g, '');\n var arr = str.split(re);\n if ('' === arr[0]) arr.shift();\n return arr;\n};\n\n/**\n * Check if class `name` is present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.has =\nClassList.prototype.contains = function(name){\n return this.list\n ? this.list.contains(name)\n : !! ~index(this.array(), name);\n};\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","let scrollbarWidth;\r\nlet rootFontSize = 100;\r\nfunction getRootFontSize() {\r\n if (typeof window !== 'undefined' && document.defaultView) {\r\n const { fontSize } = document.defaultView.getComputedStyle(document.documentElement);\r\n if (fontSize !== null) {\r\n return parseFloat(fontSize);\r\n }\r\n }\r\n return 100;\r\n}\r\nexport default function measureScrollbar(direction = 'vertical') {\r\n if (typeof window === 'undefined') {\r\n return 0;\r\n }\r\n const fontSize = getRootFontSize();\r\n if (scrollbarWidth && fontSize === rootFontSize) {\r\n return scrollbarWidth;\r\n }\r\n rootFontSize = fontSize;\r\n const scrollDiv = document.createElement('div');\r\n scrollDiv.style.cssText = 'position: absolute;width: 50px;height: 50px;top: -9999px; overflow: scroll';\r\n document.body.appendChild(scrollDiv);\r\n let size = 0;\r\n if (direction === 'vertical') {\r\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\r\n }\r\n else if (direction === 'horizontal') {\r\n size = scrollDiv.offsetHeight - scrollDiv.clientHeight;\r\n }\r\n document.body.removeChild(scrollDiv);\r\n scrollbarWidth = size / fontSize * 100;\r\n return scrollbarWidth;\r\n}\r\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var 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","// 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.9' };\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","export default function contains(root, n) {\n let node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n\n return false;\n}\n","import React, { Children, Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class LazyRenderBox extends Component {\n static propTypes = {\n children: PropTypes.any,\n className: PropTypes.string,\n hidden: PropTypes.bool,\n hiddenClassName: PropTypes.string,\n };\n\n shouldComponentUpdate(nextProps) {\n return nextProps.hiddenClassName || !nextProps.hidden;\n }\n\n render() {\n const { hiddenClassName, hidden, ...props } = this.props;\n\n if (hiddenClassName || Children.count(props.children) > 1) {\n if (hidden && hiddenClassName) {\n props.className += ` ${hiddenClassName}`;\n }\n return <div {...props} />;\n }\n\n return Children.only(props.children);\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LazyRenderBox from './LazyRenderBox';\n\nexport default class PopupInner extends Component {\n static propTypes = {\n hiddenClassName: PropTypes.string,\n className: PropTypes.string,\n prefixCls: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n children: PropTypes.any,\n };\n\n render() {\n const props = this.props;\n let className = props.className;\n if (props.hidden) {\n className += ` ${props.hiddenClassName}`;\n }\n return (\n <div\n className={className}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n style={props.style}\n >\n <LazyRenderBox className={`${props.prefixCls}-content`} hidden={props.hidden}>\n {props.children}\n </LazyRenderBox>\n </div>\n );\n }\n}\n","function isPointsEq(a1, a2) {\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n const baseAlign = builtinPlacements[placementStr] || {};\n return {\n ...baseAlign,\n ...align,\n };\n}\n\nexport function getPopupClassNameFromAlign(builtinPlacements, prefixCls, align) {\n const points = align.points;\n for (const placement in builtinPlacements) {\n if (builtinPlacements.hasOwnProperty(placement)) {\n if (isPointsEq(builtinPlacements[placement].points, points)) {\n return `${prefixCls}-placement-${placement}`;\n }\n }\n }\n return '';\n}\n\nexport function saveRef(name, component) {\n this[name] = component;\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Align from '../../align';\nimport Animate from '../../animate';\nimport PopupInner from './PopupInner';\nimport LazyRenderBox from './LazyRenderBox';\nimport { saveRef } from './utils';\n\nclass Popup extends Component {\n static propTypes = {\n visible: PropTypes.bool,\n style: PropTypes.object,\n getClassNameFromAlign: PropTypes.func,\n onAlign: PropTypes.func,\n getRootDomNode: PropTypes.func,\n onMouseEnter: PropTypes.func,\n align: PropTypes.any,\n destroyPopupOnHide: PropTypes.bool,\n className: PropTypes.string,\n prefixCls: PropTypes.string,\n onMouseLeave: PropTypes.func,\n stretch: PropTypes.string,\n children: PropTypes.node,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n // Used for stretch\n stretchChecked: false,\n targetWidth: undefined,\n targetHeight: undefined,\n };\n\n this.savePopupRef = saveRef.bind(this, 'popupInstance');\n this.saveAlignRef = saveRef.bind(this, 'alignInstance');\n }\n\n componentDidMount() {\n this.rootNode = this.getPopupDomNode();\n this.setStretchSize();\n }\n\n componentDidUpdate() {\n this.setStretchSize();\n }\n\n onAlign = (popupDomNode, align) => {\n const props = this.props;\n const currentAlignClassName = props.getClassNameFromAlign(align);\n // FIX: https://github.com/react-component/trigger/issues/56\n // FIX: https://github.com/react-component/tooltip/issues/79\n if (this.currentAlignClassName !== currentAlignClassName) {\n this.currentAlignClassName = currentAlignClassName;\n popupDomNode.className = this.getClassName(currentAlignClassName);\n }\n props.onAlign(popupDomNode, align);\n };\n\n // Record size if stretch needed\n setStretchSize = () => {\n const { stretch, getRootDomNode, visible } = this.props;\n const { stretchChecked, targetHeight, targetWidth } = this.state;\n\n if (!stretch || !visible) {\n if (stretchChecked) {\n this.setState({ stretchChecked: false });\n }\n return;\n }\n\n const $ele = getRootDomNode();\n if (!$ele) return;\n\n const height = $ele.offsetHeight;\n const width = $ele.offsetWidth;\n\n if (targetHeight !== height || targetWidth !== width || !stretchChecked) {\n this.setState({\n stretchChecked: true,\n targetHeight: height,\n targetWidth: width,\n });\n }\n };\n\n getPopupDomNode() {\n return ReactDOM.findDOMNode(this.popupInstance);\n }\n\n getTarget = () => {\n return this.props.getRootDomNode();\n };\n\n getMaskTransitionName() {\n const props = this.props;\n let transitionName = props.maskTransitionName;\n const animation = props.maskAnimation;\n if (!transitionName && animation) {\n transitionName = `${props.prefixCls}-${animation}`;\n }\n return transitionName;\n }\n\n getTransitionName() {\n const props = this.props;\n let transitionName = props.transitionName;\n if (!transitionName && props.animation) {\n transitionName = `${props.prefixCls}-${props.animation}`;\n }\n return transitionName;\n }\n\n getClassName(currentAlignClassName) {\n return `${this.props.prefixCls} ${this.props.className} ${currentAlignClassName}`;\n }\n\n getPopupElement() {\n const { savePopupRef } = this;\n const { stretchChecked, targetHeight, targetWidth } = this.state;\n const {\n align, visible,\n prefixCls, style, getClassNameFromAlign,\n destroyPopupOnHide, stretch, children,\n onMouseEnter, onMouseLeave,\n } = this.props;\n const className = this.getClassName(this.currentAlignClassName ||\n getClassNameFromAlign(align));\n const hiddenClassName = `${prefixCls}-hidden`;\n\n if (!visible) {\n this.currentAlignClassName = null;\n }\n\n const sizeStyle = {};\n if (stretch) {\n if (stretchChecked) {\n // Stretch with target\n if (stretch.indexOf('height') !== -1) {\n sizeStyle.height = targetHeight;\n } else if (stretch.indexOf('minHeight') !== -1) {\n sizeStyle.minHeight = targetHeight;\n }\n if (stretch.indexOf('width') !== -1) {\n sizeStyle.width = targetWidth;\n } else if (stretch.indexOf('minWidth') !== -1) {\n sizeStyle.minWidth = targetWidth;\n }\n } else {\n // Do nothing when stretch not ready\n return null;\n }\n }\n\n const newStyle = {\n ...sizeStyle,\n ...style,\n ...this.getZIndexStyle(),\n };\n\n const popupInnerProps = {\n className,\n prefixCls,\n ref: savePopupRef,\n onMouseEnter,\n onMouseLeave,\n style: newStyle,\n };\n if (destroyPopupOnHide) {\n return (\n <Animate\n component=\"\"\n exclusive\n transitionAppear\n transitionName={this.getTransitionName()}\n >\n {visible ? (\n <Align\n target={this.getTarget}\n key=\"popup\"\n ref={this.saveAlignRef}\n monitorWindowResize\n hidden={!visible}\n childrenProps={{ hidden: 'hidden' }}\n align={align}\n onAlign={this.onAlign}\n >\n <PopupInner\n {...popupInnerProps}\n >\n {children}\n </PopupInner>\n </Align>\n ) : null}\n </Animate>\n );\n }\n return (\n <Animate\n component=\"\"\n exclusive\n transitionAppear\n transitionName={this.getTransitionName()}\n hiddenProp=\"hidden\"\n >\n <Align\n target={this.getTarget}\n key=\"popup\"\n ref={this.saveAlignRef}\n monitorWindowResize\n hidden={!visible}\n childrenProps={{ hidden: 'hidden' }}\n disabled={!visible}\n align={align}\n onAlign={this.onAlign}\n >\n <PopupInner\n hiddenClassName={hiddenClassName}\n {...popupInnerProps}\n >\n {children}\n </PopupInner>\n </Align>\n </Animate>\n );\n }\n\n getZIndexStyle() {\n const style = {};\n const props = this.props;\n if (props.zIndex !== undefined) {\n style.zIndex = props.zIndex;\n }\n return style;\n }\n\n getMaskElement() {\n const props = this.props;\n let maskElement;\n if (props.mask) {\n const maskTransition = this.getMaskTransitionName();\n maskElement = (\n <LazyRenderBox\n style={this.getZIndexStyle()}\n key=\"mask\"\n className={`${props.prefixCls}-mask`}\n hiddenClassName={`${props.prefixCls}-mask-hidden`}\n hidden={!props.visible}\n />\n );\n if (maskTransition) {\n maskElement = (\n <Animate\n key=\"mask\"\n hiddenProp=\"hidden\"\n transitionAppear\n component=\"\"\n transitionName={maskTransition}\n >\n {maskElement}\n </Animate>\n );\n }\n }\n return maskElement;\n }\n\n render() {\n return (\n <div>\n {this.getMaskElement()}\n {this.getPopupElement()}\n </div>\n );\n }\n}\n\nexport default Popup;\n","import React, { Children, cloneElement, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal, findDOMNode } from 'react-dom';\nimport noop from 'lodash/noop';\nimport contains from '../util/Dom/contains';\nimport addEventListener from '../../_util/addEventListener';\nimport Popup from './Popup';\nimport { getAlignFromPlacement, getPopupClassNameFromAlign } from './utils';\nimport ContainerRender from '../util/ContainerRender';\nimport Portal from '../util/Portal';\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument() {\n return window.document;\n}\n\nconst ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter',\n 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n\nconst IS_REACT_16 = !!createPortal;\n\nexport default class Trigger extends Component {\n static propTypes = {\n children: PropTypes.any,\n action: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n showAction: PropTypes.any,\n hideAction: PropTypes.any,\n getPopupClassNameFromAlign: PropTypes.any,\n onPopupVisibleChange: PropTypes.func,\n afterPopupVisibleChange: PropTypes.func,\n popup: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.func,\n ]).isRequired,\n popupStyle: PropTypes.object,\n prefixCls: PropTypes.string,\n popupClassName: PropTypes.string,\n popupPlacement: PropTypes.string,\n builtinPlacements: PropTypes.object,\n popupTransitionName: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n popupAnimation: PropTypes.any,\n mouseEnterDelay: PropTypes.number,\n mouseLeaveDelay: PropTypes.number,\n zIndex: PropTypes.number,\n focusDelay: PropTypes.number,\n blurDelay: PropTypes.number,\n getPopupContainer: PropTypes.func,\n getDocument: PropTypes.func,\n getRootDomNode: PropTypes.func,\n forceRender: PropTypes.bool,\n destroyPopupOnHide: PropTypes.bool,\n mask: PropTypes.bool,\n maskClosable: PropTypes.bool,\n onPopupAlign: PropTypes.func,\n popupAlign: PropTypes.object,\n popupVisible: PropTypes.bool,\n defaultPopupVisible: PropTypes.bool,\n maskTransitionName: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n maskAnimation: PropTypes.string,\n stretch: PropTypes.string,\n };\n\n static defaultProps = {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: [],\n };\n\n constructor(props) {\n super(props);\n\n let popupVisible;\n if ('popupVisible' in props) {\n popupVisible = !!props.popupVisible;\n } else {\n popupVisible = !!props.defaultPopupVisible;\n }\n\n this.prevPopupVisible = popupVisible;\n\n this.state = {\n popupVisible,\n };\n }\n\n componentWillMount() {\n ALL_HANDLERS.forEach((h) => {\n this[`fire${h}`] = (e) => {\n this.fireEvents(h, e);\n };\n });\n }\n\n componentDidMount() {\n this.componentDidUpdate({}, {\n popupVisible: this.state.popupVisible,\n });\n }\n\n componentWillReceiveProps({ popupVisible }) {\n if (popupVisible !== undefined) {\n this.setState({\n popupVisible,\n });\n }\n }\n\n componentDidUpdate(_, prevState) {\n const props = this.props;\n const state = this.state;\n const triggerAfterPopupVisibleChange = () => {\n if (prevState.popupVisible !== state.popupVisible) {\n props.afterPopupVisibleChange(state.popupVisible);\n }\n };\n if (!IS_REACT_16) {\n this.renderComponent(null, triggerAfterPopupVisibleChange);\n }\n\n this.prevPopupVisible = prevState.popupVisible;\n\n // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n if (state.popupVisible) {\n let currentDocument;\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n currentDocument = props.getDocument();\n this.clickOutsideHandler = addEventListener(currentDocument,\n 'mousedown', this.onDocumentClick);\n }\n // always hide on mobile\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument();\n this.touchOutsideHandler = addEventListener(currentDocument,\n 'touchstart', this.onDocumentClick);\n }\n // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n currentDocument = currentDocument || props.getDocument();\n this.contextMenuOutsideHandler1 = addEventListener(currentDocument,\n 'scroll', this.onContextMenuClose);\n }\n // close popup when trigger type contains 'onContextMenu' and window is blur.\n if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n this.contextMenuOutsideHandler2 = addEventListener(window,\n 'blur', this.onContextMenuClose);\n }\n return;\n }\n\n this.clearOutsideHandler();\n }\n\n componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n }\n\n onMouseEnter = (e) => {\n this.fireEvents('onMouseEnter', e);\n this.delaySetPopupVisible(true, this.props.mouseEnterDelay);\n };\n\n onMouseLeave = (e) => {\n this.fireEvents('onMouseLeave', e);\n this.delaySetPopupVisible(false, this.props.mouseLeaveDelay);\n };\n\n onPopupMouseEnter = () => {\n this.clearDelayTimer();\n };\n\n onPopupMouseLeave = (e) => {\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout &&\n this._component &&\n this._component.getPopupDomNode &&\n contains(this._component.getPopupDomNode(), e.relatedTarget)) {\n return;\n }\n this.delaySetPopupVisible(false, this.props.mouseLeaveDelay);\n };\n\n onFocus = (e) => {\n this.fireEvents('onFocus', e);\n // incase focusin and focusout\n this.clearDelayTimer();\n if (this.isFocusToShow()) {\n this.focusTime = Date.now();\n this.delaySetPopupVisible(true, this.props.focusDelay);\n }\n };\n\n onMouseDown = (e) => {\n this.fireEvents('onMouseDown', e);\n this.preClickTime = Date.now();\n };\n\n onTouchStart = (e) => {\n this.fireEvents('onTouchStart', e);\n this.preTouchTime = Date.now();\n };\n\n onBlur = (e) => {\n this.fireEvents('onBlur', e);\n this.clearDelayTimer();\n if (this.isBlurToHide()) {\n this.delaySetPopupVisible(false, this.props.blurDelay);\n }\n };\n\n onContextMenu = (e) => {\n e.preventDefault();\n this.fireEvents('onContextMenu', e);\n this.setPopupVisible(true);\n };\n\n onContextMenuClose = () => {\n if (this.isContextMenuToShow()) {\n this.close();\n }\n };\n\n onClick = (event) => {\n this.fireEvents('onClick', event);\n // focus will trigger click\n if (this.focusTime) {\n let preTime;\n if (this.preClickTime && this.preTouchTime) {\n preTime = Math.min(this.preClickTime, this.preTouchTime);\n } else if (this.preClickTime) {\n preTime = this.preClickTime;\n } else if (this.preTouchTime) {\n preTime = this.preTouchTime;\n }\n if (Math.abs(preTime - this.focusTime) < 20) {\n return;\n }\n this.focusTime = 0;\n }\n this.preClickTime = 0;\n this.preTouchTime = 0;\n event.preventDefault();\n const nextVisible = !this.state.popupVisible;\n if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) {\n this.setPopupVisible(!this.state.popupVisible);\n }\n };\n\n onDocumentClick = (event) => {\n if (this.props.mask && !this.props.maskClosable) {\n return;\n }\n const target = event.target;\n const root = findDOMNode(this);\n const popupNode = this.getPopupDomNode();\n if (!contains(root, target) && !contains(popupNode, target)) {\n this.close();\n }\n };\n\n getPopupDomNode() {\n // for test\n if (this._component && this._component.getPopupDomNode) {\n return this._component.getPopupDomNode();\n }\n return null;\n }\n\n getRootDomNode = () => {\n const { getRootDomNode } = this.props;\n if (getRootDomNode) {\n return getRootDomNode();\n } else {\n return findDOMNode(this);\n }\n };\n\n getPopupClassFromAlign = (align) => {\n const className = [];\n const props = this.props;\n const { popupPlacement, builtinPlacements, prefixCls } = props;\n if (popupPlacement && builtinPlacements) {\n className.push(getPopupClassNameFromAlign(builtinPlacements, prefixCls, align));\n }\n if (props.getPopupClassNameFromAlign) {\n className.push(props.getPopupClassNameFromAlign(align));\n }\n return className.join(' ');\n };\n\n getPopupAlign() {\n const props = this.props;\n const { popupPlacement, popupAlign, builtinPlacements } = props;\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n return popupAlign;\n }\n\n getComponent = () => {\n const {\n prefixCls, destroyPopupOnHide, popupClassName, action,\n onPopupAlign, popupAnimation, popupTransitionName, popupStyle,\n mask, maskAnimation, maskTransitionName, zIndex, popup, stretch,\n } = this.props;\n const { state } = this;\n\n const align = this.getPopupAlign();\n\n const mouseProps = {};\n if (this.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = this.onPopupMouseEnter;\n }\n if (this.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = this.onPopupMouseLeave;\n }\n\n return (\n <Popup\n prefixCls={prefixCls}\n destroyPopupOnHide={destroyPopupOnHide}\n visible={state.popupVisible}\n className={popupClassName}\n action={action}\n align={align}\n onAlign={onPopupAlign}\n animation={popupAnimation}\n getClassNameFromAlign={this.getPopupClassFromAlign}\n {...mouseProps}\n stretch={stretch}\n getRootDomNode={this.getRootDomNode}\n style={popupStyle}\n mask={mask}\n zIndex={zIndex}\n transitionName={popupTransitionName}\n maskAnimation={maskAnimation}\n maskTransitionName={maskTransitionName}\n ref={this.savePopup}\n >\n {typeof popup === 'function' ? popup() : popup}\n </Popup>\n );\n };\n\n getContainer = () => {\n const { props } = this;\n const popupContainer = document.createElement('div');\n // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n const mountNode = props.getPopupContainer ? props.getPopupContainer(findDOMNode(this)) : props.getDocument().body;\n mountNode.appendChild(popupContainer);\n return popupContainer;\n };\n\n setPopupVisible(popupVisible) {\n this.clearDelayTimer();\n if (this.state.popupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({\n popupVisible,\n });\n }\n this.props.onPopupVisibleChange(popupVisible);\n }\n }\n\n handlePortalUpdate = () => {\n if (this.prevPopupVisible !== this.state.popupVisible) {\n this.props.afterPopupVisibleChange(this.state.popupVisible);\n }\n };\n\n delaySetPopupVisible(visible, delayS) {\n const delay = delayS * 1000;\n this.clearDelayTimer();\n if (delay) {\n this.delayTimer = setTimeout(() => {\n this.setPopupVisible(visible);\n this.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible);\n }\n }\n\n clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n\n clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextMenuOutsideHandler1) {\n this.contextMenuOutsideHandler1.remove();\n this.contextMenuOutsideHandler1 = null;\n }\n\n if (this.contextMenuOutsideHandler2) {\n this.contextMenuOutsideHandler2.remove();\n this.contextMenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n }\n\n createTwoChains(event) {\n const childPros = this.props.children.props;\n const props = this.props;\n if (childPros[event] && props[event]) {\n return this[`fire${event}`];\n }\n return childPros[event] || props[event];\n }\n\n isClickToShow() {\n const { action, showAction } = this.props;\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n }\n\n isContextMenuToShow() {\n const { action, showAction } = this.props;\n return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n }\n\n isClickToHide() {\n const { action, hideAction } = this.props;\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n }\n\n isMouseEnterToShow() {\n const { action, showAction } = this.props;\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n }\n\n isMouseLeaveToHide() {\n const { action, hideAction } = this.props;\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n }\n\n isFocusToShow() {\n const { action, showAction } = this.props;\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n }\n\n isBlurToHide() {\n const { action, hideAction } = this.props;\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n }\n\n forcePopupAlign() {\n if (this.state.popupVisible && this._component && this._component.alignInstance) {\n this._component.alignInstance.forceAlign();\n }\n }\n\n fireEvents(type, e) {\n const childCallback = this.props.children.props[type];\n if (childCallback) {\n childCallback(e);\n }\n const callback = this.props[type];\n if (callback) {\n callback(e);\n }\n }\n\n close() {\n this.setPopupVisible(false);\n }\n\n savePopup = (node) => {\n this._component = node;\n };\n\n render() {\n const { popupVisible } = this.state;\n const props = this.props;\n const children = props.children;\n const child = Children.only(children);\n const newChildProps = { key: 'trigger' };\n\n if (this.isContextMenuToShow()) {\n newChildProps.onContextMenu = this.onContextMenu;\n } else {\n newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n }\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n newChildProps.onTouchStart = this.onTouchStart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n }\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter;\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n }\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n }\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n }\n\n const trigger = cloneElement(child, newChildProps);\n\n if (!IS_REACT_16) {\n return (\n <ContainerRender\n parent={this}\n visible={popupVisible}\n autoMount={false}\n forceRender={props.forceRender}\n getComponent={this.getComponent}\n getContainer={this.getContainer}\n >\n {({ renderComponent }) => {\n this.renderComponent = renderComponent;\n return trigger;\n }}\n </ContainerRender>\n );\n }\n\n let portal;\n // prevent unmounting after it's rendered\n if (popupVisible || this._component || props.forceRender) {\n portal = (\n <Portal\n key=\"portal\"\n getContainer={this.getContainer}\n didUpdate={this.handlePortalUpdate}\n >\n {this.getComponent()}\n </Portal>\n );\n }\n\n return [\n trigger,\n portal,\n ];\n }\n}\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\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","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","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var 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","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { create, Provider } from 'mini-store';\nimport noop from 'lodash/noop';\nimport SubPopupMenu, { getActiveKey } from './SubPopupMenu';\n\nexport default class Menu extends Component {\n static displayName = 'Menu';\n\n static propTypes = {\n defaultSelectedKeys: PropTypes.arrayOf(PropTypes.string),\n selectedKeys: PropTypes.arrayOf(PropTypes.string),\n defaultOpenKeys: PropTypes.arrayOf(PropTypes.string),\n openKeys: PropTypes.arrayOf(PropTypes.string),\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']),\n getPopupContainer: PropTypes.func,\n onClick: PropTypes.func,\n onSelect: PropTypes.func,\n onDeselect: PropTypes.func,\n onDestroy: PropTypes.func,\n openTransitionName: PropTypes.string,\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n subMenuOpenDelay: PropTypes.number,\n subMenuCloseDelay: PropTypes.number,\n forceSubMenuRender: PropTypes.bool,\n triggerSubMenuAction: PropTypes.string,\n level: PropTypes.number,\n selectable: PropTypes.bool,\n multiple: PropTypes.bool,\n children: PropTypes.any,\n focusable: PropTypes.bool,\n style: PropTypes.object,\n defaultActiveFirst: PropTypes.bool,\n visible: PropTypes.bool,\n activeKey: PropTypes.string,\n };\n\n static defaultProps = {\n prefixCls: 'rc-menu',\n className: '',\n mode: 'vertical',\n level: 1,\n inlineIndent: 24,\n visible: true,\n focusable: true,\n style: {},\n selectable: true,\n onClick: noop,\n onSelect: noop,\n onOpenChange: noop,\n onDeselect: noop,\n defaultSelectedKeys: [],\n defaultOpenKeys: [],\n subMenuOpenDelay: 0.1,\n subMenuCloseDelay: 0.1,\n triggerSubMenuAction: 'hover',\n };\n\n isRootMenu = true;\n\n constructor(props) {\n super(props);\n let selectedKeys = props.defaultSelectedKeys;\n let openKeys = props.defaultOpenKeys;\n if ('selectedKeys' in props) {\n selectedKeys = props.selectedKeys || [];\n }\n if ('openKeys' in props) {\n openKeys = props.openKeys || [];\n }\n\n this.store = create({\n selectedKeys,\n openKeys,\n activeKey: { '0-menu-': getActiveKey(props, props.activeKey) },\n });\n }\n\n updateMiniStore() {\n if ('selectedKeys' in this.props) {\n this.store.setState({\n selectedKeys: this.props.selectedKeys || [],\n });\n }\n if ('openKeys' in this.props) {\n this.store.setState({\n openKeys: this.props.openKeys || [],\n });\n }\n }\n\n componentDidMount() {\n this.updateMiniStore();\n }\n\n componentDidUpdate() {\n this.updateMiniStore();\n }\n\n onSelect = selectInfo => {\n const props = this.props;\n if (props.selectable) {\n // root menu\n let selectedKeys = this.store.getState().selectedKeys;\n const selectedKey = selectInfo.key;\n if (props.multiple) {\n selectedKeys = selectedKeys.concat([selectedKey]);\n } else {\n selectedKeys = [selectedKey];\n }\n if (!('selectedKeys' in props)) {\n this.store.setState({\n selectedKeys,\n });\n }\n props.onSelect({\n ...selectInfo,\n selectedKeys,\n });\n }\n };\n\n step(direction) {\n return this.innerMenu.getWrappedInstance().step(direction);\n }\n\n onClick = e => {\n this.props.onClick(e);\n };\n\n onKeyDown = (e, callback) => {\n return this.innerMenu.getWrappedInstance().onKeyDown(e, callback);\n };\n\n onOpenChange = event => {\n const props = this.props;\n const openKeys = this.store.getState().openKeys.concat();\n let changed = false;\n const processSingle = e => {\n let oneChanged = false;\n if (e.open) {\n oneChanged = openKeys.indexOf(e.key) === -1;\n if (oneChanged) {\n openKeys.push(e.key);\n }\n } else {\n const index = openKeys.indexOf(e.key);\n oneChanged = index !== -1;\n if (oneChanged) {\n openKeys.splice(index, 1);\n }\n }\n changed = changed || oneChanged;\n };\n if (Array.isArray(event)) {\n // batch change call\n event.forEach(processSingle);\n } else {\n processSingle(event);\n }\n if (changed) {\n if (!('openKeys' in this.props)) {\n this.store.setState({ openKeys });\n }\n props.onOpenChange(openKeys);\n }\n };\n\n onDeselect = selectInfo => {\n const props = this.props;\n if (props.selectable) {\n const selectedKeys = this.store.getState().selectedKeys.concat();\n const selectedKey = selectInfo.key;\n const index = selectedKeys.indexOf(selectedKey);\n if (index !== -1) {\n selectedKeys.splice(index, 1);\n }\n if (!('selectedKeys' in props)) {\n this.store.setState({\n selectedKeys,\n });\n }\n props.onDeselect({\n ...selectInfo,\n selectedKeys,\n });\n }\n };\n\n setInnerMenu = node => {\n this.innerMenu = node;\n };\n\n getStore() {\n const store = this.store || this.props.store;\n\n return store;\n }\n\n getEventKey() {\n return this.props.eventKey || '0-menu-';\n }\n\n getOpenTransitionName() {\n const props = this.props;\n let transitionName = props.openTransitionName;\n const animationName = props.openAnimation;\n if (!transitionName && typeof animationName === 'string') {\n transitionName = `${props.prefixCls}-open-${animationName}`;\n }\n return transitionName;\n }\n\n isInlineMode() {\n return this.props.mode === 'inline';\n }\n\n lastOpenSubMenu() {\n let lastOpen = [];\n const { openKeys } = this.store.getState();\n if (openKeys.length) {\n lastOpen = this.getFlatInstanceArray().filter(c => {\n return c && openKeys.indexOf(c.props.eventKey) !== -1;\n });\n }\n return lastOpen[0];\n }\n\n renderMenuItem(c, i, subIndex, subMenuKey) {\n if (!c) {\n return null;\n }\n const state = this.store.getState();\n const extraProps = {\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n triggerSubMenuAction: this.props.triggerSubMenuAction,\n subMenuKey,\n };\n return this.renderCommonMenuItem(c, i, subIndex, extraProps);\n }\n\n render() {\n let props = { ...this.props };\n props.className += ` ${props.prefixCls}-root`;\n props = {\n ...props,\n onClick: this.onClick,\n onOpenChange: this.onOpenChange,\n onDeselect: this.onDeselect,\n onSelect: this.onSelect,\n parentMenu: this,\n };\n\n // delete props.openAnimation;\n // delete props.openTransitionName;\n return (\n <Provider store={this.store}>\n <SubPopupMenu {...props} ref={this.setInnerMenu}>\n {this.props.children}\n </SubPopupMenu>\n </Provider>\n );\n }\n}\n","import Menu from './Menu';\nimport SubMenu from './SubMenu';\nimport MenuItem from './MenuItem';\nimport MenuItemGroup from './MenuItemGroup';\nimport Divider from './Divider';\n\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider };\n\nexport default Menu;\n","import message from 'choerodon-ui/lib/message';\r\nexport default message;\r\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","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","import Progress from './progress';\r\nexport { ProgressProps } from './progress';\r\nexport default Progress;\r\n","import rcPlacements from '../rc-components/tooltip/placements';\r\nconst autoAdjustOverflowEnabled = {\r\n adjustX: 1,\r\n adjustY: 1,\r\n};\r\nconst autoAdjustOverflowDisabled = {\r\n adjustX: 0,\r\n adjustY: 0,\r\n};\r\nconst targetOffset = [0, 0];\r\nexport function getOverflowOptions(autoAdjustOverflow) {\r\n if (typeof autoAdjustOverflow === 'boolean') {\r\n return autoAdjustOverflow ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled;\r\n }\r\n return {\r\n ...autoAdjustOverflowDisabled,\r\n ...autoAdjustOverflow,\r\n };\r\n}\r\nexport default function getPlacements(config = {}) {\r\n const { arrowWidth = 5, horizontalArrowShift = 16, verticalArrowShift = 12, autoAdjustOverflow = true } = config;\r\n const placementMap = {\r\n left: {\r\n points: ['cr', 'cl'],\r\n offset: [-4, 0],\r\n },\r\n right: {\r\n points: ['cl', 'cr'],\r\n offset: [4, 0],\r\n },\r\n top: {\r\n points: ['bc', 'tc'],\r\n offset: [0, -4],\r\n },\r\n bottom: {\r\n points: ['tc', 'bc'],\r\n offset: [0, 4],\r\n },\r\n topLeft: {\r\n points: ['bl', 'tc'],\r\n offset: [-(horizontalArrowShift + arrowWidth), -4],\r\n },\r\n leftTop: {\r\n points: ['tr', 'cl'],\r\n offset: [-4, -(verticalArrowShift + arrowWidth)],\r\n },\r\n topRight: {\r\n points: ['br', 'tc'],\r\n offset: [horizontalArrowShift + arrowWidth, -4],\r\n },\r\n rightTop: {\r\n points: ['tl', 'cr'],\r\n offset: [4, -(verticalArrowShift + arrowWidth)],\r\n },\r\n bottomRight: {\r\n points: ['tr', 'bc'],\r\n offset: [horizontalArrowShift + arrowWidth, 4],\r\n },\r\n rightBottom: {\r\n points: ['bl', 'cr'],\r\n offset: [4, verticalArrowShift + arrowWidth],\r\n },\r\n bottomLeft: {\r\n points: ['tl', 'bc'],\r\n offset: [-(horizontalArrowShift + arrowWidth), 4],\r\n },\r\n leftBottom: {\r\n points: ['br', 'cl'],\r\n offset: [-4, verticalArrowShift + arrowWidth],\r\n },\r\n };\r\n Object.keys(placementMap).forEach(key => {\r\n placementMap[key] = config.arrowPointAtCenter ? {\r\n ...placementMap[key],\r\n overflow: getOverflowOptions(autoAdjustOverflow),\r\n targetOffset,\r\n } : {\r\n ...rcPlacements[key],\r\n overflow: getOverflowOptions(autoAdjustOverflow),\r\n };\r\n });\r\n return placementMap;\r\n}\r\n","import React, { cloneElement, Component, isValidElement, } from 'react';\r\nimport classNames from 'classnames';\r\nimport getPlacements, { AdjustOverflow, PlacementsConfig } from './placements';\r\nimport RcTooltip from '../rc-components/tooltip';\r\nimport { getPrefixCls } from '../configure';\r\nexport { AdjustOverflow, PlacementsConfig };\r\nconst splitObject = (obj, keys) => {\r\n const picked = {};\r\n const omited = { ...obj };\r\n keys.forEach(key => {\r\n if (obj && key in obj) {\r\n picked[key] = obj[key];\r\n delete omited[key];\r\n }\r\n });\r\n return { picked, omited };\r\n};\r\nexport default class Tooltip extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.onVisibleChange = (visible) => {\r\n const { onVisibleChange } = this.props;\r\n if (!('visible' in this.props)) {\r\n this.setState({ visible: this.isNoTitle() ? false : visible });\r\n }\r\n if (onVisibleChange && !this.isNoTitle()) {\r\n onVisibleChange(visible);\r\n }\r\n };\r\n // 动态设置动画点\r\n this.onPopupAlign = (domNode, align) => {\r\n const placements = this.getPlacements();\r\n // 当前返回的位置\r\n const placement = Object.keys(placements).filter(key => placements[key].points[0] === align.points[0] &&\r\n placements[key].points[1] === align.points[1])[0];\r\n if (!placement) {\r\n return;\r\n }\r\n // 根据当前坐标设置动画点\r\n const rect = domNode.getBoundingClientRect();\r\n const transformOrigin = {\r\n top: '50%',\r\n left: '50%',\r\n };\r\n if (placement.indexOf('top') >= 0 || placement.indexOf('Bottom') >= 0) {\r\n transformOrigin.top = `${rect.height - align.offset[1]}px`;\r\n }\r\n else if (placement.indexOf('Top') >= 0 || placement.indexOf('bottom') >= 0) {\r\n transformOrigin.top = `${-align.offset[1]}px`;\r\n }\r\n if (placement.indexOf('left') >= 0 || placement.indexOf('Right') >= 0) {\r\n transformOrigin.left = `${rect.width - align.offset[0]}px`;\r\n }\r\n else if (placement.indexOf('right') >= 0 || placement.indexOf('Left') >= 0) {\r\n transformOrigin.left = `${-align.offset[0]}px`;\r\n }\r\n domNode.style.transformOrigin = `${transformOrigin.left} ${transformOrigin.top}`;\r\n };\r\n this.saveTooltip = (node) => {\r\n this.tooltip = node;\r\n };\r\n this.state = {\r\n visible: !!props.visible || !!props.defaultVisible,\r\n };\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n if ('visible' in nextProps) {\r\n this.setState({ visible: nextProps.visible });\r\n }\r\n }\r\n getPopupDomNode() {\r\n return this.tooltip.getPopupDomNode();\r\n }\r\n getPlacements() {\r\n const { builtinPlacements, arrowPointAtCenter, autoAdjustOverflow } = this.props;\r\n return (builtinPlacements ||\r\n getPlacements({\r\n arrowPointAtCenter,\r\n verticalArrowShift: 8,\r\n autoAdjustOverflow,\r\n }));\r\n }\r\n isHoverTrigger() {\r\n const { trigger } = this.props;\r\n if (!trigger || trigger === 'hover') {\r\n return true;\r\n }\r\n if (Array.isArray(trigger)) {\r\n return trigger.indexOf('hover') >= 0;\r\n }\r\n return false;\r\n }\r\n // Fix Tooltip won't hide at disabled button\r\n // mouse events don't trigger at disabled button in Chrome\r\n // https://github.com/react-component/tooltip/issues/18\r\n getDisabledCompatibleChildren(element) {\r\n if ((element.type.__ANT_BUTTON || element.type === 'button') &&\r\n element.props.disabled &&\r\n this.isHoverTrigger()) {\r\n // Pick some layout related style properties up to span\r\n const { picked, omited } = splitObject(element.props.style, [\r\n 'position',\r\n 'left',\r\n 'right',\r\n 'top',\r\n 'bottom',\r\n 'float',\r\n 'display',\r\n 'zIndex',\r\n ]);\r\n const spanStyle = {\r\n display: 'inline-block',\r\n ...picked,\r\n cursor: 'not-allowed',\r\n };\r\n const buttonStyle = {\r\n ...omited,\r\n pointerEvents: 'none',\r\n };\r\n const child = cloneElement(element, {\r\n style: buttonStyle,\r\n className: null,\r\n });\r\n return (<span style={spanStyle} className={element.props.className}>\n {child}\n </span>);\r\n }\r\n return element;\r\n }\r\n isNoTitle() {\r\n const { title, overlay } = this.props;\r\n return !title && !overlay; // overlay for old version compatibility\r\n }\r\n render() {\r\n const { props, state } = this;\r\n const { prefixCls: customizePrefixCls, title, overlay, openClassName, getPopupContainer, getTooltipContainer, } = props;\r\n const prefixCls = getPrefixCls('tooltip', customizePrefixCls);\r\n const children = props.children;\r\n let visible = state.visible;\r\n // Hide tooltip when there is no title\r\n if (!('visible' in props) && this.isNoTitle()) {\r\n visible = false;\r\n }\r\n const child = this.getDisabledCompatibleChildren(isValidElement(children) ? children : <span>{children}</span>);\r\n const childProps = child.props;\r\n const childCls = classNames(childProps.className, {\r\n [openClassName || `${prefixCls}-open`]: true,\r\n });\r\n return (<RcTooltip {...this.props} prefixCls={prefixCls} getTooltipContainer={getPopupContainer || getTooltipContainer} ref={this.saveTooltip} builtinPlacements={this.getPlacements()} overlay={overlay || title || ''} visible={visible} onVisibleChange={this.onVisibleChange} onPopupAlign={this.onPopupAlign}>\n {visible ? cloneElement(child, { className: childCls }) : child}\n </RcTooltip>);\r\n }\r\n}\r\nTooltip.displayName = 'Tooltip';\r\nTooltip.defaultProps = {\r\n placement: 'top',\r\n transitionName: 'zoom-big-fast',\r\n mouseEnterDelay: 0.1,\r\n mouseLeaveDelay: 0.1,\r\n arrowPointAtCenter: false,\r\n autoAdjustOverflow: true,\r\n};\r\n","import { createElement, Fragment, isValidElement } from 'react';\r\nimport format from 'string-template';\r\nimport isString from 'lodash/isString';\r\nimport flatMap from 'lodash/flatMap';\r\nexport default function formatReactTemplate(template, map) {\r\n let result = [template];\r\n Object.keys(map).forEach(key => {\r\n const node = map[key];\r\n if (node) {\r\n result = flatMap(result, text => {\r\n if (isString(text)) {\r\n let stringText = text;\r\n if (isValidElement(node)) {\r\n const placeholder = `{${key}}`;\r\n const { length } = placeholder;\r\n const textArr = [];\r\n let index = stringText.indexOf(placeholder);\r\n while (index > -1) {\r\n if (index > 0) {\r\n textArr.push(stringText.slice(0, index));\r\n }\r\n textArr.push(node);\r\n stringText = stringText.slice(index + length);\r\n index = stringText.indexOf(placeholder);\r\n }\r\n if (stringText) {\r\n textArr.push(stringText);\r\n }\r\n return textArr;\r\n }\r\n return format(text, map);\r\n }\r\n return text;\r\n });\r\n }\r\n });\r\n if (result.every(isString)) {\r\n return result.join('');\r\n }\r\n return createElement(Fragment, {}, ...result);\r\n}\r\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","/**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\nfunction defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n}\n\nmodule.exports = defaultTo;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","import React, { Component, } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport shallowEqual from 'lodash/isEqual';\r\nimport RcCheckbox from '../rc-components/checkbox';\r\nimport { getPrefixCls } from '../configure';\r\nexport default class Checkbox extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.saveCheckbox = (node) => {\r\n this.rcCheckbox = node;\r\n };\r\n }\r\n shouldComponentUpdate(nextProps, nextState, nextContext) {\r\n const { checkboxGroup } = this.context;\r\n return (!shallowEqual(this.props, nextProps) ||\r\n !shallowEqual(this.state, nextState) ||\r\n !shallowEqual(checkboxGroup, nextContext.checkboxGroup));\r\n }\r\n focus() {\r\n this.rcCheckbox.focus();\r\n }\r\n blur() {\r\n this.rcCheckbox.blur();\r\n }\r\n render() {\r\n const { props, context } = this;\r\n const { prefixCls: customizePrefixCls, className, children, indeterminate, style, onMouseEnter, onMouseLeave, ...restProps } = props;\r\n const prefixCls = getPrefixCls('checkbox', customizePrefixCls);\r\n const { checkboxGroup } = context;\r\n const checkboxProps = { ...restProps };\r\n if (checkboxGroup) {\r\n checkboxProps.onChange = () => checkboxGroup.toggleOption({ label: children, value: props.value });\r\n checkboxProps.checked = checkboxGroup.value.indexOf(props.value) !== -1;\r\n checkboxProps.disabled = props.disabled || checkboxGroup.disabled;\r\n }\r\n const classString = classNames(className, {\r\n [`${prefixCls}-wrapper`]: true,\r\n });\r\n const checkboxClass = classNames({\r\n [`${prefixCls}-indeterminate`]: indeterminate,\r\n });\r\n return (<label className={classString} style={style} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <RcCheckbox {...checkboxProps} prefixCls={prefixCls} className={checkboxClass} ref={this.saveCheckbox}/>\n {children !== undefined ? <span>{children}</span> : null}\n </label>);\r\n }\r\n}\r\nCheckbox.displayName = 'Checkbox';\r\nCheckbox.defaultProps = {\r\n indeterminate: false,\r\n};\r\nCheckbox.contextTypes = {\r\n checkboxGroup: PropTypes.any,\r\n};\r\n","import { cloneElement, PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nfunction wrapEvent(element, eventName, callback) {\r\n return e => {\r\n const originalEvent = element.props[eventName];\r\n if (originalEvent) {\r\n originalEvent(e);\r\n }\r\n callback(e);\r\n };\r\n}\r\nexport default class MouseDown extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.state = {};\r\n this.show = e => {\r\n const { currentTarget } = e;\r\n const pos = currentTarget.getBoundingClientRect();\r\n this.setState({\r\n size: {\r\n x: e.clientX - pos.left,\r\n y: e.clientY - pos.top,\r\n width: currentTarget.clientWidth,\r\n height: currentTarget.clientHeight,\r\n position: document.defaultView && document.defaultView.getComputedStyle(currentTarget).position,\r\n },\r\n });\r\n };\r\n this.hide = () => {\r\n this.setState({\r\n size: undefined,\r\n });\r\n };\r\n }\r\n render() {\r\n const { children, rippleChild } = this.props;\r\n const { size } = this.state;\r\n const element = children(rippleChild, size);\r\n const newProps = {\r\n onMouseDown: wrapEvent(element, 'onMouseDown', this.show),\r\n };\r\n if (size) {\r\n Object.assign(newProps, {\r\n onMouseUp: wrapEvent(element, 'onMouseUp', this.hide),\r\n onMouseLeave: wrapEvent(element, 'onMouseLeave', this.hide),\r\n onDragEnd: wrapEvent(element, 'onDragEnd', this.hide),\r\n });\r\n }\r\n return cloneElement(element, newProps);\r\n }\r\n}\r\nMouseDown.displayName = 'MouseDown';\r\nMouseDown.propTypes = { rippleChild: PropTypes.node };\r\n","import React, { Children, cloneElement, isValidElement, PureComponent, } from 'react';\r\nimport Animate from '../animate';\r\nimport MouseDown from './MouseDown';\r\nexport default class RippleChild extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.handleMouseDown = (child, size) => {\r\n const { prefixCls } = this.props;\r\n const { children, style } = child.props;\r\n const componentProps = {\r\n className: `${prefixCls}-wrapper`,\r\n };\r\n if (size) {\r\n const { x, y, width, height } = size;\r\n const maxWidth = Math.max(width - x, x);\r\n const maxHeight = Math.max(height - y, y);\r\n const max = Math.sqrt(maxWidth * maxWidth + maxHeight * maxHeight);\r\n this.currentCircleStyle = {\r\n width: max + max,\r\n height: max + max,\r\n left: x - max,\r\n top: y - max,\r\n };\r\n }\r\n const newProps = {\r\n children: [\r\n children,\r\n <Animate key=\"ripple\" component=\"div\" componentProps={componentProps} transitionName={size ? 'zoom-small-slow' : 'fade'} hiddenProp=\"hidden\">\n {this.currentCircleStyle && (<div hidden={!size} className={prefixCls} key=\"circle\" style={this.currentCircleStyle}/>)}\n </Animate>,\r\n ],\r\n style: this.currentStyle || style,\r\n };\r\n if (size && size.position === 'static') {\r\n newProps.style = { ...style, position: 'relative' };\r\n this.currentStyle = newProps.style;\r\n }\r\n return cloneElement(child, newProps);\r\n };\r\n this.ripple = (child) => {\r\n if (isValidElement(child)) {\r\n return <MouseDown rippleChild={child}>{this.handleMouseDown}</MouseDown>;\r\n }\r\n return child;\r\n };\r\n }\r\n render() {\r\n const { children } = this.props;\r\n return this.ripple(Children.only(children));\r\n }\r\n}\r\nRippleChild.displayName = 'RippleChild';\r\n","import React, { Children, PureComponent } from 'react';\r\nimport RippleChild from './RippleChild';\r\nimport { getConfig, getPrefixCls } from '../configure';\r\nexport default class Ripple extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.rippleChild = (child) => {\r\n const { prefixCls } = this.props;\r\n return <RippleChild prefixCls={getPrefixCls('ripple', prefixCls)}>{child}</RippleChild>;\r\n };\r\n }\r\n render() {\r\n const { disabled, children } = this.props;\r\n if (disabled || !children || !getConfig('ripple')) {\r\n return children;\r\n }\r\n return Children.map(children, this.rippleChild);\r\n }\r\n}\r\nRipple.displayName = 'Ripple';\r\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseDelay = require('./_baseDelay'),\n baseRest = require('./_baseRest');\n\n/**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\nvar defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n});\n\nmodule.exports = defer;\n","import isString from 'lodash/isString';\r\nexport default (e, defaultMessage) => {\r\n if (isString(e)) {\r\n defaultMessage = e;\r\n }\r\n else if (e instanceof Error) {\r\n defaultMessage = e.message;\r\n }\r\n else if (e && e.message) {\r\n defaultMessage = e.message;\r\n }\r\n if (typeof console !== 'undefined') {\r\n console.error(e);\r\n }\r\n return defaultMessage;\r\n};\r\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\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","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","const enhancer = WrappedComponent => class Progress extends WrappedComponent {\n componentDidUpdate() {\n if (!this.path) {\n return;\n }\n const pathStyle = this.path.style;\n pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n const now = Date.now();\n if (this.prevTimeStamp && now - this.prevTimeStamp < 100) {\n pathStyle.transitionDuration = '0s, 0s';\n }\n this.prevTimeStamp = Date.now();\n }\n\n render() {\n return super.render();\n }\n};\n\nexport default enhancer;\n","import PropTypes from 'prop-types';\n\nexport const defaultProps = {\n className: '',\n percent: 0,\n prefixCls: 'rc-progress',\n strokeColor: '#2db7f5',\n strokeLinecap: 'round',\n strokeWidth: 1,\n style: {},\n trailColor: '#D9D9D9',\n trailWidth: 1,\n};\n\nexport const propTypes = {\n className: PropTypes.string,\n percent: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n prefixCls: PropTypes.string,\n strokeColor: PropTypes.string,\n strokeLinecap: PropTypes.oneOf(['butt', 'round', 'square']),\n strokeWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n style: PropTypes.object,\n trailColor: PropTypes.string,\n trailWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n};\n","/* eslint react/prop-types: 0 */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport enhancer from './enhancer';\nimport { defaultProps, propTypes } from './types';\n\nclass Circle extends Component {\n static propTypes = {\n ...propTypes,\n gapPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n };\n\n static defaultProps = {\n ...defaultProps,\n gapPosition: 'top',\n };\n\n getPathStyles() {\n const { percent, strokeWidth, gapDegree = 0, gapPosition } = this.props;\n const radius = 50 - strokeWidth / 2;\n let beginPositionX = 0;\n let beginPositionY = -radius;\n let endPositionX = 0;\n let endPositionY = -2 * radius;\n switch (gapPosition) {\n case 'left':\n beginPositionX = -radius;\n beginPositionY = 0;\n endPositionX = 2 * radius;\n endPositionY = 0;\n break;\n case 'right':\n beginPositionX = radius;\n beginPositionY = 0;\n endPositionX = -2 * radius;\n endPositionY = 0;\n break;\n case 'bottom':\n beginPositionY = radius;\n endPositionY = 2 * radius;\n break;\n default:\n }\n const pathString = `M 50,50 m ${beginPositionX},${beginPositionY}\n a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY}\n a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`;\n const len = Math.PI * 2 * radius;\n const trailPathStyle = {\n strokeDasharray: `${len - gapDegree}px ${len}px`,\n strokeDashoffset: `-${gapDegree / 2}px`,\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s',\n };\n const strokePathStyle = {\n strokeDasharray: `${(percent / 100) * (len - gapDegree)}px ${len}px`,\n strokeDashoffset: `-${gapDegree / 2}px`,\n transition:\n 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s', // eslint-disable-line\n };\n return { pathString, trailPathStyle, strokePathStyle };\n }\n\n render() {\n const {\n prefixCls,\n strokeWidth,\n trailWidth,\n strokeColor,\n percent,\n trailColor,\n strokeLinecap,\n style,\n className,\n ...restProps\n } = this.props;\n const { pathString, trailPathStyle, strokePathStyle } = this.getPathStyles();\n delete restProps.percent;\n delete restProps.gapDegree;\n delete restProps.gapPosition;\n return (\n <svg\n className={`${prefixCls}-circle ${className}`}\n viewBox=\"0 0 100 100\"\n style={style}\n {...restProps}\n >\n <path\n className={`${prefixCls}-circle-trail`}\n d={pathString}\n stroke={trailColor}\n strokeWidth={trailWidth || strokeWidth}\n fillOpacity=\"0\"\n style={trailPathStyle}\n />\n <path\n className={`${prefixCls}-circle-path`}\n d={pathString}\n strokeLinecap={strokeLinecap}\n stroke={strokeColor}\n strokeWidth={this.props.percent === 0 ? 0 : strokeWidth}\n fillOpacity=\"0\"\n ref={path => {\n this.path = path;\n }}\n style={strokePathStyle}\n />\n </svg>\n );\n }\n}\n\nexport default enhancer(Circle);\n","import React from 'react';\r\nconst SIZE = 50;\r\nexport default function Loading() {\r\n return (<svg viewBox={`0 0 ${SIZE} ${SIZE}`}>\n <circle cx={SIZE / 2} cy={SIZE / 2} r={SIZE / 2 - 5}/>\n </svg>);\r\n}\r\nLoading.displayName = 'Loading';\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Icon from '../icon';\r\nimport { Circle } from '../rc-components/progress';\r\nimport Loading from './Loading';\r\nimport { Size } from '../_util/enum';\r\nimport { ProgressPosition, ProgressStatus, ProgressType } from './enum';\r\nimport { getPrefixCls } from '../configure';\r\nexport default class Progress extends Component {\r\n render() {\r\n const props = this.props;\r\n const { prefixCls: customizePrefixCls, className, percent = 0, status, format, trailColor, size, successPercent, type, strokeWidth, width, showInfo, gapDegree = 0, gapPosition, ...restProps } = props;\r\n const prefixCls = getPrefixCls('progress', customizePrefixCls);\r\n const progressStatus = parseInt(successPercent ? successPercent.toString() : percent.toString(), 10) >= 100 &&\r\n !('status' in props)\r\n ? ProgressStatus.success\r\n : status || ProgressStatus.normal;\r\n let progressInfo;\r\n let progress;\r\n const textFormatter = format || (percentNumber => `${percentNumber}%`);\r\n if (showInfo) {\r\n let text;\r\n const circleType = type === ProgressType.circle || type === ProgressType.dashboard;\r\n if (progressStatus === ProgressStatus.exception) {\r\n text = format ? textFormatter(percent) : <Icon type={circleType ? 'close' : 'cancel'}/>;\r\n }\r\n else if (progressStatus === ProgressStatus.success) {\r\n text = format ? (textFormatter(percent)) : (<Icon type={circleType ? 'check' : 'check_circle'}/>);\r\n }\r\n else {\r\n text = textFormatter(percent);\r\n }\r\n progressInfo = <span className={`${prefixCls}-text`}>{text}</span>;\r\n }\r\n if (type === ProgressType.line) {\r\n const percentStyle = {\r\n width: `${percent}%`,\r\n height: strokeWidth || (size === Size.small ? 6 : 8),\r\n };\r\n const successPercentStyle = {\r\n width: `${successPercent}%`,\r\n height: strokeWidth || (size === Size.small ? 6 : 8),\r\n };\r\n const successSegment = successPercent !== undefined ? (<div className={`${prefixCls}-success-bg`} style={successPercentStyle}/>) : null;\r\n progress = (<div>\n <div className={`${prefixCls}-outer`}>\n <div className={`${prefixCls}-inner`}>\n <div className={`${prefixCls}-bg`} style={percentStyle}/>\n {successSegment}\n </div>\n </div>\n {progressInfo}\n </div>);\r\n }\r\n else if (type === ProgressType.circle || type === ProgressType.dashboard) {\r\n const circleSize = width || 120;\r\n const circleStyle = {\r\n width: circleSize,\r\n height: circleSize,\r\n fontSize: circleSize * 0.15 + 6,\r\n };\r\n const circleWidth = strokeWidth || 6;\r\n const gapPos = gapPosition ||\r\n (type === ProgressType.dashboard && ProgressPosition.bottom) ||\r\n ProgressPosition.top;\r\n const gapDeg = gapDegree || (type === ProgressType.dashboard && 75);\r\n progress = (<div className={`${prefixCls}-inner`} style={circleStyle}>\n <Circle percent={percent} strokeWidth={circleWidth} trailWidth={circleWidth} trailColor={trailColor} prefixCls={prefixCls} gapDegree={gapDeg} gapPosition={gapPos}/>\n {progressInfo}\n </div>);\r\n }\r\n else if (type === ProgressType.loading) {\r\n progress = (<div className={`${prefixCls}-inner`}>\n <Loading />\n </div>);\r\n }\r\n const classString = classNames(prefixCls, {\r\n [`${prefixCls}-${(type === ProgressType.dashboard && ProgressType.circle) || type}`]: true,\r\n [`${prefixCls}-status-${progressStatus}`]: true,\r\n [`${prefixCls}-show-info`]: showInfo,\r\n [`${prefixCls}-${size}`]: size,\r\n }, className);\r\n return (<div {...restProps} className={classString}>\n {progress}\n </div>);\r\n }\r\n}\r\nProgress.displayName = 'Progress';\r\nProgress.defaultProps = {\r\n type: ProgressType.line,\r\n percent: 0,\r\n showInfo: true,\r\n trailColor: '#f3f3f3',\r\n size: Size.default,\r\n};\r\nProgress.propTypes = {\r\n status: PropTypes.oneOf([\r\n ProgressStatus.normal,\r\n ProgressStatus.exception,\r\n ProgressStatus.active,\r\n ProgressStatus.success,\r\n ]),\r\n type: PropTypes.oneOf([\r\n ProgressType.line,\r\n ProgressType.circle,\r\n ProgressType.dashboard,\r\n ProgressType.loading,\r\n ]),\r\n showInfo: PropTypes.bool,\r\n percent: PropTypes.number,\r\n width: PropTypes.number,\r\n strokeWidth: PropTypes.number,\r\n trailColor: PropTypes.string,\r\n format: PropTypes.func,\r\n gapDegree: PropTypes.number,\r\n size: PropTypes.oneOf([Size.default, Size.small, Size.large]),\r\n};\r\n","function on(eventName, fn, el, useCapture) {\r\n if (el) {\r\n if (el.addEventListener) {\r\n el.addEventListener(eventName, fn, useCapture);\r\n }\r\n else if (el.attachEvent) {\r\n el.attachEvent(`on${eventName}`, fn);\r\n }\r\n }\r\n}\r\nfunction off(eventName, fn, el, useCapture) {\r\n if (el) {\r\n if (el.removeEventListener) {\r\n el.removeEventListener(eventName, fn, useCapture);\r\n }\r\n else if (el.attachEvent) {\r\n el.detachEvent(`on${eventName}`, fn);\r\n }\r\n }\r\n}\r\nexport default class EventManager {\r\n constructor(el) {\r\n this.events = {};\r\n this.el = el;\r\n }\r\n addEventListener(eventName, fn, useCapture = false) {\r\n eventName = eventName.toLowerCase();\r\n const events = this.events[eventName] || [];\r\n const index = events.findIndex(([event]) => event === fn);\r\n if (index === -1) {\r\n events.push([fn, useCapture]);\r\n this.events[eventName] = events;\r\n on(eventName, fn, this.el, useCapture);\r\n }\r\n return this;\r\n }\r\n removeEventListener(eventName, fn, useCapture = false) {\r\n eventName = eventName.toLowerCase();\r\n const events = this.events[eventName];\r\n if (events) {\r\n if (fn) {\r\n const index = events.findIndex(([event]) => event === fn);\r\n if (index !== -1) {\r\n events.splice(index, 1);\r\n }\r\n off(eventName, fn, this.el, useCapture);\r\n }\r\n else {\r\n this.events[eventName] = this.el\r\n ? (this.events[eventName] || []).filter(([event, capture]) => {\r\n off(eventName, event, this.el, capture);\r\n return false;\r\n })\r\n : [];\r\n }\r\n }\r\n return this;\r\n }\r\n fireEvent(eventName, ...rest) {\r\n const events = this.events[eventName.toLowerCase()];\r\n return events\r\n ? Promise.all(events.map(([fn]) => fn(...rest))).then(all => all.every(result => result !== false))\r\n : Promise.resolve(true);\r\n }\r\n clear() {\r\n if (this.el) {\r\n Object.keys(this.events).forEach(eventName => this.removeEventListener(eventName));\r\n }\r\n this.events = {};\r\n return this;\r\n }\r\n}\r\nexport function preventDefault(e) {\r\n e.preventDefault();\r\n}\r\nexport function stopPropagation(e) {\r\n e.stopPropagation();\r\n}\r\nexport function stopEvent(e) {\r\n preventDefault(e);\r\n stopPropagation(e);\r\n}\r\n","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentWithPureRenderMixin\n */\n\nconst shallowEqual = require('lodash/isEqual');\n\nfunction shallowCompare(instance, nextProps, nextState) {\n return !shallowEqual(instance.props, nextProps) || !shallowEqual(instance.state, nextState);\n}\n\n/**\n * If your React component's render function is \"pure\", e.g. it will render the\n * same result given the same props and state, provide this mixin for a\n * considerable performance boost.\n *\n * Most React components have pure render functions.\n *\n * Example:\n *\n * var ReactComponentWithPureRenderMixin =\n * require('ReactComponentWithPureRenderMixin');\n * React.createClass({\n * mixins: [ReactComponentWithPureRenderMixin],\n *\n * render: function() {\n * return <div className={this.props.className}>foo</div>;\n * }\n * });\n *\n * Note: This only checks shallow equality for props and state. If these contain\n * complex data structures this mixin may have false-negatives for deeper\n * differences. Only mixin to components which have simple props and state, or\n * use `forceUpdate()` when you know deep data structures have changed.\n *\n * See https://facebook.github.io/react/docs/pure-render-mixin.html\n */\nconst ReactComponentWithPureRenderMixin = {\n shouldComponentUpdate(nextProps, nextState) {\n return shallowCompare(this, nextProps, nextState);\n },\n};\n\nmodule.exports = ReactComponentWithPureRenderMixin;\n","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n const args = [].slice.call(arguments, 0);\n if (args.length === 1) {\n return args[0];\n }\n\n return function chainedFunction() {\n for (let i = 0; i < args.length; i++) {\n if (args[i] && args[i].apply) {\n args[i].apply(this, arguments);\n }\n }\n };\n}\n","import cssAnimation from 'css-animation';\r\nimport raf from 'raf';\r\nfunction animate(node, show, done) {\r\n let height;\r\n let requestAnimationFrameId;\r\n return cssAnimation(node, 'c7n-motion-collapse', {\r\n start() {\r\n if (!show) {\r\n node.style.height = `${node.offsetHeight}px`;\r\n node.style.opacity = '1';\r\n }\r\n else {\r\n height = node.offsetHeight;\r\n node.style.height = '0px';\r\n node.style.opacity = '0';\r\n }\r\n },\r\n active() {\r\n if (requestAnimationFrameId) {\r\n raf.cancel(requestAnimationFrameId);\r\n }\r\n requestAnimationFrameId = raf(() => {\r\n node.style.height = `${show ? height : 0}px`;\r\n node.style.opacity = show ? '1' : '0';\r\n });\r\n },\r\n end() {\r\n if (requestAnimationFrameId) {\r\n raf.cancel(requestAnimationFrameId);\r\n }\r\n node.style.height = '';\r\n node.style.opacity = '';\r\n done();\r\n },\r\n });\r\n}\r\nconst animation = {\r\n enter(node, done) {\r\n return animate(node, true, done);\r\n },\r\n leave(node, done) {\r\n return animate(node, false, done);\r\n },\r\n appear(node, done) {\r\n return animate(node, true, done);\r\n },\r\n};\r\nexport default animation;\r\n","var START_EVENT_NAME_MAP = {\n transitionstart: {\n transition: 'transitionstart',\n WebkitTransition: 'webkitTransitionStart',\n MozTransition: 'mozTransitionStart',\n OTransition: 'oTransitionStart',\n msTransition: 'MSTransitionStart'\n },\n\n animationstart: {\n animation: 'animationstart',\n WebkitAnimation: 'webkitAnimationStart',\n MozAnimation: 'mozAnimationStart',\n OAnimation: 'oAnimationStart',\n msAnimation: 'MSAnimationStart'\n }\n};\n\nvar END_EVENT_NAME_MAP = {\n transitionend: {\n transition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'mozTransitionEnd',\n OTransition: 'oTransitionEnd',\n msTransition: 'MSTransitionEnd'\n },\n\n animationend: {\n animation: 'animationend',\n WebkitAnimation: 'webkitAnimationEnd',\n MozAnimation: 'mozAnimationEnd',\n OAnimation: 'oAnimationEnd',\n msAnimation: 'MSAnimationEnd'\n }\n};\n\nvar startEvents = [];\nvar endEvents = [];\n\nfunction detectEvents() {\n var testEl = document.createElement('div');\n var style = testEl.style;\n\n if (!('AnimationEvent' in window)) {\n delete START_EVENT_NAME_MAP.animationstart.animation;\n delete END_EVENT_NAME_MAP.animationend.animation;\n }\n\n if (!('TransitionEvent' in window)) {\n delete START_EVENT_NAME_MAP.transitionstart.transition;\n delete END_EVENT_NAME_MAP.transitionend.transition;\n }\n\n function process(EVENT_NAME_MAP, events) {\n for (var baseEventName in EVENT_NAME_MAP) {\n if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) {\n var baseEvents = EVENT_NAME_MAP[baseEventName];\n for (var styleName in baseEvents) {\n if (styleName in style) {\n events.push(baseEvents[styleName]);\n break;\n }\n }\n }\n }\n }\n\n process(START_EVENT_NAME_MAP, startEvents);\n process(END_EVENT_NAME_MAP, endEvents);\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n detectEvents();\n}\n\nfunction addEventListener(node, eventName, eventListener) {\n node.addEventListener(eventName, eventListener, false);\n}\n\nfunction removeEventListener(node, eventName, eventListener) {\n node.removeEventListener(eventName, eventListener, false);\n}\n\nvar TransitionEvents = {\n // Start events\n startEvents: startEvents,\n\n addStartEventListener: function addStartEventListener(node, eventListener) {\n if (startEvents.length === 0) {\n window.setTimeout(eventListener, 0);\n return;\n }\n startEvents.forEach(function (startEvent) {\n addEventListener(node, startEvent, eventListener);\n });\n },\n removeStartEventListener: function removeStartEventListener(node, eventListener) {\n if (startEvents.length === 0) {\n return;\n }\n startEvents.forEach(function (startEvent) {\n removeEventListener(node, startEvent, eventListener);\n });\n },\n\n\n // End events\n endEvents: endEvents,\n\n addEndEventListener: function addEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n window.setTimeout(eventListener, 0);\n return;\n }\n endEvents.forEach(function (endEvent) {\n addEventListener(node, endEvent, eventListener);\n });\n },\n removeEndEventListener: function removeEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n return;\n }\n endEvents.forEach(function (endEvent) {\n removeEventListener(node, endEvent, eventListener);\n });\n }\n};\n\nexport default TransitionEvents;","import _typeof from 'babel-runtime/helpers/typeof';\nimport Event from './Event';\nimport classes from 'component-classes';\n\nvar isCssAnimationSupported = Event.endEvents.length !== 0;\nvar capitalPrefixes = ['Webkit', 'Moz', 'O',\n// ms is special .... !\n'ms'];\nvar prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\n\nfunction getStyleProperty(node, name) {\n // old ff need null, https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle\n var style = window.getComputedStyle(node, null);\n var ret = '';\n for (var i = 0; i < prefixes.length; i++) {\n ret = style.getPropertyValue(prefixes[i] + name);\n if (ret) {\n break;\n }\n }\n return ret;\n}\n\nfunction fixBrowserByTimeout(node) {\n if (isCssAnimationSupported) {\n var transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0;\n var transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0;\n var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n var time = Math.max(transitionDuration + transitionDelay, animationDuration + animationDelay);\n // sometimes, browser bug\n node.rcEndAnimTimeout = setTimeout(function () {\n node.rcEndAnimTimeout = null;\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n }, time * 1000 + 200);\n }\n}\n\nfunction clearBrowserBugTimeout(node) {\n if (node.rcEndAnimTimeout) {\n clearTimeout(node.rcEndAnimTimeout);\n node.rcEndAnimTimeout = null;\n }\n}\n\nvar cssAnimation = function cssAnimation(node, transitionName, endCallback) {\n var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : _typeof(transitionName)) === 'object';\n var className = nameIsObj ? transitionName.name : transitionName;\n var activeClassName = nameIsObj ? transitionName.active : transitionName + '-active';\n var end = endCallback;\n var start = void 0;\n var active = void 0;\n var nodeClasses = classes(node);\n\n if (endCallback && Object.prototype.toString.call(endCallback) === '[object Object]') {\n end = endCallback.end;\n start = endCallback.start;\n active = endCallback.active;\n }\n\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n\n node.rcEndListener = function (e) {\n if (e && e.target !== node) {\n return;\n }\n\n if (node.rcAnimTimeout) {\n clearTimeout(node.rcAnimTimeout);\n node.rcAnimTimeout = null;\n }\n\n clearBrowserBugTimeout(node);\n\n nodeClasses.remove(className);\n nodeClasses.remove(activeClassName);\n\n Event.removeEndEventListener(node, node.rcEndListener);\n node.rcEndListener = null;\n\n // Usually this optional end is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (end) {\n end();\n }\n };\n\n Event.addEndEventListener(node, node.rcEndListener);\n\n if (start) {\n start();\n }\n nodeClasses.add(className);\n\n node.rcAnimTimeout = setTimeout(function () {\n node.rcAnimTimeout = null;\n nodeClasses.add(activeClassName);\n if (active) {\n setTimeout(active, 0);\n }\n fixBrowserByTimeout(node);\n // 30ms for firefox\n }, 30);\n\n return {\n stop: function stop() {\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n }\n };\n};\n\ncssAnimation.style = function (node, style, callback) {\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n\n node.rcEndListener = function (e) {\n if (e && e.target !== node) {\n return;\n }\n\n if (node.rcAnimTimeout) {\n clearTimeout(node.rcAnimTimeout);\n node.rcAnimTimeout = null;\n }\n\n clearBrowserBugTimeout(node);\n\n Event.removeEndEventListener(node, node.rcEndListener);\n node.rcEndListener = null;\n\n // Usually this optional callback is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (callback) {\n callback();\n }\n };\n\n Event.addEndEventListener(node, node.rcEndListener);\n\n node.rcAnimTimeout = setTimeout(function () {\n for (var s in style) {\n if (style.hasOwnProperty(s)) {\n node.style[s] = style[s];\n }\n }\n node.rcAnimTimeout = null;\n fixBrowserByTimeout(node);\n }, 0);\n};\n\ncssAnimation.setTransition = function (node, p, value) {\n var property = p;\n var v = value;\n if (value === undefined) {\n v = property;\n property = '';\n }\n property = property || '';\n capitalPrefixes.forEach(function (prefix) {\n node.style[prefix + 'Transition' + property] = v;\n });\n};\n\ncssAnimation.isCssAnimationSupported = isCssAnimationSupported;\n\nexport { isCssAnimationSupported };\n\nexport default cssAnimation;","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\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","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","module.exports = {};\n","let animation;\r\nfunction isCssAnimationSupported() {\r\n if (animation !== undefined) {\r\n return animation;\r\n }\r\n const domPrefixes = 'Webkit Moz O ms Khtml'.split(' ');\r\n const elm = document.createElement('div');\r\n if (elm.style.animationName !== undefined) {\r\n animation = true;\r\n }\r\n if (animation !== undefined) {\r\n for (let i = 0; i < domPrefixes.length; i++) {\r\n if (elm.style[`${domPrefixes[i]}AnimationName`] !== undefined) {\r\n animation = true;\r\n break;\r\n }\r\n }\r\n }\r\n animation = animation || false;\r\n return animation;\r\n}\r\nexport default isCssAnimationSupported;\r\n","import React, { cloneElement, Component, isValidElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport omit from 'lodash/omit';\r\nimport isCssAnimationSupported from '../_util/isCssAnimationSupported';\r\nimport Animate from '../animate';\r\nimport Progress from '../progress/progress';\r\nimport { Size } from '../_util/enum';\r\nimport { ProgressType } from '../progress/enum';\r\nimport { getPrefixCls } from '../configure';\r\nexport default class Spin extends Component {\r\n constructor(props) {\r\n super(props);\r\n const spinning = props.spinning;\r\n this.state = {\r\n spinning,\r\n };\r\n }\r\n componentDidMount() {\r\n if (!isCssAnimationSupported()) {\r\n // Show text in IE9\r\n this.setState({\r\n notCssAnimationSupported: true,\r\n });\r\n }\r\n }\r\n componentWillUnmount() {\r\n if (this.debounceTimeout) {\r\n clearTimeout(this.debounceTimeout);\r\n }\r\n if (this.delayTimeout) {\r\n clearTimeout(this.delayTimeout);\r\n }\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n const { spinning: currentSpinning } = this.props;\r\n const spinning = nextProps.spinning;\r\n const { delay } = this.props;\r\n if (this.debounceTimeout) {\r\n clearTimeout(this.debounceTimeout);\r\n }\r\n if (currentSpinning && !spinning) {\r\n this.debounceTimeout = window.setTimeout(() => this.setState({ spinning }), 200);\r\n if (this.delayTimeout) {\r\n clearTimeout(this.delayTimeout);\r\n }\r\n }\r\n else if (spinning && delay && !isNaN(Number(delay))) {\r\n if (this.delayTimeout) {\r\n clearTimeout(this.delayTimeout);\r\n }\r\n this.delayTimeout = window.setTimeout(() => this.setState({ spinning }), delay);\r\n }\r\n else {\r\n this.setState({ spinning });\r\n }\r\n }\r\n getIndicatorWidth(size) {\r\n switch (size) {\r\n case Size.small:\r\n return 20;\r\n case Size.large:\r\n return 50;\r\n default:\r\n return 30;\r\n }\r\n }\r\n renderIndicator(prefixCls) {\r\n const { indicator, size } = this.props;\r\n const dotClassName = `${prefixCls}-dot`;\r\n if (isValidElement(indicator)) {\r\n return cloneElement(indicator, {\r\n className: classNames(indicator.props.className, dotClassName),\r\n });\r\n }\r\n return (<Progress width={this.getIndicatorWidth(size)} className={dotClassName} type={ProgressType.loading}/>);\r\n }\r\n render() {\r\n const { className, size, prefixCls: customizePrefixCls, tip, wrapperClassName, children, style, ...restProps } = this.props;\r\n const { spinning, notCssAnimationSupported } = this.state;\r\n const prefixCls = getPrefixCls('spin', customizePrefixCls);\r\n const spinClassName = classNames(prefixCls, {\r\n [`${prefixCls}-sm`]: size === Size.small,\r\n [`${prefixCls}-lg`]: size === Size.large,\r\n [`${prefixCls}-spinning`]: spinning,\r\n [`${prefixCls}-show-text`]: !!tip || notCssAnimationSupported,\r\n }, className);\r\n // fix https://fb.me/react-unknown-prop\r\n const divProps = omit(restProps, ['spinning', 'delay', 'indicator']);\r\n const spinElement = (<div {...divProps} className={spinClassName} style={style} key=\"loading\">\n {this.renderIndicator(prefixCls)}\n {tip ? <div className={`${prefixCls}-text`}>{tip}</div> : null}\n </div>);\r\n if (children) {\r\n let animateClassName = `${prefixCls}-nested-loading`;\r\n if (wrapperClassName) {\r\n animateClassName += ` ${wrapperClassName}`;\r\n }\r\n const containerClassName = classNames({\r\n [`${prefixCls}-container`]: true,\r\n [`${prefixCls}-blur`]: spinning,\r\n });\r\n return (<Animate {...divProps} component=\"div\" className={animateClassName} transitionName=\"fade\">\n {spinning && spinElement}\n <div className={containerClassName} key=\"container\">\n {children}\n </div>\n </Animate>);\r\n }\r\n return spinElement;\r\n }\r\n}\r\nSpin.displayName = 'Spin';\r\nSpin.defaultProps = {\r\n spinning: true,\r\n size: Size.default,\r\n wrapperClassName: '',\r\n};\r\nSpin.propTypes = {\r\n prefixCls: PropTypes.string,\r\n className: PropTypes.string,\r\n spinning: PropTypes.bool,\r\n size: PropTypes.oneOf([Size.small, Size.default, Size.large]),\r\n wrapperClassName: PropTypes.string,\r\n indicator: PropTypes.node,\r\n};\r\n","export default function normalizeLanguage(language) {\r\n return language && language.replace('_', '-').toLowerCase();\r\n}\r\n","import { Children } from 'react';\n\nexport default function toArray(children) {\n const ret = [];\n Children.forEach(children, (c) => {\n ret.push(c);\n });\n return ret;\n}\n","import React, { Children, cloneElement, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport warning from '../../_util/warning';\nimport {\n arrAdd,\n arrDel,\n calcCheckedKeys,\n calcDropPosition,\n calcExpandedKeys,\n calcSelectedKeys,\n getDragNodesKeys,\n getFullKeyList,\n getPosition,\n getStrictlyValue,\n posToArr,\n traverseTreeNodes,\n} from './util';\n\n/**\n * Thought we still use `cloneElement` to pass `key`,\n * other props can pass with context for future refactor.\n */\nexport const contextTypes = {\n rcTree: PropTypes.shape({\n root: PropTypes.object,\n\n prefixCls: PropTypes.string,\n selectable: PropTypes.bool,\n showIcon: PropTypes.bool,\n icon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n draggable: PropTypes.bool,\n checkable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n checkStrictly: PropTypes.bool,\n disabled: PropTypes.bool,\n openTransitionName: PropTypes.string,\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n loadData: PropTypes.func,\n filterTreeNode: PropTypes.func,\n renderTreeNode: PropTypes.func,\n\n isKeyChecked: PropTypes.func,\n\n onNodeExpand: PropTypes.func,\n onNodeSelect: PropTypes.func,\n onNodeMouseEnter: PropTypes.func,\n onNodeMouseLeave: PropTypes.func,\n onNodeContextMenu: PropTypes.func,\n onNodeDragStart: PropTypes.func,\n onNodeDragEnter: PropTypes.func,\n onNodeDragOver: PropTypes.func,\n onNodeDragLeave: PropTypes.func,\n onNodeDragEnd: PropTypes.func,\n onNodeDrop: PropTypes.func,\n onBatchNodeCheck: PropTypes.func,\n onCheckConductFinished: PropTypes.func,\n }),\n};\n\nclass Tree extends Component {\n static propTypes = {\n prefixCls: PropTypes.string,\n className: PropTypes.string,\n children: PropTypes.any,\n showLine: PropTypes.bool,\n showIcon: PropTypes.bool,\n icon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n focusable: PropTypes.bool,\n selectable: PropTypes.bool,\n disabled: PropTypes.bool,\n multiple: PropTypes.bool,\n checkable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.node,\n ]),\n checkStrictly: PropTypes.bool,\n draggable: PropTypes.bool,\n defaultExpandParent: PropTypes.bool,\n autoExpandParent: PropTypes.bool,\n defaultExpandAll: PropTypes.bool,\n defaultExpandedKeys: PropTypes.arrayOf(PropTypes.string),\n expandedKeys: PropTypes.arrayOf(PropTypes.string),\n defaultCheckedKeys: PropTypes.arrayOf(PropTypes.string),\n checkedKeys: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object,\n ]),\n defaultSelectedKeys: PropTypes.arrayOf(PropTypes.string),\n selectedKeys: PropTypes.arrayOf(PropTypes.string),\n onExpand: PropTypes.func,\n onCheck: PropTypes.func,\n onSelect: PropTypes.func,\n loadData: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onRightClick: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnter: PropTypes.func,\n onDragOver: PropTypes.func,\n onDragLeave: PropTypes.func,\n onDragEnd: PropTypes.func,\n onDrop: PropTypes.func,\n filterTreeNode: PropTypes.func,\n openTransitionName: PropTypes.string,\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n switcherIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n };\n\n static childContextTypes = contextTypes;\n\n static defaultProps = {\n prefixCls: 'rc-tree',\n showLine: false,\n showIcon: true,\n selectable: true,\n multiple: false,\n checkable: false,\n disabled: false,\n checkStrictly: false,\n draggable: false,\n defaultExpandParent: true,\n autoExpandParent: false,\n defaultExpandAll: false,\n defaultExpandedKeys: [],\n defaultCheckedKeys: [],\n defaultSelectedKeys: [],\n onExpand: null,\n onCheck: null,\n onSelect: null,\n onDragStart: null,\n onDragEnter: null,\n onDragOver: null,\n onDragLeave: null,\n onDrop: null,\n onDragEnd: null,\n onMouseEnter: null,\n onMouseLeave: null,\n };\n\n constructor(props) {\n super(props);\n\n const {\n defaultExpandAll,\n defaultExpandParent,\n defaultExpandedKeys,\n defaultCheckedKeys,\n defaultSelectedKeys,\n expandedKeys,\n } = props;\n\n // Sync state with props\n const { checkedKeys = [], halfCheckedKeys = [] } =\n calcCheckedKeys(defaultCheckedKeys, props) || {};\n\n const state = {\n selectedKeys: calcSelectedKeys(defaultSelectedKeys, props),\n checkedKeys,\n halfCheckedKeys,\n };\n\n if (defaultExpandAll) {\n state.expandedKeys = getFullKeyList(props.children);\n } else if (defaultExpandParent) {\n state.expandedKeys = calcExpandedKeys(expandedKeys || defaultExpandedKeys, props);\n } else {\n state.expandedKeys = defaultExpandedKeys;\n }\n\n this.state = {\n ...state,\n ...(this.getSyncProps(props) || {}),\n };\n\n // Cache for check status to optimize\n this.checkedBatch = null;\n }\n\n getChildContext() {\n const {\n prefixCls, selectable, showIcon, icon, draggable, checkable, checkStrictly, disabled,\n loadData, filterTreeNode,\n openTransitionName, openAnimation,\n switcherIcon,\n } = this.props;\n\n return {\n rcTree: {\n // root: this,\n\n prefixCls,\n selectable,\n showIcon,\n icon,\n switcherIcon,\n draggable,\n checkable,\n checkStrictly,\n disabled,\n openTransitionName,\n openAnimation,\n\n loadData,\n filterTreeNode,\n renderTreeNode: this.renderTreeNode,\n isKeyChecked: this.isKeyChecked,\n\n onNodeExpand: this.onNodeExpand,\n onNodeSelect: this.onNodeSelect,\n onNodeMouseEnter: this.onNodeMouseEnter,\n onNodeMouseLeave: this.onNodeMouseLeave,\n onNodeContextMenu: this.onNodeContextMenu,\n onNodeDragStart: this.onNodeDragStart,\n onNodeDragEnter: this.onNodeDragEnter,\n onNodeDragOver: this.onNodeDragOver,\n onNodeDragLeave: this.onNodeDragLeave,\n onNodeDragEnd: this.onNodeDragEnd,\n onNodeDrop: this.onNodeDrop,\n onBatchNodeCheck: this.onBatchNodeCheck,\n onCheckConductFinished: this.onCheckConductFinished,\n },\n };\n }\n\n componentWillReceiveProps(nextProps) {\n // React 16 will not trigger update if new state is null\n this.setState(this.getSyncProps(nextProps, this.props));\n }\n\n onNodeDragStart = (event, node) => {\n const { expandedKeys } = this.state;\n const { onDragStart } = this.props;\n const { eventKey, children } = node.props;\n\n this.dragNode = node;\n\n this.setState({\n dragNodesKeys: getDragNodesKeys(children, node),\n expandedKeys: arrDel(expandedKeys, eventKey),\n });\n\n if (onDragStart) {\n onDragStart({ event, node });\n }\n };\n\n /**\n * [Legacy] Select handler is less small than node,\n * so that this will trigger when drag enter node or select handler.\n * This is a little tricky if customize css without padding.\n * Better for use mouse move event to refresh drag state.\n * But let's just keep it to avoid event trigger logic change.\n */\n onNodeDragEnter = (event, node) => {\n const { expandedKeys } = this.state;\n const { onDragEnter } = this.props;\n const { pos, eventKey } = node.props;\n\n const dropPosition = calcDropPosition(event, node);\n\n // Skip if drag node is self\n if (\n this.dragNode.props.eventKey === eventKey &&\n dropPosition === 0\n ) {\n this.setState({\n dragOverNodeKey: '',\n dropPosition: null,\n });\n return;\n }\n\n // Ref: https://github.com/react-component/tree/issues/132\n // Add timeout to let onDragLevel fire before onDragEnter,\n // so that we can clean drag props for onDragLeave node.\n // Macro task for this:\n // https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-script\n setTimeout(() => {\n // Update drag over node\n this.setState({\n dragOverNodeKey: eventKey,\n dropPosition,\n });\n\n // Side effect for delay drag\n if (!this.delayedDragEnterLogic) {\n this.delayedDragEnterLogic = {};\n }\n Object.keys(this.delayedDragEnterLogic).forEach((key) => {\n clearTimeout(this.delayedDragEnterLogic[key]);\n });\n this.delayedDragEnterLogic[pos] = setTimeout(() => {\n const newExpandedKeys = arrAdd(expandedKeys, eventKey);\n this.setState({\n expandedKeys: newExpandedKeys,\n });\n\n if (onDragEnter) {\n onDragEnter({ event, node, expandedKeys: newExpandedKeys });\n }\n }, 400);\n }, 0);\n };\n onNodeDragOver = (event, node) => {\n const { onDragOver } = this.props;\n if (onDragOver) {\n onDragOver({ event, node });\n }\n };\n onNodeDragLeave = (event, node) => {\n const { onDragLeave } = this.props;\n\n this.setState({\n dragOverNodeKey: '',\n });\n\n if (onDragLeave) {\n onDragLeave({ event, node });\n }\n };\n onNodeDragEnd = (event, node) => {\n const { onDragEnd } = this.props;\n this.setState({\n dragOverNodeKey: '',\n });\n if (onDragEnd) {\n onDragEnd({ event, node });\n }\n };\n onNodeDrop = (event, node) => {\n const { dragNodesKeys, dropPosition } = this.state;\n const { onDrop } = this.props;\n const { eventKey, pos } = node.props;\n\n this.setState({\n dragOverNodeKey: '',\n dropNodeKey: eventKey,\n });\n\n if (dragNodesKeys.indexOf(eventKey) !== -1) {\n warning(false, 'Can not drop to dragNode(include it\\'s children node)');\n return;\n }\n\n const posArr = posToArr(pos);\n\n const dropResult = {\n event,\n node,\n dragNode: this.dragNode,\n dragNodesKeys: dragNodesKeys.slice(),\n dropPosition: dropPosition + Number(posArr[posArr.length - 1]),\n };\n\n if (dropPosition !== 0) {\n dropResult.dropToGap = true;\n }\n\n if (onDrop) {\n onDrop(dropResult);\n }\n };\n\n onNodeSelect = (e, treeNode) => {\n let { selectedKeys } = this.state;\n const { onSelect, multiple, children } = this.props;\n const { selected, eventKey } = treeNode.props;\n const targetSelected = !selected;\n\n // Update selected keys\n if (!targetSelected) {\n selectedKeys = arrDel(selectedKeys, eventKey);\n } else if (!multiple) {\n selectedKeys = [eventKey];\n } else {\n selectedKeys = arrAdd(selectedKeys, eventKey);\n }\n\n // [Legacy] Not found related usage in doc or upper libs\n // [Legacy] TODO: add optimize prop to skip node process\n const selectedNodes = [];\n if (selectedKeys.length) {\n traverseTreeNodes(children, ({ node, key }) => {\n if (selectedKeys.indexOf(key) !== -1) {\n selectedNodes.push(node);\n }\n });\n }\n\n this.setUncontrolledState({ selectedKeys });\n\n if (onSelect) {\n const eventObj = {\n event: 'select',\n selected: targetSelected,\n node: treeNode,\n selectedNodes,\n };\n onSelect(selectedKeys, eventObj);\n }\n };\n\n /**\n * This will cache node check status to optimize update process.\n * When Tree get trigger `onCheckConductFinished` will flush all the update.\n */\n onBatchNodeCheck = (key, checked, halfChecked, startNode) => {\n if (startNode) {\n this.checkedBatch = {\n treeNode: startNode,\n checked,\n list: [],\n };\n }\n\n // This code should never called\n if (!this.checkedBatch) {\n this.checkedBatch = {\n list: [],\n };\n warning(\n false,\n 'Checked batch not init. This should be a bug. Please fire a issue.',\n );\n }\n\n this.checkedBatch.list.push({ key, checked, halfChecked });\n };\n\n /**\n * When top `onCheckConductFinished` called, will execute all batch update.\n * And trigger `onCheck` event.\n */\n onCheckConductFinished = () => {\n const { checkedKeys, halfCheckedKeys } = this.state;\n const { onCheck, checkStrictly, children } = this.props;\n\n // Use map to optimize update speed\n const checkedKeySet = {};\n const halfCheckedKeySet = {};\n\n checkedKeys.forEach(key => {\n checkedKeySet[key] = true;\n });\n halfCheckedKeys.forEach(key => {\n halfCheckedKeySet[key] = true;\n });\n\n // Batch process\n this.checkedBatch.list.forEach(({ key, checked, halfChecked }) => {\n checkedKeySet[key] = checked;\n halfCheckedKeySet[key] = halfChecked;\n });\n const newCheckedKeys = Object.keys(checkedKeySet).filter(key => checkedKeySet[key]);\n const newHalfCheckedKeys = Object.keys(halfCheckedKeySet).filter(key => halfCheckedKeySet[key]);\n\n // Trigger onChecked\n let selectedObj;\n\n const eventObj = {\n event: 'check',\n node: this.checkedBatch.treeNode,\n checked: this.checkedBatch.checked,\n };\n\n if (checkStrictly) {\n selectedObj = getStrictlyValue(newCheckedKeys, newHalfCheckedKeys);\n\n // [Legacy] TODO: add optimize prop to skip node process\n eventObj.checkedNodes = [];\n traverseTreeNodes(children, ({ node, key }) => {\n if (checkedKeySet[key]) {\n eventObj.checkedNodes.push(node);\n }\n });\n\n this.setUncontrolledState({ checkedKeys: newCheckedKeys });\n } else {\n selectedObj = newCheckedKeys;\n\n // [Legacy] TODO: add optimize prop to skip node process\n eventObj.checkedNodes = [];\n eventObj.checkedNodesPositions = []; // [Legacy] TODO: not in API\n eventObj.halfCheckedKeys = newHalfCheckedKeys; // [Legacy] TODO: not in API\n traverseTreeNodes(children, ({ node, pos, key }) => {\n if (checkedKeySet[key]) {\n eventObj.checkedNodes.push(node);\n eventObj.checkedNodesPositions.push({ node, pos });\n }\n });\n\n this.setUncontrolledState({\n checkedKeys: newCheckedKeys,\n halfCheckedKeys: newHalfCheckedKeys,\n });\n }\n\n if (onCheck) {\n onCheck(selectedObj, eventObj);\n }\n\n // Clean up\n this.checkedBatch = null;\n };\n\n onNodeExpand = (e, treeNode) => {\n let { expandedKeys } = this.state;\n const { onExpand, loadData } = this.props;\n const { eventKey, expanded } = treeNode.props;\n\n // Update selected keys\n const index = expandedKeys.indexOf(eventKey);\n const targetExpanded = !expanded;\n\n warning(\n (expanded && index !== -1) || (!expanded && index === -1)\n , 'Expand state not sync with index check');\n\n if (targetExpanded) {\n expandedKeys = arrAdd(expandedKeys, eventKey);\n } else {\n expandedKeys = arrDel(expandedKeys, eventKey);\n }\n\n this.setUncontrolledState({ expandedKeys });\n\n if (onExpand) {\n onExpand(expandedKeys, { node: treeNode, expanded: targetExpanded });\n }\n\n // Async Load data\n if (targetExpanded && loadData) {\n return loadData(treeNode).then(() => {\n // [Legacy] Refresh logic\n this.setUncontrolledState({ expandedKeys });\n });\n }\n\n return null;\n };\n\n onNodeMouseEnter = (event, node) => {\n const { onMouseEnter } = this.props;\n if (onMouseEnter) {\n onMouseEnter({ event, node });\n }\n };\n\n onNodeMouseLeave = (event, node) => {\n const { onMouseLeave } = this.props;\n if (onMouseLeave) {\n onMouseLeave({ event, node });\n }\n };\n\n onNodeContextMenu = (event, node) => {\n const { onRightClick } = this.props;\n if (onRightClick) {\n event.preventDefault();\n onRightClick({ event, node });\n }\n };\n\n /**\n * Sync state with props if needed\n */\n getSyncProps = (props = {}, prevProps) => {\n let needSync = false;\n const newState = {};\n const myPrevProps = prevProps || {};\n\n function checkSync(name) {\n if (props[name] !== myPrevProps[name]) {\n needSync = true;\n return true;\n }\n return false;\n }\n\n // Children change will affect check box status.\n // And no need to check when prev props not provided\n if (prevProps && checkSync('children')) {\n const { checkedKeys = [], halfCheckedKeys = [] } =\n calcCheckedKeys(props.checkedKeys || this.state.checkedKeys, props) || {};\n newState.checkedKeys = checkedKeys;\n newState.halfCheckedKeys = halfCheckedKeys;\n }\n\n // Re-calculate when autoExpandParent or expandedKeys changed\n if (prevProps && (checkSync('autoExpandParent') || checkSync('expandedKeys'))) {\n newState.expandedKeys = props.autoExpandParent ? calcExpandedKeys(props.expandedKeys, props) : props.expandedKeys;\n }\n\n if (checkSync('selectedKeys')) {\n newState.selectedKeys = calcSelectedKeys(props.selectedKeys, props);\n }\n\n if (checkSync('checkedKeys')) {\n const { checkedKeys = [], halfCheckedKeys = [] } =\n calcCheckedKeys(props.checkedKeys, props) || {};\n newState.checkedKeys = checkedKeys;\n newState.halfCheckedKeys = halfCheckedKeys;\n }\n\n return needSync ? newState : null;\n };\n\n /**\n * Only update the value which is not in props\n */\n setUncontrolledState = (state) => {\n let needSync = false;\n const newState = {};\n\n Object.keys(state).forEach(name => {\n if (name in this.props) return;\n\n needSync = true;\n newState[name] = state[name];\n });\n\n this.setState(needSync ? newState : null);\n };\n\n isKeyChecked = (key) => {\n const { checkedKeys = [] } = this.state;\n return checkedKeys.indexOf(key) !== -1;\n };\n\n /**\n * [Legacy] Original logic use `key` as tracking clue.\n * We have to use `cloneElement` to pass `key`.\n */\n renderTreeNode = (child, index, level = 0) => {\n const {\n expandedKeys = [], selectedKeys = [], halfCheckedKeys = [],\n dragOverNodeKey, dropPosition,\n } = this.state;\n const {} = this.props;\n const pos = getPosition(level, index);\n const key = child.key || pos;\n\n return cloneElement(child, {\n eventKey: key,\n expanded: expandedKeys.indexOf(key) !== -1,\n selected: selectedKeys.indexOf(key) !== -1,\n checked: this.isKeyChecked(key),\n halfChecked: halfCheckedKeys.indexOf(key) !== -1,\n pos,\n\n // [Legacy] Drag props\n dragOver: dragOverNodeKey === key && dropPosition === 0,\n dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,\n dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1,\n });\n };\n\n render() {\n const {\n prefixCls, className, focusable,\n showLine,\n children,\n } = this.props;\n const domProps = {};\n\n // [Legacy] Commit: 0117f0c9db0e2956e92cb208f51a42387dfcb3d1\n if (focusable) {\n domProps.tabIndex = '0';\n domProps.onKeyDown = this.onKeyDown;\n }\n\n return (\n <ul\n {...domProps}\n className={classNames(prefixCls, className, {\n [`${prefixCls}-show-line`]: showLine,\n })}\n role=\"tree-node\"\n unselectable=\"on\"\n >\n {Children.map(children, this.renderTreeNode, this)}\n </ul>\n );\n }\n}\n\nexport default Tree;\n","import React, { cloneElement, Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport SubMenu from './SubMenu';\nimport { getWidth, menuAllProps, setStyle } from './util';\n\nconst canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nconst MENUITEM_OVERFLOWED_CLASSNAME = 'menuitem-overflowed';\n\n// Fix ssr\nif (canUseDOM) {\n require('mutationobserver-shim');\n}\n\nexport default class DOMWrap extends Component {\n static propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']),\n prefixCls: PropTypes.string,\n level: PropTypes.number,\n theme: PropTypes.string,\n overflowedIndicator: PropTypes.node,\n hidden: PropTypes.bool,\n hiddenClassName: PropTypes.string,\n tag: PropTypes.string,\n style: PropTypes.object,\n };\n\n static defaultProps = {\n tag: 'div',\n className: '',\n };\n\n state = {\n lastVisibleIndex: undefined,\n };\n\n componentDidMount() {\n this.setChildrenWidthAndResize();\n if (this.props.level === 1 && this.props.mode === 'horizontal') {\n const menuUl = ReactDOM.findDOMNode(this);\n if (!menuUl) {\n return;\n }\n this.resizeObserver = new ResizeObserver(entries => {\n entries.forEach(this.setChildrenWidthAndResize);\n });\n\n [].slice\n .call(menuUl.children)\n .concat(menuUl)\n .forEach(el => {\n this.resizeObserver.observe(el);\n });\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutationObserver = new MutationObserver(() => {\n this.resizeObserver.disconnect();\n [].slice\n .call(menuUl.children)\n .concat(menuUl)\n .forEach(el => {\n this.resizeObserver.observe(el);\n });\n this.setChildrenWidthAndResize();\n });\n this.mutationObserver.observe(menuUl, {\n attributes: false,\n childList: true,\n subTree: false,\n });\n }\n }\n }\n\n componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n if (this.mutationObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n // get all valid menuItem nodes\n getMenuItemNodes = () => {\n const { prefixCls } = this.props;\n const ul = ReactDOM.findDOMNode(this);\n if (!ul) {\n return [];\n }\n\n // filter out all overflowed indicator placeholder\n return [].slice.call(ul.children).filter(node => {\n return node.className.split(' ').indexOf(`${prefixCls}-overflowed-submenu`) < 0;\n });\n };\n\n getOverflowedSubMenuItem = (keyPrefix, overflowedItems, renderPlaceholder) => {\n const { overflowedIndicator, level, mode, prefixCls, theme, style: propStyle } = this.props;\n if (level !== 1 || mode !== 'horizontal') {\n return null;\n }\n // put all the overflowed item inside a submenu\n // with a title of overflow indicator ('...')\n const copy = this.props.children[0];\n const { children: throwAway, title, eventKey, ...rest } = copy.props;\n\n let style = { ...propStyle };\n let key = `${keyPrefix}-overflowed-indicator`;\n\n if (overflowedItems.length === 0 && renderPlaceholder !== true) {\n style = {\n ...style,\n display: 'none',\n };\n } else if (renderPlaceholder) {\n style = {\n ...style,\n visibility: 'hidden',\n // prevent from taking normal dom space\n position: 'absolute',\n };\n key = `${key}-placeholder`;\n }\n\n const popupClassName = theme ? `${prefixCls}-${theme}` : '';\n const props = {};\n menuAllProps.forEach(k => {\n if (rest[k] !== undefined) {\n props[k] = rest[k];\n }\n });\n\n return (\n <SubMenu\n title={overflowedIndicator}\n className={`${prefixCls}-overflowed-submenu`}\n popupClassName={popupClassName}\n {...props}\n key={key}\n eventKey={`${keyPrefix}-overflowed-indicator`}\n disabled={false}\n style={style}\n >\n {overflowedItems}\n </SubMenu>\n );\n };\n\n // memorize rendered menuSize\n setChildrenWidthAndResize = () => {\n if (this.props.mode !== 'horizontal') {\n return;\n }\n const ul = ReactDOM.findDOMNode(this);\n\n if (!ul) {\n return;\n }\n\n const ulChildrenNodes = ul.children;\n\n if (!ulChildrenNodes || ulChildrenNodes.length === 0) {\n return;\n }\n\n const lastOverflowedIndicatorPlaceholder = ul.children[ulChildrenNodes.length - 1];\n\n // need last overflowed indicator for calculating length;\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'inline-block');\n\n const menuItemNodes = this.getMenuItemNodes();\n\n // reset display attribute for all hidden elements caused by overflow to calculate updated width\n // and then reset to original state after width calculation\n\n const overflowedItems = menuItemNodes.filter(\n c => c.className.split(' ').indexOf(MENUITEM_OVERFLOWED_CLASSNAME) >= 0,\n );\n\n overflowedItems.forEach(c => {\n setStyle(c, 'display', 'inline-block');\n });\n\n this.menuItemSizes = menuItemNodes.map(c => getWidth(c));\n\n overflowedItems.forEach(c => {\n setStyle(c, 'display', 'none');\n });\n this.overflowedIndicatorWidth = getWidth(ul.children[ul.children.length - 1]);\n this.originalTotalWidth = this.menuItemSizes.reduce((acc, cur) => acc + cur, 0);\n this.handleResize();\n // prevent the overflowed indicator from taking space;\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'none');\n };\n\n resizeObserver = null;\n mutationObserver = null;\n\n // original scroll size of the list\n originalTotalWidth = 0;\n\n // copy of overflowed items\n overflowedItems = [];\n\n // cache item of the original items (so we can track the size and order)\n menuItemSizes = [];\n\n handleResize = () => {\n if (this.props.mode !== 'horizontal') {\n return;\n }\n\n const ul = ReactDOM.findDOMNode(this);\n if (!ul) {\n return;\n }\n const width = getWidth(ul);\n\n this.overflowedItems = [];\n let currentSumWidth = 0;\n\n // index for last visible child in horizontal mode\n let lastVisibleIndex = undefined;\n\n if (this.originalTotalWidth > width) {\n lastVisibleIndex = -1;\n\n this.menuItemSizes.forEach(liWidth => {\n currentSumWidth += liWidth;\n if (currentSumWidth + this.overflowedIndicatorWidth <= width) {\n lastVisibleIndex++;\n }\n });\n }\n\n this.setState({ lastVisibleIndex });\n };\n\n renderChildren(children) {\n // need to take care of overflowed items in horizontal mode\n const { lastVisibleIndex } = this.state;\n return (children || []).reduce((acc, childNode, index) => {\n let item = childNode;\n if (this.props.mode === 'horizontal') {\n let overflowed = this.getOverflowedSubMenuItem(childNode.props.eventKey, []);\n if (\n lastVisibleIndex !== undefined &&\n this.props.className.indexOf(`${this.props.prefixCls}-root`) !== -1\n ) {\n if (index > lastVisibleIndex) {\n item = cloneElement(\n childNode,\n // 这里修改 eventKey 是为了防止隐藏状态下还会触发 openkeys 事件\n {\n style: { display: 'none' },\n eventKey: `${childNode.props.eventKey}-hidden`,\n className: `${childNode.className} ${MENUITEM_OVERFLOWED_CLASSNAME}`,\n },\n );\n }\n if (index === lastVisibleIndex + 1) {\n this.overflowedItems = children.slice(lastVisibleIndex + 1).map(c => {\n return cloneElement(\n c,\n // children[index].key will become '.$key' in clone by default,\n // we have to overwrite with the correct key explicitly\n { key: c.props.eventKey, mode: 'vertical-left' },\n );\n });\n\n overflowed = this.getOverflowedSubMenuItem(\n childNode.props.eventKey,\n this.overflowedItems,\n );\n }\n }\n\n const ret = [...acc, overflowed, item];\n\n if (index === children.length - 1) {\n // need a placeholder for calculating overflowed indicator width\n ret.push(this.getOverflowedSubMenuItem(childNode.props.eventKey, [], true));\n }\n return ret;\n }\n return [...acc, item];\n }, []);\n }\n\n render() {\n const {\n hiddenClassName,\n hidden,\n prefixCls,\n overflowedIndicator,\n mode,\n level,\n tag: Tag,\n children,\n theme,\n ...rest\n } = this.props;\n\n if (hidden) {\n rest.className += ` ${hiddenClassName}`;\n }\n\n return <Tag {...rest}>{this.renderChildren(this.props.children)}</Tag>;\n }\n}\n","import React, { Children, cloneElement, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport { connect } from 'mini-store';\nimport KeyCode from '../../_util/KeyCode';\nimport createChainedFunction from '../util/createChainedFunction';\nimport { getKeyFromChildrenIndex, loopMenuItem, menuAllProps } from './util';\nimport DOMWrap from './DOMWrap';\n\nfunction allDisabled(arr) {\n if (!arr.length) {\n return true;\n }\n return arr.every(c => !!c.props.disabled);\n}\n\nfunction updateActiveKey(store, menuId, activeKey) {\n const state = store.getState();\n store.setState({\n activeKey: {\n ...state.activeKey,\n [menuId]: activeKey,\n },\n });\n}\n\nfunction getEventKey(props) {\n // when eventKey not available ,it's menu and return menu id '0-menu-'\n return props.eventKey || '0-menu-';\n}\n\nexport function getActiveKey(props, originalActiveKey) {\n let activeKey = originalActiveKey;\n const { children, eventKey } = props;\n if (activeKey) {\n let found;\n loopMenuItem(children, (c, i) => {\n if (c && !c.props.disabled && activeKey === getKeyFromChildrenIndex(c, eventKey, i)) {\n found = true;\n }\n });\n if (found) {\n return activeKey;\n }\n }\n activeKey = null;\n if (props.defaultActiveFirst) {\n loopMenuItem(children, (c, i) => {\n if (!activeKey && c && !c.props.disabled) {\n activeKey = getKeyFromChildrenIndex(c, eventKey, i);\n }\n });\n return activeKey;\n }\n return activeKey;\n}\n\nexport function saveRef(c) {\n if (c) {\n const index = this.instanceArray.indexOf(c);\n if (index !== -1) {\n // update component if it's already inside instanceArray\n this.instanceArray[index] = c;\n } else {\n // add component if it's not in instanceArray yet;\n this.instanceArray.push(c);\n }\n }\n}\n\nexport class SubPopupMenu extends Component {\n static propTypes = {\n onSelect: PropTypes.func,\n onClick: PropTypes.func,\n onDeselect: PropTypes.func,\n onOpenChange: PropTypes.func,\n onDestroy: PropTypes.func,\n openTransitionName: PropTypes.string,\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n openKeys: PropTypes.arrayOf(PropTypes.string),\n hidden: PropTypes.bool,\n children: PropTypes.any,\n parentMenu: PropTypes.object,\n eventKey: PropTypes.string,\n store: PropTypes.shape({\n getState: PropTypes.func,\n setState: PropTypes.func,\n }),\n\n // adding in refactor\n focusable: PropTypes.bool,\n multiple: PropTypes.bool,\n style: PropTypes.object,\n defaultActiveFirst: PropTypes.bool,\n activeKey: PropTypes.string,\n selectedKeys: PropTypes.arrayOf(PropTypes.string),\n defaultSelectedKeys: PropTypes.arrayOf(PropTypes.string),\n defaultOpenKeys: PropTypes.arrayOf(PropTypes.string),\n level: PropTypes.number,\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']),\n triggerSubMenuAction: PropTypes.oneOf(['click', 'hover']),\n inlineIndent: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n manualRef: PropTypes.func,\n itemIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n expandIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n };\n\n static defaultProps = {\n prefixCls: 'rc-menu',\n className: '',\n mode: 'vertical',\n level: 1,\n inlineIndent: 24,\n hidden: false,\n focusable: true,\n style: {},\n manualRef: noop,\n };\n\n constructor(props) {\n super(props);\n\n props.store.setState({\n activeKey: {\n ...props.store.getState().activeKey,\n [props.eventKey]: getActiveKey(props, props.activeKey),\n },\n });\n\n this.instanceArray = [];\n }\n\n componentDidMount() {\n // invoke customized ref to expose component to mixin\n if (this.props.manualRef) {\n this.props.manualRef(this);\n }\n }\n\n shouldComponentUpdate(nextProps) {\n return !this.props.hidden || !nextProps.hidden;\n }\n\n componentDidUpdate() {\n const props = this.props;\n const originalActiveKey = 'activeKey' in props ? props.activeKey : props.store.getState().activeKey[getEventKey(props)];\n const activeKey = getActiveKey(props, originalActiveKey);\n if (activeKey !== originalActiveKey) {\n updateActiveKey(props.store, getEventKey(props), activeKey);\n }\n }\n\n // all keyboard events callbacks run from here at first\n onKeyDown = (e, callback) => {\n const keyCode = e.keyCode;\n let handled;\n this.getFlatInstanceArray().forEach((obj) => {\n if (obj && obj.props.active && obj.onKeyDown) {\n handled = obj.onKeyDown(e);\n }\n });\n if (handled) {\n return 1;\n }\n let activeItem = null;\n if (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN) {\n activeItem = this.step(keyCode === KeyCode.UP ? -1 : 1);\n }\n if (activeItem) {\n e.preventDefault();\n updateActiveKey(this.props.store, getEventKey(this.props), activeItem.props.eventKey);\n\n if (typeof callback === 'function') {\n callback(activeItem);\n }\n\n return 1;\n }\n };\n\n onItemHover = (e) => {\n const { key, hover } = e;\n updateActiveKey(this.props.store, getEventKey(this.props), hover ? key : null);\n };\n\n onDeselect = (selectInfo) => {\n this.props.onDeselect(selectInfo);\n };\n\n onSelect = (selectInfo) => {\n this.props.onSelect(selectInfo);\n };\n\n onClick = (e) => {\n this.props.onClick(e);\n };\n\n onOpenChange = (e) => {\n this.props.onOpenChange(e);\n };\n\n onDestroy = (key) => {\n /* istanbul ignore next */\n this.props.onDestroy(key);\n };\n\n getFlatInstanceArray = () => {\n return this.instanceArray;\n };\n\n getOpenTransitionName = () => {\n return this.props.openTransitionName;\n };\n\n step = (direction) => {\n let children = this.getFlatInstanceArray();\n const activeKey = this.props.store.getState().activeKey[getEventKey(this.props)];\n const len = children.length;\n if (!len) {\n return null;\n }\n if (direction < 0) {\n children = children.concat().reverse();\n }\n // find current activeIndex\n let activeIndex = -1;\n children.every((c, ci) => {\n if (c && c.props.eventKey === activeKey) {\n activeIndex = ci;\n return false;\n }\n return true;\n });\n if (\n !this.props.defaultActiveFirst && activeIndex !== -1\n &&\n allDisabled(children.slice(activeIndex, len - 1))\n ) {\n return undefined;\n }\n const start = (activeIndex + 1) % len;\n let i = start;\n\n do {\n const child = children[i];\n if (!child || child.props.disabled) {\n i = (i + 1) % len;\n } else {\n return child;\n }\n } while (i !== start);\n\n return null;\n };\n\n renderCommonMenuItem = (child, i, extraProps) => {\n const state = this.props.store.getState();\n const props = this.props;\n const key = getKeyFromChildrenIndex(child, props.eventKey, i);\n const childProps = child.props;\n const isActive = key === state.activeKey;\n const newChildProps = {\n mode: childProps.mode || props.mode,\n level: props.level,\n inlineIndent: props.inlineIndent,\n renderMenuItem: this.renderMenuItem,\n rootPrefixCls: props.prefixCls,\n index: i,\n parentMenu: props.parentMenu,\n // customized ref function, need to be invoked manually in child's componentDidMount\n manualRef: childProps.disabled ? undefined : createChainedFunction(child.ref, saveRef.bind(this)),\n eventKey: key,\n active: !childProps.disabled && isActive,\n multiple: props.multiple,\n onClick: (e) => {\n (childProps.onClick || noop)(e);\n this.onClick(e);\n },\n onItemHover: this.onItemHover,\n openTransitionName: this.getOpenTransitionName(),\n openAnimation: props.openAnimation,\n subMenuOpenDelay: props.subMenuOpenDelay,\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n onOpenChange: this.onOpenChange,\n onDeselect: this.onDeselect,\n onSelect: this.onSelect,\n builtinPlacements: props.builtinPlacements,\n itemIcon: childProps.itemIcon || this.props.itemIcon,\n expandIcon: childProps.expandIcon || this.props.expandIcon,\n ...extraProps,\n };\n if (props.mode === 'inline') {\n newChildProps.triggerSubMenuAction = 'click';\n }\n return cloneElement(child, newChildProps);\n };\n\n renderMenuItem = (c, i, subMenuKey) => {\n /* istanbul ignore if */\n if (!c) {\n return null;\n }\n const props = this.props;\n const extraProps = {\n openKeys: props.openKeys,\n selectedKeys: props.selectedKeys,\n triggerSubMenuAction: props.triggerSubMenuAction,\n subMenuKey,\n };\n return this.renderCommonMenuItem(c, i, extraProps);\n };\n\n render() {\n const { ...props } = this.props;\n\n this.instanceArray = [];\n const className = classNames(\n props.prefixCls,\n props.className,\n `${props.prefixCls}-${props.mode}`,\n );\n const haveRendered = this.haveRendered;\n this.haveRendered = true;\n this.haveOpened = this.haveOpened || !props.hidden || props.forceSubMenuRender;\n if (!this.haveOpened) {\n return null;\n }\n const domProps = {\n className,\n // role could be 'select' and by default set to menu\n role: props.role || 'menu',\n };\n if (props.id) {\n domProps.id = props.id;\n }\n if (props.focusable) {\n domProps.tabIndex = '0';\n domProps.onKeyDown = this.onKeyDown;\n }\n const { prefixCls, eventKey, hidden, level, mode, overflowedIndicator, theme } = props;\n menuAllProps.forEach(key => delete props[key]);\n\n const transitionAppear = !(!haveRendered && !props.hidden && props.mode === 'inline');\n\n props.className += ` ${props.prefixCls}-sub`;\n delete props.onClick;\n const animProps = {};\n if (props.openTransitionName) {\n animProps.transitionName = props.openTransitionName;\n } else if (typeof props.openAnimation === 'object') {\n animProps.animation = { ...props.openAnimation };\n if (!transitionAppear) {\n delete animProps.animation.appear;\n }\n }\n return (\n /* eslint-disable */\n <DOMWrap\n {...props}\n prefixCls={prefixCls}\n mode={mode}\n tag=\"ul\"\n level={level}\n theme={theme}\n hiddenClassName={`${prefixCls}-hidden`}\n hidden={hidden}\n overflowedIndicator={overflowedIndicator}\n {...domProps}\n >\n {Children.map(\n props.children,\n (c, i) => this.renderMenuItem(c, i, eventKey || '0-menu-'),\n )}\n </DOMWrap>\n /*eslint-enable */\n );\n }\n}\n\nconst connected = connect()(SubPopupMenu);\n\nexport default connected;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\n\nvar categories = {\n whatsNew: [\n 'circulate', 'knowledge', 'pipeline',\n 'role_assignments', 'application_allocation', 'redeploy_line', 'add_column', 'add_row', 'application_market', 'backup_line', 'delete_column', 'delete_row', 'establish_base',\n 'merge_cell', 'rate_review1', 'revocation', 'split_cell', 'template_configuration', 'widgets_line',\n 'project_line', 'project_group', 'project_filled', 'scissors', 'category',\n 'subscription', 'line_manage', 'nearby', 'authorize',\n 'publish_cancel', 'subscription_cancel', 'project_program', 'agile-feature', 'baseline-vertical_split',\n 'number', 'popup_selection', 'toggle_off', 'project_program_analyze', 'application_-general',\n 'deploy_list', 'auto_complete', 'combo_box', 'data_source', 'multistage_combo_box',\n 'API_management', 'API_market', 'API_publish', 'API_subscription', 'APIS', 'auto_deploy',\n 'sync_records', 'sync_user', 'test-case', 'test-automation', 'token', 'change_size',\n 'add_crt', 'add_branch', 'line', 'secret', 'recover', 'table', 'test_execution', 'test_progress',\n 'test_record', 'execution_schedule', 'cluster', 'kubernetes_cluster', 'disconnect',\n 'running', 'notification_setting', 'authority', 'develop_console', 'frame', 'record_test',\n 'agile_epic', 'agile_fault', 'agile_story', 'agile_subtask', 'agile_task', 'auto_test',\n ],\n direction: [\n 'baseline-arrow_drop_down', 'baseline-arrow_drop_up', 'baseline-arrow_left', 'baseline-arrow_right',\n 'play_90', 'replay_90', 'navigate_before', 'navigate_next', 'arrow_back',\n 'arrow_downward', 'arrow_drop_down', 'arrow_drop_down_circle', 'arrow_drop_up', 'arrow_forward', 'arrow_upward',\n 'expand_less', 'expand_more', 'fast_forward', 'fast_rewind', 'first_page', 'last_page', 'skip_next', 'skip_previous',\n 'subdirectory_arrow_left', 'subdirectory_arrow_right', 'trending_down', 'trending_flat', 'trending_up',\n 'unfold_less', 'unfold_more',\n ],\n suggestion: [\n 'cancle_a', 'cancle_b', 'forbidden_a', 'forbidden_b', 'block', 'finished', 'alarm', 'access_alarms', 'schedule', 'alarm_off', 'alarm_on',\n 'add', 'add_a_photo', 'alarm_add', 'add_alert', 'add_box', 'add_circle', 'control_point', 'add_location',\n 'add_shopping_cart', 'queue', 'add_to_queue', 'cancel', 'check', 'check_circle', 'close', 'not_interested', 'do_not_disturb_alt',\n 'do_not_disturb_off', 'remove', 'remove_circle_outline', 'remove_circle', 'done', 'done_all', 'indeterminate_check_box', 'info', 'info_outline',\n 'priority_high', 'verified_user', 'report', 'warning',\n ],\n edit: [\n 'border_all', 'border_bottom', 'border_clear',\n 'border_color', 'border_horizontal', 'border_inner', 'border_left', 'border_outer',\n 'border_right', 'border_style', 'border_top', 'border_vertical',\n 'code', 'photo_library', 'collections_bookmark', 'palette', 'colorize', 'comment',\n 'compare', 'compare_arrows', 'content_cut', 'content_paste', 'content_copy', 'mode_edit',\n 'crop', 'crop_16_9', 'crop_3_2', 'crop_landscape', 'crop_7_5', 'crop_din', 'crop_free', 'crop_original', 'crop_portrait', 'crop_rotate',\n 'crop_square', 'delete', 'delete_forever', 'delete_sweep', 'error', 'error_outline',\n 'flip', 'flip_to_back', 'flip_to_front', 'font_download',\n 'format_align_center', 'format_align_justify', 'format_align_left', 'format_align_right', 'format_bold', 'format_clear',\n 'format_color_fill', 'format_color_reset', 'format_color_text', 'format_indent_decrease', 'format_indent_increase', 'format_italic',\n 'format_line_spacing', 'format_list_bulleted', 'format_list_numbered', 'format_paint', 'format_quote', 'format_shapes', 'format_size',\n 'format_strikethrough', 'format_textdirection_l_to_r', 'format_textdirection_r_to_l', 'format_underlined',\n 'fullscreen', 'fullscreen_exit', 'functions', 'g_translate', 'grid_off', 'grid_on', 'print', 'sort', 'sort_by_alpha',\n 'text_fields', 'text_format', 'texture', 'transform', 'translate', 'undo', 'wrap_text', 'zoom_in', 'zoom_out', 'zoom_out_map',\n ],\n data: [\n 'devops_chart', 'agile_chart', 'test_chart', 'bar_chart', 'burnout_map', 'table_chart', 'bubble_chart', 'pie_chart', 'pie_chart_outlined',\n 'show_chart',\n ],\n other: [\n 'create_new_folder', 'folder_open2', 'folder', 'folder_open', 'folder_shared', 'folder_special', 'note', 'note_add',\n 'lock', 'unlock', 'lock_open', 'lock_outline', 'classname', 'state_over', 'task_schedule', 'unallocated_question',\n 'unfinished_question', 'all_reports', 'iterative_workbench', 'outstanding_tasks', 'report_overview', 'test_execute',\n 'test_planning', 'project_list', 'domain_list', 'IP_out', 'message_notification',\n 'all_read', 'inmail_template', 'mail_set', 'export_EOT', 'export_html',\n 'export_PDF', 'export_RTF', 'export_XAR', 'mail_modal', 'message_modal', 'message2', 'usermap', 'document',\n 'pass', 'operation_bug', 'operation_change', 'operation_event', 'operation_help',\n 'operation_new_feature', 'operation_problem', 'operation_service_request',\n 'operation_subtask', 'operation_task', 'port', 'aim_port',\n 'saga_define', 'role_tag', 'agile', 'quality', 'appmarket', 'merge_request',\n 'APItest', 'relation', 'relate', 'manage_project', 'book', 'contact_support',\n 'ballot', 'test', 'priority', 'compass', 'sutask',\n 'explicit-outline', 'explicit2', 'framework', 'inbox_content', 'visits', 'work_log',\n 'link', 'link2', 'baseline-link_off', 'baseline-drag_indicator', 'baseline-file_copy', 'sms_outline', 'versionline',\n 'root', 'micro', 'publish2', 'center', 'filter2', 'manage_person',\n 'manage_organization', 'password', 'custom_Directory', 'predefine', 'project', 'return', 'API',\n '/', 'application_model', 'microservice', 'instance', 'instance_outline', 'IAM', 'routeroutline',\n 'version', 'devops', 'CI', 'kubernetes', 'branch', 'point', 'wait_circle', 'add_activity',\n 'add_task', 'export', 'debug',\n 'database', 'Development-monitoring', 'insight', 'jsfiddle', 'Operation-monitoring', 'rocket',\n 'wrench', 'skipped_a', 'skipped_b', 'd_rotation', 'ac_unit', 'accessibility',\n 'accessible', 'account_balance', 'account_balance_wallet', 'account_box', 'account_circle', 'adb',\n 'adjust', 'airline_seat_flat', 'airline_seat_flat_angled',\n 'airline_seat_individual_suite', 'airline_seat_legroom_extra', 'airline_seat_legroom_normal',\n 'airline_seat_legroom_reduced', 'airline_seat_recline_extra', 'airline_seat_recline_normal',\n 'flight', 'airplanemode_inactive', 'airplay', 'airport_shuttle',\n 'album', 'all_inclusive', 'all_out', 'announcement', 'apps', 'archive',\n 'art_track', 'aspect_ratio', 'poll', 'assignment', 'assignment_ind', 'assignment_late', 'assignment_return',\n 'assignment_returned', 'assignment_turned_in', 'assistant', 'flag', 'attach_file', 'attach_money', 'attachment',\n 'audiotrack', 'autorenew', 'av_timer', 'backspace', 'cloud_upload', 'battery_alert', 'battery_charging_full',\n 'battery_std', 'battery_unknown', 'beach_access', 'beenhere', 'bluetooth', 'bluetooth_searching',\n 'bluetooth_connected', 'bluetooth_disabled', 'blur_circular', 'blur_linear', 'blur_off',\n 'blur_on', 'class', 'turned_in', 'turned_in_not', 'branding_watermark',\n 'brightness_1', 'brightness_2', 'brightness_3', 'brightness_4', 'brightness_low',\n 'brightness_medium', 'brightness_high', 'brightness_auto', 'broken_image', 'brush',\n 'bug_report', 'build', 'burst_mode', 'domain', 'business_center',\n 'cached', 'cake', 'phone', 'call_end', 'call_made', 'merge_type', 'call_missed',\n 'call_missed_outgoing', 'call_received', 'call_split', 'call_to_action', 'redeem', 'card_membership', 'card_travel',\n 'casino', 'cast', 'cast_connected', 'center_focus_strong', 'center_focus_weak', 'change_history', 'chat', 'chat_bubble',\n 'chat_bubble_outline', 'check_box', 'check_box_outline_blank', 'child_care',\n 'child_friendly', 'chrome_reader_mode', 'clear_all', 'closed_caption', 'wb_cloudy', 'cloud_circle', 'cloud_done',\n 'cloud_download', 'cloud_off', 'cloud_queue', 'laptop', 'confirmation_number', 'contact_mail', 'contact_phone', 'contacts',\n 'control_point_duplicate', 'copyright', 'payment', 'dashboard', 'data_usage', 'dehaze', 'description',\n 'desktop_mac', 'desktop_windows', 'details', 'developer_board', 'developer_mode', 'device_hub', 'phonelink', 'devices_other',\n 'dialer_sip', 'dialpad', 'directions', 'directions_bike', 'directions_boat', 'directions_bus', 'directions_car', 'directions_railway',\n 'directions_run', 'directions_transit', 'directions_walk', 'disc_full', 'dns', 'dock', 'donut_large', 'donut_small', 'drafts', 'drag_handle',\n 'time_to_leave', 'dvr', 'edit_location', 'eject', 'markunread', 'enhanced_encryption', 'equalizer',\n 'euro_symbol', 'ev_station', 'today', 'date_range', 'insert_invitation', 'event_available', 'event_busy', 'event_note', 'event_seat',\n 'exit_to_app', 'explicit', 'explore', 'extension', 'face', 'favorite', 'favorite_border',\n 'featured_play_list', 'featured_video', 'sms_failed', 'fiber_dvr', 'fiber_manual_record', 'fiber_new', 'fiber_pin',\n 'fiber_smart_record', 'get_app', 'file_upload', 'terrain', 'find_in_page', 'find_replace',\n 'fingerprint', 'fitness_center', 'flare', 'flash_auto', 'flash_off', 'flash_on', 'flight_land', 'flight_takeoff',\n 'question_answer', 'forward', 'forward_10', 'forward_30', 'forward_5', 'free_breakfast', 'games', 'gavel',\n 'gesture', 'gif', 'goat', 'golf_course', 'my_location', 'location_searching', 'location_disabled', 'star', 'gradient', 'grain',\n 'graphic_eq', 'people', 'group_add', 'group_work', 'hd', 'hdr_off', 'hdr_on', 'hdr_strong', 'hdr_weak',\n 'headset', 'headset_mic', 'healing', 'hearing', 'help', 'help_outline', 'high_quality', 'highlight', 'highlight_off', 'restore',\n 'home', 'hot_tub', 'local_hotel', 'hourglass_empty', 'hourglass_full', 'http', 'image_aspect_ratio',\n 'import_contacts', 'import_export', 'important_devices', 'inbox',\n 'input', 'insert_comment', 'insert_drive_file', 'tag_faces', 'invert_colors', 'invert_colors_off', 'iso', 'kitchen', 'label',\n 'label_outline', 'language', 'laptop_chromebook', 'laptop_mac', 'laptop_windows', 'open_in_new',\n 'layers', 'layers_clear', 'leak_add', 'leak_remove', 'lens', 'library_books', 'library_music', 'lightbulb_outline',\n 'line_style', 'line_weight', 'linear_scale', 'linked_camera', 'list', 'live_help', 'live_tv', 'local_play', 'local_airport',\n 'local_atm', 'local_bar', 'local_cafe', 'local_car_wash', 'local_convenience_store', 'restaurant_menu', 'local_drink',\n 'local_florist', 'local_gas_station', 'shopping_cart', 'local_hospital', 'local_laundry_service', 'local_library', 'local_mall',\n 'theaters', 'local_offer', 'local_parking', 'local_pharmacy', 'local_pizza', 'local_shipping', 'local_taxi', 'location_city',\n 'location_off', 'room', 'sync', 'loupe', 'low_priority', 'loyalty', 'mail_outline',\n 'map', 'markunread_mailbox', 'memory', 'menu', 'message', 'mic', 'mic_none', 'mic_off', 'mms',\n 'mode_comment', 'monetization_on', 'money_off', 'monochrome_photos', 'mood_bad', 'more', 'more_horiz',\n 'more_vert', 'motorcycle', 'mouse', 'move_to_inbox', 'movie_creation', 'movie_filter', 'multiline_chart',\n 'music_note', 'music_video', 'nature', 'nature_people', 'navigation', 'near_me', 'network_cell',\n 'network_check', 'network_locked', 'network_wifi', 'new_releases', 'next_week', 'nfc', 'no_encryption',\n 'signal_cellular_no_sim', 'offline_pin', 'ondemand_video', 'opacity', 'open_in_browser',\n 'open_with', 'pages', 'pageview', 'pan_tool', 'panorama', 'radio_button_unchecked', 'panorama_horizontal',\n 'panorama_vertical', 'panorama_wide_angle', 'party_mode', 'pause', 'pause_circle_filled', 'pause_circle_outline',\n 'people_outline', 'perm_camera_mic', 'perm_contact_calendar', 'perm_data_setting', 'perm_device_information', 'person_outline',\n 'perm_media', 'perm_phone_msg', 'perm_scan_wifi', 'person', 'person_add', 'person_pin', 'person_pin_circle', 'personal_video',\n 'pets', 'pin_drop', 'plus_one', 'polymer', 'pool', 'portable_wifi_off',\n 'portrait', 'power', 'power_input', 'power_settings_new', 'pregnant_woman', 'present_to_all',\n 'public', 'publish', 'queue_music', 'queue_play_next', 'radio', 'radio_button_checked', 'rate_review', 'receipt',\n 'recent_actors', 'record_voice_over', 'redo', 'refresh', 'remove_from_queue',\n 'visibility', 'remove_shopping_cart', 'reorder', 'repeat', 'repeat_one', 'replay', 'replay_10', 'replay_30', 'replay_5',\n 'reply', 'reply_all', 'restaurant', 'restore_page', 'ring_volume', 'room_service',\n 'rotate_90_degrees_ccw', 'rotate_left', 'rotate_right', 'rounded_corner', 'router', 'rowing', 'rss_feed',\n 'rv_hookup', 'satellite', 'save', 'scanner', 'school', 'screen_lock_landscape', 'screen_lock_portrait',\n 'screen_lock_rotation', 'screen_rotation', 'screen_share', 'sd_storage', 'search', 'security', 'select_all',\n 'send', 'share', 'shop', 'shop_two', 'shopping_basket', 'short_text',\n 'shuffle', 'slideshow', 'slow_motion_video', 'stay_primary_portrait', 'smoke_free', 'smoking_rooms',\n 'textsms', 'snooze', 'spa', 'space_bar', 'speaker', 'speaker_group',\n 'speaker_notes', 'speaker_notes_off', 'speaker_phone', 'spellcheck', 'star_border', 'star_half',\n 'stars', 'stay_primary_landscape', 'stop', 'stop_screen_share', 'storage', 'store_mall_directory',\n 'straighten', 'streetview', 'strikethrough_s', 'style',\n 'subject', 'subscriptions', 'subtitles', 'subway', 'supervisor_account', 'surround_sound', 'sync_disabled', 'sync_problem',\n 'system_update', 'system_update_alt', 'tab', 'tab_unselected', 'tablet', 'tablet_android', 'tablet_mac', 'tap_and_play',\n 'thumb_down', 'thumb_up', 'thumbs_up_down', 'timelapse',\n 'timeline', 'timer', 'timer_10', 'timer_3', 'timer_off', 'title', 'toc', 'toll', 'tonality',\n 'touch_app', 'toys', 'track_changes', 'traffic', 'train', 'tram', 'transfer_within_a_station',\n 'tune', 'tv', 'unarchive', 'update', 'usb', 'vertical_align_bottom', 'vertical_align_center', 'vertical_align_top',\n 'vibration', 'video_call', 'video_label', 'video_library', 'videocam', 'videocam_off', 'videogame_asset',\n 'vignette', 'visibility_off', 'voice_chat', 'voicemail', 'vpn_key', 'vpn_lock', 'wallpaper', 'watch', 'watch_later',\n 'wb_auto', 'wb_incandescent', 'wb_iridescent', 'wb_sunny', 'wc', 'web', 'web_asset', 'weekend', 'whatshot', 'widgets',\n 'wifi', 'wifi_lock', 'wifi_tethering', 'work', 'youtube_searched_for', 'git', 'android',\n ],\n series: [\n 'wait_one_a', 'wait_one_b', 'wait_two_a', 'wait_two_b', 'wait_three_a', 'wait_three_b',\n 'wait_four_a', 'wait_four_b', 'wait_five_a', 'wait_five_b',\n 'exposure', 'exposure_neg_1', 'exposure_neg_2', 'exposure_plus_1', 'exposure_plus_2', 'exposure_zero',\n 'filter', 'filter_1', 'filter_2', 'filter_3', 'filter_4', 'filter_5',\n 'filter_6', 'filter_7', 'filter_8', 'filter_9', 'filter_9_plus', 'filter_b_and_w', 'filter_center_focus', 'filter_drama',\n 'filter_frames', 'filter_list', 'filter_none', 'filter_tilt_shift', 'filter_vintage',\n 'keyboard', 'keyboard_arrow_down', 'keyboard_arrow_left', 'keyboard_arrow_right', 'keyboard_arrow_up', 'keyboard_backspace',\n 'keyboard_capslock', 'keyboard_hide', 'keyboard_return', 'keyboard_tab', 'keyboard_voice',\n 'looks', 'looks_one', 'looks_two', 'looks_3', 'looks_4', 'looks_5', 'looks_6',\n 'notifications', 'notifications_active', 'notifications_none', 'notifications_off', 'notifications_paused',\n 'phone_android', 'phone_android2', 'phone_bluetooth_speaker', 'phone_forwarded', 'phone_in_talk', 'phone_iphone', 'phone_locked',\n 'phone_missed', 'phone_paused', 'phonelink_erase', 'phonelink_lock', 'phonelink_off', 'phonelink_ring', 'phonelink_setup',\n 'camera', 'photo_camera', 'camera_enhance', 'camera_front', 'camera_rear', 'camera_roll', 'photo',\n 'photo_album', 'photo_filter', 'photo_size_select_actual', 'photo_size_select_large',\n 'photo_size_select_small', 'picture_as_pdf', 'picture_in_picture', 'picture_in_picture_alt',\n 'play_arrow', 'play_circle_filled', 'play_circle_outline', 'play_for_work', 'playlist_add', 'playlist_add_check', 'playlist_play',\n 'sentiment_dissatisfied', 'sentiment_neutral', 'sentiment_satisfied', 'sentiment_very_dissatisfied', 'sentiment_very_satisfied',\n 'settings', 'settings_applications', 'settings_backup_restore', 'settings_bluetooth',\n 'settings_brightness', 'settings_cell', 'settings_ethernet', 'settings_input_antenna', 'settings_input_composite',\n 'settings_input_hdmi', 'settings_input_svideo', 'settings_overscan', 'settings_phone', 'settings_power', 'settings_remote',\n 'settings_system_daydream', 'settings_voice',\n 'signal_cellular_4_bar', 'signal_cellular_connected_no_internet_4_bar',\n 'signal_cellular_null', 'signal_cellular_off', 'signal_wifi_4_bar', 'signal_wifi_4_bar_lock',\n 'signal_wifi_off', 'sim_card', 'sim_card_alert',\n 'swap_calls', 'swap_horiz', 'swap_vert', 'swap_vertical_circle', 'switch_camera', 'switch_video',\n 'view_agenda', 'view_array', 'view_carousel', 'view_column', 'view_comfy', 'view_compact', 'view_day', 'view_headline', 'view_list',\n 'view_module', 'view_quilt', 'view_stream', 'view_week', 'volume_down', 'volume_mute', 'volume_off', 'volume_up',\n ],\n};\n\nvar icons = {\n favorite: ['routeroutline', 'role_tag', 'hdr_strong', 'bar_chart', 'reply', 'class', 'manage_project', 'transfer_within_a_station', 'room_service', 'publish2', 'laptop_mac', 'developer_board', 'CI', 'content_copy', 'book', 'wrench', 'view_day', 'date_range', 'extension', 'filter_vintage', 'hdr_weak', 'dashboard', 'Operation-monitoring', 'application_model', 'folder_shared', 'delete', 'develop_console', 'agile', 'merge_request', 'task_schedule', 'link', 'settings', 'baseline-drag_indicator', 'apps', 'account_box', 'test_planning', 'donut_small', 'agile_fault', 'person', 'view_list', 'directions_run', 'instance_outline', 'password', 'inmail_template', 'error', 'vpn_key', 'classname', 'assignment_ind', 'contact_mail', 'work_log', 'speaker_notes', 'format_list_numbered', 'shuffle', 'API', 'linear_scale', 'device_hub', 'saga_define', 'devops_chart', 'table_chart', 'settings_input_composite', 'event_available', 'flip_to_back', 'kubernetes', 'notifications', 'hearing', 'authority', 'cluster', 'public', 'devops', 'account_balance', 'mail_set', 'person_add', 'record_test', 'folder', 'usermap', 'assignment_late', 'micro', 'secret', 'appmarket', 'brightness_low', 'IAM', 'test', 'message', 'project', 'local_offer', 'domain', 'router', 'settings_applications', 'style', 'polymer', 'manage_organization', 'microservice', 'description', 'jsfiddle', 'manage_person', 'transform', 'subject', 'compare_arrows', 'branch', 'root', 'auto_test', 'strikethrough_s', 'center', 'widgets', 'volume_up', 'link2', 'Development-monitoring', 'whatshot', 'message_notification', 'insert_drive_file', 'accessibility', 'youtube_searched_for', 'test_execution', 'baseline-list_alt', 'cloud_upload', 'APItest', 'build', 'assignment', 'language', 'home', 'favorite', 'filter_drama', 'flare', 'folder_special', 'tag_faces', 'lightbulb_outline', 'loyalty', 'star_border'],\n default: [],\n};\n\nObject.keys(categories).forEach(function (key) {\n icons.default.push.apply(icons.default, categories[key]);\n});\n\nexports.categories = categories;\nexports.icons = icons;\n","import message from '../message';\r\nimport exception from '../_util/exception';\r\nimport { $l } from '../locale-context';\r\nconst defaultFeedback = {\r\n loadSuccess(_result) { },\r\n loadFailed(error) {\r\n message.error(exception(error, $l('DataSet', 'query_failure')));\r\n },\r\n submitSuccess(_result) {\r\n message.success($l('DataSet', 'submit_success'));\r\n },\r\n submitFailed(error) {\r\n message.error(exception(error, $l('DataSet', 'submit_failure')));\r\n },\r\n};\r\nexport default defaultFeedback;\r\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","module.exports = true;\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","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\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","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\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","exports.f = {}.propertyIsEnumerable;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","import React, { Component, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport noop from 'lodash/noop';\nimport classNames from 'classnames';\nimport { connect } from 'mini-store';\nimport Trigger from '../trigger';\nimport KeyCode from '../../_util/KeyCode';\nimport SubPopupMenu from './SubPopupMenu';\nimport placements from './placements';\nimport Animate from '../../animate';\nimport { getMenuIdFromSubMenuEventKey, loopMenuItemRecursively, menuAllProps, } from './util';\n\nlet guid = 0;\n\nconst popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop',\n};\n\nconst updateDefaultActiveFirst = (store, eventKey, defaultActiveFirst) => {\n const menuId = getMenuIdFromSubMenuEventKey(eventKey);\n const state = store.getState();\n store.setState({\n defaultActiveFirst: {\n ...state.defaultActiveFirst,\n [menuId]: defaultActiveFirst,\n },\n });\n};\n\nexport class SubMenu extends Component {\n static propTypes = {\n parentMenu: PropTypes.object,\n title: PropTypes.node,\n children: PropTypes.any,\n selectedKeys: PropTypes.array,\n openKeys: PropTypes.array,\n onClick: PropTypes.func,\n onOpenChange: PropTypes.func,\n rootPrefixCls: PropTypes.string,\n eventKey: PropTypes.string,\n multiple: PropTypes.bool,\n active: PropTypes.bool, // TODO: remove\n onItemHover: PropTypes.func,\n onSelect: PropTypes.func,\n triggerSubMenuAction: PropTypes.string,\n onDeselect: PropTypes.func,\n onDestroy: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onTitleMouseEnter: PropTypes.func,\n onTitleMouseLeave: PropTypes.func,\n onTitleClick: PropTypes.func,\n popupOffset: PropTypes.array,\n isOpen: PropTypes.bool,\n store: PropTypes.object,\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']),\n manualRef: PropTypes.func,\n itemIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n expandIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n };\n\n static defaultProps = {\n onMouseEnter: noop,\n onMouseLeave: noop,\n onTitleMouseEnter: noop,\n onTitleMouseLeave: noop,\n onTitleClick: noop,\n manualRef: noop,\n mode: 'vertical',\n title: '',\n };\n\n constructor(props) {\n super(props);\n const store = props.store;\n const eventKey = props.eventKey;\n const defaultActiveFirst = store.getState().defaultActiveFirst;\n\n this.isRootMenu = false;\n\n let value = false;\n\n if (defaultActiveFirst) {\n value = defaultActiveFirst[eventKey];\n }\n\n updateDefaultActiveFirst(store, eventKey, value);\n }\n\n componentDidMount() {\n this.componentDidUpdate();\n }\n\n componentDidUpdate() {\n const { mode, parentMenu, manualRef } = this.props;\n\n // invoke customized ref to expose component to mixin\n if (manualRef) {\n manualRef(this);\n }\n\n if (mode !== 'horizontal' || !parentMenu.isRootMenu || !this.props.isOpen) {\n return;\n }\n\n this.minWidthTimeout = setTimeout(() => this.adjustWidth(), 0);\n }\n\n componentWillUnmount() {\n const { onDestroy, eventKey } = this.props;\n if (onDestroy) {\n onDestroy(eventKey);\n }\n\n /* istanbul ignore if */\n if (this.minWidthTimeout) {\n clearTimeout(this.minWidthTimeout);\n }\n\n /* istanbul ignore if */\n if (this.mouseenterTimeout) {\n clearTimeout(this.mouseenterTimeout);\n }\n }\n\n onDestroy = (key) => {\n this.props.onDestroy(key);\n };\n\n onKeyDown = (e) => {\n const keyCode = e.keyCode;\n const menu = this.menuInstance;\n const {\n isOpen,\n store,\n } = this.props;\n\n if (keyCode === KeyCode.ENTER) {\n this.onTitleClick(e);\n updateDefaultActiveFirst(store, this.props.eventKey, true);\n return true;\n }\n\n if (keyCode === KeyCode.RIGHT) {\n if (isOpen) {\n menu.onKeyDown(e);\n } else {\n this.triggerOpenChange(true);\n // need to update current menu's defaultActiveFirst value\n updateDefaultActiveFirst(store, this.props.eventKey, true);\n }\n return true;\n }\n if (keyCode === KeyCode.LEFT) {\n let handled;\n if (isOpen) {\n handled = menu.onKeyDown(e);\n } else {\n return undefined;\n }\n if (!handled) {\n this.triggerOpenChange(false);\n handled = true;\n }\n return handled;\n }\n\n if (isOpen && (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN)) {\n return menu.onKeyDown(e);\n }\n };\n\n onOpenChange = (e) => {\n this.props.onOpenChange(e);\n };\n\n onPopupVisibleChange = (visible) => {\n this.triggerOpenChange(visible, visible ? 'mouseenter' : 'mouseleave');\n };\n\n onMouseEnter = (e) => {\n const { eventKey: key, onMouseEnter, store } = this.props;\n updateDefaultActiveFirst(store, this.props.eventKey, false);\n onMouseEnter({\n key,\n domEvent: e,\n });\n };\n\n onMouseLeave = (e) => {\n const {\n parentMenu,\n eventKey,\n onMouseLeave,\n } = this.props;\n parentMenu.subMenuInstance = this;\n onMouseLeave({\n key: eventKey,\n domEvent: e,\n });\n };\n\n onTitleMouseEnter = (domEvent) => {\n const { eventKey: key, onItemHover, onTitleMouseEnter } = this.props;\n onItemHover({\n key,\n hover: true,\n });\n onTitleMouseEnter({\n key,\n domEvent,\n });\n };\n\n onTitleMouseLeave = (e) => {\n const { parentMenu, eventKey, onItemHover, onTitleMouseLeave } = this.props;\n parentMenu.subMenuInstance = this;\n onItemHover({\n key: eventKey,\n hover: false,\n });\n onTitleMouseLeave({\n key: eventKey,\n domEvent: e,\n });\n };\n\n onTitleClick = (e) => {\n const { props } = this;\n props.onTitleClick({\n key: props.eventKey,\n domEvent: e,\n });\n if (props.triggerSubMenuAction === 'hover') {\n return;\n }\n this.triggerOpenChange(!props.isOpen, 'click');\n updateDefaultActiveFirst(props.store, this.props.eventKey, false);\n };\n\n onSubMenuClick = (info) => {\n // in the case of overflowed submenu\n // onClick is not copied over\n if (typeof this.props.onClick === 'function') {\n this.props.onClick(this.addKeyPath(info));\n }\n };\n\n onSelect = (info) => {\n this.props.onSelect(info);\n };\n\n onDeselect = (info) => {\n this.props.onDeselect(info);\n };\n\n getPrefixCls = () => {\n return `${this.props.rootPrefixCls}-submenu`;\n };\n\n getActiveClassName = () => {\n return `${this.getPrefixCls()}-active`;\n };\n\n getDisabledClassName = () => {\n return `${this.getPrefixCls()}-disabled`;\n };\n\n getSelectedClassName = () => {\n return `${this.getPrefixCls()}-selected`;\n };\n\n getOpenClassName = () => {\n return `${this.props.rootPrefixCls}-submenu-open`;\n };\n\n saveMenuInstance = (c) => {\n // children menu instance\n this.menuInstance = c;\n };\n\n addKeyPath = (info) => {\n return {\n ...info,\n keyPath: (info.keyPath || []).concat(this.props.eventKey),\n };\n };\n\n triggerOpenChange = (open, type) => {\n const key = this.props.eventKey;\n const openChange = () => {\n this.onOpenChange({\n key,\n item: this,\n trigger: type,\n open,\n });\n };\n if (type === 'mouseenter') {\n // make sure mouseenter happen after other menu item's mouseleave\n this.mouseenterTimeout = setTimeout(() => {\n openChange();\n }, 0);\n } else {\n openChange();\n }\n };\n\n isChildrenSelected = () => {\n const ret = { find: false };\n loopMenuItemRecursively(this.props.children, this.props.selectedKeys, ret);\n return ret.find;\n };\n\n isOpen = () => {\n return this.props.openKeys.indexOf(this.props.eventKey) !== -1;\n };\n\n adjustWidth = () => {\n /* istanbul ignore if */\n if (!this.subMenuTitle || !this.menuInstance) {\n return;\n }\n const popupMenu = findDOMNode(this.menuInstance);\n if (popupMenu.offsetWidth >= this.subMenuTitle.offsetWidth) {\n return;\n }\n\n /* istanbul ignore next */\n popupMenu.style.minWidth = `${this.subMenuTitle.offsetWidth}px`;\n };\n\n saveSubMenuTitle = (subMenuTitle) => {\n this.subMenuTitle = subMenuTitle;\n };\n\n renderChildren(children) {\n const props = this.props;\n const baseProps = {\n mode: props.mode === 'horizontal' ? 'vertical' : props.mode,\n hidden: !this.props.isOpen,\n level: props.level + 1,\n inlineIndent: props.inlineIndent,\n focusable: false,\n onClick: this.onSubMenuClick,\n onSelect: this.onSelect,\n onDeselect: this.onDeselect,\n onDestroy: this.onDestroy,\n selectedKeys: props.selectedKeys,\n eventKey: `${props.eventKey}-menu-`,\n openKeys: props.openKeys,\n openTransitionName: props.openTransitionName,\n openAnimation: props.openAnimation,\n onOpenChange: this.onOpenChange,\n subMenuOpenDelay: props.subMenuOpenDelay,\n parentMenu: this,\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n triggerSubMenuAction: props.triggerSubMenuAction,\n builtinPlacements: props.builtinPlacements,\n defaultActiveFirst: props.store.getState()\n .defaultActiveFirst[getMenuIdFromSubMenuEventKey(props.eventKey)],\n multiple: props.multiple,\n prefixCls: props.rootPrefixCls,\n id: this._menuId,\n manualRef: this.saveMenuInstance,\n itemIcon: props.itemIcon,\n expandIcon: props.expandIcon,\n };\n\n const haveRendered = this.haveRendered;\n this.haveRendered = true;\n\n this.haveOpened = this.haveOpened || !baseProps.hidden || baseProps.forceSubMenuRender;\n // never rendered not planning to, don't render\n if (!this.haveOpened) {\n return <div />;\n }\n\n // don't show transition on first rendering (no animation for opened menu)\n // show appear transition if it's hidden (not sure why)\n // show appear transition if it's not inline mode\n const transitionAppear = haveRendered || baseProps.hidden || !baseProps.mode === 'inline';\n\n baseProps.className = ` ${baseProps.prefixCls}-sub`;\n const animProps = {};\n\n if (baseProps.openTransitionName) {\n animProps.transitionName = baseProps.openTransitionName;\n } else if (typeof baseProps.openAnimation === 'object') {\n animProps.animation = { ...baseProps.openAnimation };\n if (!transitionAppear) {\n delete animProps.animation.appear;\n }\n }\n\n return (\n <Animate\n {...animProps}\n hiddenProp=\"hidden\"\n component=\"\"\n transitionAppear={transitionAppear}\n >\n <SubPopupMenu {...baseProps} id={this._menuId}>{children}</SubPopupMenu>\n </Animate>\n );\n }\n\n render() {\n const props = { ...this.props };\n const isOpen = props.isOpen;\n const prefixCls = this.getPrefixCls();\n const isInlineMode = props.mode === 'inline';\n const className = classNames(prefixCls, `${prefixCls}-${props.mode}`, {\n [props.className]: !!props.className,\n [this.getOpenClassName()]: isOpen,\n [this.getActiveClassName()]: props.active || (isOpen && !isInlineMode),\n [this.getDisabledClassName()]: props.disabled,\n [this.getSelectedClassName()]: this.isChildrenSelected(),\n });\n\n if (!this._menuId) {\n if (props.eventKey) {\n this._menuId = `${props.eventKey}$Menu`;\n } else {\n this._menuId = `$__$${++guid}$Menu`;\n }\n }\n\n let mouseEvents = {};\n let titleClickEvents = {};\n let titleMouseEvents = {};\n if (!props.disabled) {\n mouseEvents = {\n onMouseLeave: this.onMouseLeave,\n onMouseEnter: this.onMouseEnter,\n };\n\n // only works in title, not outer li\n titleClickEvents = {\n onClick: this.onTitleClick,\n };\n titleMouseEvents = {\n onMouseEnter: this.onTitleMouseEnter,\n onMouseLeave: this.onTitleMouseLeave,\n };\n }\n\n const style = {};\n if (isInlineMode) {\n style.paddingLeft = props.inlineIndent * props.level;\n }\n\n let ariaOwns = {};\n // only set aria-owns when menu is open\n // otherwise it would be an invalid aria-owns value\n // since corresponding node cannot be found\n if (this.props.isOpen) {\n ariaOwns = {\n 'aria-owns': this._menuId,\n };\n }\n\n // expand custom icon should NOT be displayed in menu with horizontal mode.\n let icon = null;\n if (props.mode !== 'horizontal') {\n icon = this.props.expandIcon; // ReactNode\n if (typeof this.props.expandIcon === 'function') {\n icon = createElement(\n this.props.expandIcon,\n { ...this.props },\n );\n }\n }\n\n const title = (\n <div\n ref={this.saveSubMenuTitle}\n style={style}\n className={`${prefixCls}-title`}\n {...titleMouseEvents}\n {...titleClickEvents}\n aria-expanded={isOpen}\n {...ariaOwns}\n aria-haspopup=\"true\"\n title={typeof props.title === 'string' ? props.title : undefined}\n >\n {props.title}\n {icon || <i className={`${prefixCls}-arrow`} />}\n </div>\n );\n const children = this.renderChildren(props.children);\n\n const getPopupContainer = props.parentMenu.isRootMenu ? props.parentMenu.props.getPopupContainer : triggerNode => triggerNode.parentNode;\n const popupPlacement = popupPlacementMap[props.mode];\n const popupAlign = props.popupOffset ? { offset: props.popupOffset } : {};\n const popupClassName = props.mode === 'inline' ? '' : props.popupClassName;\n const {\n disabled,\n triggerSubMenuAction,\n subMenuOpenDelay,\n forceSubMenuRender,\n subMenuCloseDelay,\n builtinPlacements,\n } = props;\n menuAllProps.forEach(key => delete props[key]);\n // Set onClick to null, to ignore propagated onClick event\n delete props.onClick;\n\n return (\n <li\n {...props}\n {...mouseEvents}\n className={className}\n role=\"menuitem\"\n >\n {isInlineMode && title}\n {isInlineMode && children}\n {!isInlineMode && (\n <Trigger\n prefixCls={prefixCls}\n popupClassName={`${prefixCls}-popup ${popupClassName}`}\n getPopupContainer={getPopupContainer}\n builtinPlacements={Object.assign({}, placements, builtinPlacements)}\n popupPlacement={popupPlacement}\n popupVisible={isOpen}\n popupAlign={popupAlign}\n popup={children}\n action={disabled ? [] : [triggerSubMenuAction]}\n mouseEnterDelay={subMenuOpenDelay}\n mouseLeaveDelay={subMenuCloseDelay}\n onPopupVisibleChange={this.onPopupVisibleChange}\n forceRender={forceSubMenuRender}\n >\n {title}\n </Trigger>\n )}\n </li>\n );\n }\n}\n\nconst connected = connect(({ openKeys, activeKey, selectedKeys }, { eventKey, subMenuKey }) => ({\n isOpen: openKeys.indexOf(eventKey) > -1,\n active: activeKey[subMenuKey] === eventKey,\n selectedKeys,\n}))(SubMenu);\n\nconnected.isSubMenu = true;\n\nexport default connected;\n","const autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1,\n};\n\nexport const placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7],\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7],\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n },\n};\n\nexport default placements;\n","import Tree from './Tree';\nimport TreeNode from './TreeNode';\n\nTree.TreeNode = TreeNode;\n\nexport { TreeNode };\nexport default Tree;\n","import React, { cloneElement, Component, } from 'react';\r\nimport classNames from 'classnames';\r\nimport animation from '../_util/openAnimation';\r\nimport RcTree, { TreeNode } from '../rc-components/tree';\r\nimport Icon from '../icon';\r\nimport Progress from '../progress';\r\nimport { ProgressType } from '../progress/enum';\r\nimport { Size } from '../_util/enum';\r\nimport { getPrefixCls } from '../configure';\r\nexport { TreeNode };\r\nexport default class Tree extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.renderSwitcherIcon = ({ isLeaf, loading }) => {\r\n const { showLine, switcherIcon } = this.props;\r\n const prefixCls = this.getPrefixCls();\r\n if (loading) {\r\n return (<Progress type={ProgressType.loading} className={`${prefixCls}-switcher-loading-icon`} size={Size.small}/>);\r\n }\r\n const switcherCls = `${prefixCls}-switcher-icon`;\r\n if (showLine) {\r\n if (isLeaf) {\r\n return <Icon type=\"note\" className={`${prefixCls}-switcher-line-icon`}/>;\r\n }\r\n return <Icon type=\"arrow_drop_down\" className={switcherCls}/>;\r\n }\r\n if (isLeaf) {\r\n return null;\r\n }\r\n if (switcherIcon) {\r\n const switcherOriginCls = switcherIcon.props.className || '';\r\n return cloneElement(switcherIcon, {\r\n className: [switcherOriginCls, switcherCls],\r\n });\r\n }\r\n return <Icon type=\"arrow_drop_down\" className={switcherCls}/>;\r\n };\r\n }\r\n getPrefixCls() {\r\n const { prefixCls } = this.props;\r\n return getPrefixCls('tree', prefixCls);\r\n }\r\n render() {\r\n const props = this.props;\r\n const { className, showIcon, checkable, children } = props;\r\n const prefixCls = this.getPrefixCls();\r\n return (<RcTree {...props} className={classNames(!showIcon && `${prefixCls}-icon-hide`, className)} checkable={checkable ? <span className={`${prefixCls}-checkbox-inner`}/> : checkable} switcherIcon={this.renderSwitcherIcon} prefixCls={prefixCls}>\n {children}\n </RcTree>);\r\n }\r\n}\r\nTree.displayName = 'Tree';\r\nTree.TreeNode = TreeNode;\r\nTree.defaultProps = {\r\n checkable: false,\r\n showIcon: false,\r\n openAnimation: animation,\r\n};\r\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","export const matchMediaPolifill = (mediaQuery) => {\r\n // console.warn('`matchMedia` is not supported!');\r\n return {\r\n media: mediaQuery,\r\n matches: false,\r\n addListener() { },\r\n removeListener() { },\r\n };\r\n};\r\n","const autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1,\n};\n\nconst targetOffset = [0, 0];\n\nexport const placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset,\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset,\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset,\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset,\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset,\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset,\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset,\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset,\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset,\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset,\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset,\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset,\n },\n};\n\nexport default placements;\n","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nexport default class Notice extends Component {\n static propTypes = {\n duration: PropTypes.number,\n onClose: PropTypes.func,\n children: PropTypes.any,\n closeIcon: PropTypes.node,\n };\n\n static defaultProps = {\n onEnd() {},\n onClose() {},\n duration: 1.5,\n style: {\n right: '50%',\n },\n };\n\n componentDidMount() {\n this.startCloseTimer();\n }\n\n componentWillUnmount() {\n this.clearCloseTimer();\n }\n\n close = () => {\n this.clearCloseTimer();\n this.props.onClose();\n };\n\n startCloseTimer = () => {\n if (this.props.duration) {\n this.closeTimer = setTimeout(() => {\n this.close();\n }, this.props.duration * 1000);\n }\n };\n\n clearCloseTimer = () => {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n };\n\n render() {\n const props = this.props;\n const componentClass = `${props.prefixCls}-notice`;\n const className = {\n [`${componentClass}`]: 1,\n [`${componentClass}-closable`]: props.closable,\n [props.className]: !!props.className,\n };\n return (\n <div\n className={classNames(className)}\n style={props.style}\n onMouseEnter={this.clearCloseTimer}\n onMouseLeave={this.startCloseTimer}\n >\n <div className={`${componentClass}-content`}>{props.children}</div>\n {props.closable ? (\n <a tabIndex=\"0\" onClick={this.close} className={`${componentClass}-close`}>\n {props.closeIcon || <span className={`${componentClass}-close-x`}></span>}\n </a>\n ) : null}\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Animate from '../../animate';\nimport createChainedFunction from '../util/createChainedFunction';\nimport classnames from 'classnames';\nimport Notice from './Notice';\n\nlet seed = 0;\nconst now = Date.now();\n\nfunction getUuid() {\n return `rcNotification_${now}_${seed++}`;\n}\n\nexport default class Notification extends Component {\n static propTypes = {\n prefixCls: PropTypes.string,\n transitionName: PropTypes.string,\n animation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n style: PropTypes.object,\n closeIcon: PropTypes.node,\n };\n\n static defaultProps = {\n prefixCls: 'rc-notification',\n animation: 'fade',\n style: {\n top: 65,\n left: '50%',\n },\n };\n\n static newInstance = function newNotificationInstance(properties, callback) {\n const { getContainer, ...props } = properties || {};\n const div = document.createElement('div');\n if (getContainer) {\n const root = getContainer();\n root.appendChild(div);\n } else {\n document.body.appendChild(div);\n }\n let called = false;\n\n function ref(notification) {\n if (called) {\n return;\n }\n called = true;\n callback({\n notice(noticeProps) {\n notification.add(noticeProps);\n },\n removeNotice(key) {\n notification.remove(key);\n },\n component: notification,\n destroy() {\n ReactDOM.unmountComponentAtNode(div);\n div.parentNode.removeChild(div);\n },\n });\n }\n\n ReactDOM.render(<Notification {...props} ref={ref} />, div);\n };\n\n state = {\n notices: [],\n };\n\n getTransitionName() {\n const props = this.props;\n let transitionName = props.transitionName;\n if (!transitionName && props.animation) {\n transitionName = `${props.prefixCls}-${props.animation}`;\n }\n return transitionName;\n }\n\n add = notice => {\n const key = (notice.key = notice.key || getUuid());\n this.setState(previousState => {\n const notices = previousState.notices;\n if (!notices.filter(v => v.key === key).length) {\n return {\n notices: notices.concat(notice),\n };\n }\n });\n };\n\n remove = key => {\n this.setState(previousState => {\n return {\n notices: previousState.notices.filter(notice => notice.key !== key),\n };\n });\n };\n\n render() {\n const props = this.props;\n const noticeNodes = this.state.notices.map(notice => {\n const onClose = createChainedFunction(this.remove.bind(this, notice.key), notice.onClose);\n return (\n <Notice\n prefixCls={props.prefixCls}\n {...notice}\n onClose={onClose}\n closeIcon={props.closeIcon}\n >\n {notice.content}\n </Notice>\n );\n });\n const className = {\n [props.prefixCls]: 1,\n [props.className]: !!props.className,\n };\n return (\n <div className={classnames(className)} style={props.style}>\n <Animate transitionName={this.getTransitionName()}>{noticeNodes}</Animate>\n </div>\n );\n }\n}\n","import Notification from './Notification';\n\nexport default Notification;\n","export var Breakpoint;\r\n(function (Breakpoint) {\r\n Breakpoint[\"xxl\"] = \"xxl\";\r\n Breakpoint[\"xl\"] = \"xl\";\r\n Breakpoint[\"lg\"] = \"lg\";\r\n Breakpoint[\"md\"] = \"md\";\r\n Breakpoint[\"sm\"] = \"sm\";\r\n Breakpoint[\"xs\"] = \"xs\";\r\n})(Breakpoint || (Breakpoint = {}));\r\n","import { PureComponent } from 'react';\r\nimport isObject from 'lodash/isObject';\r\nimport { isArrayLike } from 'mobx';\r\nimport { matchMediaPolifill } from '../_util/mediaQueryListPolyfill';\r\nimport { Breakpoint } from './enum';\r\nlet enquire;\r\nif (typeof window !== 'undefined') {\r\n window.matchMedia = window.matchMedia || matchMediaPolifill;\r\n // eslint-disable-next-line global-require\r\n enquire = require('enquire.js');\r\n}\r\nconst responsiveMap = {\r\n [Breakpoint.xxl]: '(min-width: 1600px)',\r\n [Breakpoint.xl]: '(min-width: 1200px)',\r\n [Breakpoint.lg]: '(min-width: 992px)',\r\n [Breakpoint.md]: '(min-width: 768px)',\r\n [Breakpoint.sm]: '(min-width: 576px)',\r\n [Breakpoint.xs]: '(max-width: 575px)',\r\n};\r\nconst responsiveArray = Object.keys(responsiveMap);\r\nexport default class Responsive extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.state = { breakpoints: {} };\r\n }\r\n isDisabled(props) {\r\n const { disabled, items } = props;\r\n if (!disabled && items) {\r\n return !items.some(isObject);\r\n }\r\n return true;\r\n }\r\n componentDidMount() {\r\n if (!this.isDisabled(this.props)) {\r\n this.register();\r\n }\r\n }\r\n componentDidUpdate() {\r\n const { onChange } = this.props;\r\n if (onChange) {\r\n onChange(this.getValues());\r\n }\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n if (this.isDisabled(this.props) && !this.isDisabled(nextProps)) {\r\n this.register();\r\n }\r\n if (!this.isDisabled(this.props) && this.isDisabled(nextProps)) {\r\n this.unregister();\r\n }\r\n }\r\n componentWillUnmount() {\r\n if (!this.isDisabled(this.props)) {\r\n this.unregister();\r\n }\r\n }\r\n register() {\r\n if (enquire) {\r\n responsiveArray.map((breakpoint) => enquire.register(responsiveMap[breakpoint], {\r\n match: () => {\r\n this.setState(prevState => ({\r\n breakpoints: {\r\n ...prevState.breakpoints,\r\n [breakpoint]: true,\r\n },\r\n }));\r\n },\r\n unmatch: () => {\r\n this.setState(prevState => ({\r\n breakpoints: {\r\n ...prevState.breakpoints,\r\n [breakpoint]: false,\r\n },\r\n }));\r\n },\r\n // Keep a empty destory to avoid triggering unmatch when unregister\r\n destroy() { },\r\n }));\r\n }\r\n }\r\n unregister() {\r\n Object.keys(responsiveMap).map((breakpoint) => enquire.unregister(responsiveMap[breakpoint]));\r\n }\r\n processValue(value) {\r\n const { breakpoints } = this.state;\r\n if (isArrayLike(value)) {\r\n return value.map(this.processValue, this);\r\n }\r\n if (isObject(value)) {\r\n for (let i = 0; i < responsiveArray.length; i++) {\r\n const breakpoint = responsiveArray[i];\r\n if (breakpoints[breakpoint] && value[breakpoint] !== undefined) {\r\n return value[breakpoint];\r\n }\r\n }\r\n return undefined;\r\n }\r\n return value;\r\n }\r\n getValues() {\r\n const { items } = this.props;\r\n if (items) {\r\n return items.map(this.processValue, this);\r\n }\r\n return [];\r\n }\r\n render() {\r\n const { children } = this.props;\r\n if (typeof children === 'function') {\r\n return children(this.getValues());\r\n }\r\n return children;\r\n }\r\n}\r\nResponsive.displayName = 'Responsive';\r\n","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (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\nfunction _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\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar vendorPrefix;\nvar jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-'\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\n\nfunction getTransformName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nfunction setTransitionProperty(node, value) {\n var name = getTransitionName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n var name = getTransformName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nfunction getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\nfunction getTransformXY(node) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\nfunction setTransformXY(node, xy) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var arr;\n var match2d = transform.match(matrix2d);\n\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, \"matrix(\".concat(arr.join(','), \")\"));\n } else {\n var match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, \"matrix3d(\".concat(arr.join(','), \")\"));\n }\n } else {\n setTransform(node, \"translateX(\".concat(xy.x, \"px) translateY(\").concat(xy.y, \"px) translateZ(0)\"));\n }\n}\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605\n\nfunction forceRelayout(elem) {\n var originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n var value = v;\n\n if (_typeof(name) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n\n return undefined;\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = \"\".concat(value, \"px\");\n }\n\n el.style[name] = value;\n return undefined;\n }\n\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n var box;\n var x;\n var y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n\n box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top; // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n if (typeof ret !== 'number') {\n var d = w.document; // ie6,7,8 standard mode\n\n ret = d.documentElement[method];\n\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n // must use == for ie8\n\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n\n if (node.nodeType === 9) {\n return node;\n }\n\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n var computedStyle = cs;\n var val = '';\n var d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX; // Revert the changed values\n\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n} // 设置 elem 相对 elem.ownerDocument 的坐标\n\n\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var presetH = -999;\n var presetV = -999;\n var horizontalProperty = getOffsetDirection('left', option);\n var verticalProperty = getOffsetDirection('top', option);\n var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n }\n\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n } // force relayout\n\n\n forceRelayout(elem);\n var old = getOffset(elem);\n var originalStyle = {};\n\n for (var key in offset) {\n if (offset.hasOwnProperty(key)) {\n var dir = getOffsetDirection(key, option);\n var preset = key === 'left' ? presetH : presetV;\n var off = originalOffset[key] - old[key];\n\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n\n css(elem, originalStyle); // force relayout\n\n forceRelayout(elem);\n\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n\n var ret = {};\n\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n\n var _off = offset[_key] - originalOffset[_key];\n\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n\n css(elem, ret);\n}\n\nfunction setTransform$1(elem, offset) {\n var originalOffset = getOffset(elem);\n var originalXY = getTransformXY(elem);\n var resultXY = {\n x: originalXY.x,\n y: originalXY.y\n };\n\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n var oriOffset = getOffset(elem);\n var oLeft = oriOffset.left.toFixed(0);\n var oTop = oriOffset.top.toFixed(0);\n var tLeft = offset.left.toFixed(0);\n var tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (option.useCssTransform && getTransformName() in document.body.style) {\n setTransform$1(elem, offset);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name; // Remember the old values, and insert the new ones\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem); // Revert the old values\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n\n if (prop === 'border') {\n cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n\n return value;\n}\n\nvar domUtils = {\n getParent: function getParent(element) {\n var parent = element;\n\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n\n return parent;\n }\n};\neach(['Width', 'Height'], function (name) {\n domUtils[\"doc\".concat(name)] = function (refWin) {\n var d = refWin.document;\n return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n };\n\n domUtils[\"viewport\".concat(name)] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = \"client\".concat(name);\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n // backcompat 取 body\n\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, ex) {\n var extra = ex;\n\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.getBoundingClientRect().width : elem.getBoundingClientRect().height;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n cssBoxValue = getComputedStyleX(elem, name);\n\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n } // Normalize '', auto, and prepare for extra\n\n\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n }\n\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var val;\n var elem = args[0]; // in case elem is window\n // elem.offsetWidth === undefined\n\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, v) {\n var val = v;\n\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n\n return css(elem, name, val);\n }\n\n return undefined;\n }\n\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (var i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n\n return to;\n}\n\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument: getDocument,\n offset: function offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var i;\n var ret = {};\n\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n\n var overflow = obj.overflow;\n\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n\n return ret;\n },\n mix: mix,\n getWindowScrollLeft: function getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop: function getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge: function merge() {\n var ret = {};\n\n for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n }\n\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0\n};\nmix(utils, domUtils);\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nvar getParent = utils.getParent;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n } // ie 这个也不是完全可行\n\n /*\n <div style=\"width: 50px;height: 100px;overflow: hidden\">\n <div style=\"width: 50px;height: 100px;position: relative;\" id=\"d6\">\n 元素 6 高 100px 宽 50px<br/>\n </div>\n </div>\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent;\n var positionStyle = utils.css(element, 'position');\n var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n }\n\n for (parent = getParent(element); parent && parent !== body; parent = getParent(parent)) {\n positionStyle = utils.css(parent, 'position');\n\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n\n return null;\n}\n\nvar getParent$1 = utils.getParent;\nfunction isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent = null;\n\n for (parent = getParent$1(element); parent && parent !== body; parent = getParent$1(parent)) {\n var positionStyle = utils.css(parent, 'position');\n\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * 获得元素的显示部分的区域\n */\n\nfunction getVisibleRectForElement(element) {\n var visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity\n };\n var el = getOffsetParent(element);\n var doc = utils.getDocument(element);\n var win = doc.defaultView || doc.parentWindow;\n var body = doc.body;\n var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {\n var pos = utils.offset(el); // add border\n\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar\n pos.left + el.clientWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n\n el = getOffsetParent(el);\n } // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n\n\n var originalPosition = null;\n\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n var position = utils.css(element, 'position');\n\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n var documentWidth = documentElement.scrollWidth;\n var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n\n var bodyStyle = window.getComputedStyle(body);\n\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n } // Reset element position after calculate the visible area\n\n\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n var pos = utils.clone(elFuturePos);\n var size = {\n width: elRegion.width,\n height: elRegion.height\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n } // Left edge inside and right edge outside viewport, try to resize it.\n\n\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n } // Right edge outside viewport, try to move it.\n\n\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n } // Top edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n } // Top edge inside and bottom edge outside viewport, try to resize it.\n\n\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n } // Bottom edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nfunction getRegion(node) {\n var offset;\n var w;\n var h;\n\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n var win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win)\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\n/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\nfunction getAlignOffset(region, align) {\n var V = align.charAt(0);\n var H = align.charAt(1);\n var w = region.width;\n var h = region.height;\n var x = region.left;\n var y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n var p1 = getAlignOffset(refNodeRegion, points[1]);\n var p2 = getAlignOffset(elRegion, points[0]);\n var diff = [p2.left - p1.left, p2.top - p1.top];\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n };\n}\n\n/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n var ret = [];\n utils.each(points, function (p) {\n ret.push(p.replace(reg, function (m) {\n return map[m];\n }));\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n var n;\n\n if (/%$/.test(str)) {\n n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\n\n\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n var points = align.points;\n var offset = align.offset || [0, 0];\n var targetOffset = align.targetOffset || [0, 0];\n var overflow = align.overflow;\n var source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n var newOverflowCfg = {};\n var fail = 0; // 当前节点可以被放置的显示区域\n\n var visibleRect = getVisibleRectForElement(source); // 当前节点所占的区域, left/top/width/height\n\n var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比\n\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置\n\n var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域\n\n var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整\n\n if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n }); // 偏移量也反下\n\n var newOffset = flipOffset(offset, 0);\n var newTargetOffset = flipOffset(targetOffset, 0);\n var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var _newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n }); // 偏移量也反下\n\n\n var _newOffset = flipOffset(offset, 1);\n\n var _newTargetOffset = flipOffset(targetOffset, 1);\n\n var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\n\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n } // 如果失败,重新计算当前节点将要被放置的位置\n\n\n if (fail) {\n elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);\n utils.mix(newElRegion, elFuturePos);\n }\n\n var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n\n if (isStillFailX || isStillFailY) {\n points = align.points;\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n } // 2. 只有指定了可以调整当前方向才调整\n\n\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度\n\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n } // need judge to in case set fixed with in css on height auto element\n\n\n if (newElRegion.width !== elRegion.width) {\n utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n } // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如 <div 'relative'><el absolute></div>\n\n\n utils.offset(source, {\n left: newElRegion.left,\n top: newElRegion.top\n }, {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake\n });\n return {\n points: points,\n offset: offset,\n targetOffset: targetOffset,\n overflow: newOverflowCfg\n };\n}\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n\nfunction isOutOfVisibleRect(target) {\n var visibleRect = getVisibleRectForElement(target);\n var targetRegion = getRegion(target);\n return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom;\n}\n\nfunction alignElement(el, refNode, align) {\n var target = align.target || refNode;\n var refNodeRegion = getRegion(target);\n var isTargetNotOutOfVisible = !isOutOfVisibleRect(target);\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n var pageX;\n var pageY;\n var doc = utils.getDocument(el);\n var win = doc.defaultView || doc.parentWindow;\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n var tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0\n };\n var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point\n\n var points = [align.points[0], 'cc'];\n return doAlign(el, tgtRegion, _objectSpread2({}, align, {\n points: points\n }), pointInView);\n}\n\nexport default alignElement;\nexport { alignElement, alignPoint };\n//# sourceMappingURL=index.js.map\n","import { Children, cloneElement, Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { findDOMNode } from 'react-dom';\r\nimport noop from 'lodash/noop';\r\nimport domAlign from 'dom-align';\r\nimport EventManager from '../_util/EventManager';\r\nimport TaskRunner from '../_util/TaskRunner';\r\nfunction isWindow(obj) {\r\n return obj != null && obj === obj.window;\r\n}\r\nexport default class Align extends Component {\r\n forceAlign() {\r\n const { hidden, onAlign = noop, target = () => window, align } = this.props;\r\n if (!hidden) {\r\n const source = findDOMNode(this);\r\n const ref = target();\r\n onAlign(source, domAlign(source, ref, align), ref);\r\n }\r\n }\r\n componentDidMount() {\r\n const { hidden, monitorWindowResize } = this.props;\r\n this.forceAlign();\r\n if (!hidden && monitorWindowResize) {\r\n this.startMonitorWindowResize();\r\n }\r\n }\r\n componentDidUpdate(prevProps) {\r\n const { hidden, align, target = () => window, monitorWindowResize } = this.props;\r\n const { hidden: preHidden, align: preAlign, target: preTarget } = prevProps;\r\n let reAlign = false;\r\n if (!hidden) {\r\n if (preHidden || preAlign !== align) {\r\n reAlign = true;\r\n }\r\n else {\r\n const lastTarget = preTarget();\r\n const currentTarget = target();\r\n if (isWindow(lastTarget) && isWindow(currentTarget)) {\r\n reAlign = false;\r\n }\r\n else if (lastTarget !== currentTarget) {\r\n reAlign = true;\r\n }\r\n }\r\n }\r\n if (reAlign) {\r\n this.forceAlign();\r\n }\r\n if (monitorWindowResize && !hidden) {\r\n this.startMonitorWindowResize();\r\n }\r\n else {\r\n this.stopMonitorWindowResize();\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.stopMonitorWindowResize();\r\n }\r\n startMonitorWindowResize() {\r\n const { monitorBufferTime } = this.props;\r\n if (!this.resizeHandler) {\r\n this.resizeHandler = new EventManager(window);\r\n this.bufferMonitor = new TaskRunner();\r\n this.resizeHandler.addEventListener('resize', this.bufferMonitor.delay.bind(this.bufferMonitor, monitorBufferTime, this.forceAlign.bind(this)));\r\n }\r\n }\r\n stopMonitorWindowResize() {\r\n if (this.resizeHandler) {\r\n if (this.bufferMonitor) {\r\n this.bufferMonitor.cancel();\r\n }\r\n this.resizeHandler.clear();\r\n this.resizeHandler = null;\r\n }\r\n }\r\n render() {\r\n const { props } = this;\r\n const { childrenProps, children } = props;\r\n if (childrenProps) {\r\n const newProps = {};\r\n Object.keys(childrenProps).forEach(prop => {\r\n if ({}.hasOwnProperty.call(childrenProps, prop)) {\r\n newProps[prop] = props[childrenProps[prop]];\r\n }\r\n });\r\n return cloneElement(Children.only(children), newProps);\r\n }\r\n return children;\r\n }\r\n}\r\nAlign.displayName = 'Align';\r\nAlign.propTypes = {\r\n childrenProps: PropTypes.object,\r\n align: PropTypes.object.isRequired,\r\n target: PropTypes.func,\r\n onAlign: PropTypes.func,\r\n monitorBufferTime: PropTypes.number,\r\n monitorWindowResize: PropTypes.bool,\r\n hidden: PropTypes.bool,\r\n children: PropTypes.any,\r\n};\r\nAlign.defaultProps = {\r\n monitorBufferTime: 50,\r\n monitorWindowResize: false,\r\n hidden: true,\r\n};\r\n","import Align from './Align';\r\nexport default Align;\r\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\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","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","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","export default {\n /**\n * LEFT\n */\n LEFT: 37, // also NUM_WEST\n /**\n * UP\n */\n UP: 38, // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39, // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40, // also NUM_SOUTH\n};\n","import { Children } from 'react';\nimport isNil from 'lodash/isNil';\n\nexport function toArray(children) {\n const c = [];\n Children.forEach(children, child => {\n if (child) {\n c.push(child);\n }\n });\n return c;\n}\n\nexport function generateKey(key, index) {\n return String(isNil(key) ? index : key);\n}\n\nexport function getActiveIndex(children, activeKey) {\n const c = toArray(children);\n return c.findIndex((child, index) => generateKey(child.key, index) === activeKey);\n}\n\nexport function getActiveKey(children, index) {\n const c = toArray(children);\n return generateKey(c[index].key, index);\n}\n\nexport function setTransform(style, v) {\n style.transform = v;\n style.webkitTransform = v;\n style.mozTransform = v;\n}\n\nexport function isTransformSupported(style) {\n return 'transform' in style ||\n 'webkitTransform' in style ||\n 'MozTransform' in style;\n}\n\nexport function setTransition(style, v) {\n style.transition = v;\n style.webkitTransition = v;\n style.MozTransition = v;\n}\n\nexport function getTransformPropValue(v) {\n return {\n transform: v,\n WebkitTransform: v,\n MozTransform: v,\n };\n}\n\nexport function isVertical(tabBarPosition) {\n return tabBarPosition === 'left' || tabBarPosition === 'right';\n}\n\nexport function getTransformByIndex(index, tabBarPosition) {\n const translate = isVertical(tabBarPosition) ? 'translateY' : 'translateX';\n return `${translate}(${-index * 100}%) translateZ(0)`;\n}\n\nexport function getMarginStyle(index, tabBarPosition) {\n const marginDirection = isVertical(tabBarPosition) ? 'marginTop' : 'marginLeft';\n return {\n [marginDirection]: `${-index * 100}%`,\n };\n}\n\nexport function getStyle(el, property) {\n return +getComputedStyle(el).getPropertyValue(property).replace('px', '');\n}\n\nexport function setPxStyle(el, value, vertical) {\n value = vertical ? `0px, ${value}px, 0px` : `${value}px, 0px, 0px`;\n setTransform(el.style, `translate3d(${value})`);\n}\n\nexport function getDataAttr(props) {\n return Object.keys(props).reduce((prev, key) => {\n if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n prev[key] = props[key];\n }\n return prev;\n }, {});\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport createReactClass from 'create-react-class';\nimport classnames from 'classnames';\nimport { getDataAttr } from './utils';\n\nconst TabPane = createReactClass({\n displayName: 'TabPane',\n propTypes: {\n className: PropTypes.string,\n active: PropTypes.bool,\n style: PropTypes.any,\n destroyInactiveTabPane: PropTypes.bool,\n forceRender: PropTypes.bool,\n placeholder: PropTypes.node,\n },\n getDefaultProps() {\n return { placeholder: null };\n },\n render() {\n const {\n className,\n destroyInactiveTabPane,\n active,\n forceRender,\n rootPrefixCls,\n style,\n children,\n placeholder,\n ...restProps\n } = this.props;\n this._isActived = this._isActived || active;\n const prefixCls = `${rootPrefixCls}-tabpane`;\n const cls = classnames({\n [prefixCls]: 1,\n [`${prefixCls}-inactive`]: !active,\n [`${prefixCls}-active`]: active,\n [className]: className,\n });\n const isRender = destroyInactiveTabPane ? active : this._isActived;\n return (\n <div\n style={style}\n role=\"tabpanel\"\n aria-hidden={active ? 'false' : 'true'}\n className={cls}\n {...getDataAttr(restProps)}\n >\n {isRender || forceRender ? children : placeholder}\n </div>\n );\n },\n});\n\nexport default TabPane;\n","import React, { Children, cloneElement, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport noop from 'lodash/noop';\nimport classnames from 'classnames';\nimport KeyCode from './KeyCode';\nimport TabPane from './TabPane';\nimport { generateKey, getDataAttr } from './utils';\n\nfunction getDefaultActiveKey(props) {\n let activeKey;\n Children.forEach(props.children, (child, index) => {\n if (child && !activeKey && !child.props.disabled) {\n activeKey = generateKey(child.key, index);\n }\n });\n return activeKey;\n}\n\nfunction activeKeyIsValid(props, key) {\n const keys = Children.map(\n props.children,\n (child, index) => child && generateKey(child.key, index),\n );\n return keys.indexOf(key) >= 0;\n}\n\nexport default class Tabs extends Component {\n static propTypes = {\n destroyInactiveTabPane: PropTypes.bool,\n renderTabBar: PropTypes.func.isRequired,\n renderTabContent: PropTypes.func.isRequired,\n onChange: PropTypes.func,\n children: PropTypes.any,\n prefixCls: PropTypes.string,\n className: PropTypes.string,\n tabBarPosition: PropTypes.string,\n style: PropTypes.object,\n activeKey: PropTypes.string,\n defaultActiveKey: PropTypes.string,\n };\n\n static defaultProps = {\n prefixCls: 'rc-tabs',\n destroyInactiveTabPane: false,\n onChange: noop,\n tabBarPosition: 'top',\n style: {},\n };\n\n static TabPane = TabPane;\n\n constructor(props) {\n super(props);\n\n let activeKey;\n if ('activeKey' in props) {\n activeKey = props.activeKey;\n } else if ('defaultActiveKey' in props) {\n activeKey = props.defaultActiveKey;\n } else {\n activeKey = getDefaultActiveKey(props);\n }\n\n this.state = {\n activeKey,\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if ('activeKey' in nextProps) {\n this.setState({\n activeKey: nextProps.activeKey,\n });\n } else if (!activeKeyIsValid(nextProps, this.state.activeKey)) {\n this.setState({\n activeKey: getDefaultActiveKey(nextProps),\n });\n }\n }\n\n onTabClick = activeKey => {\n if (this.tabBar.props.onTabClick) {\n this.tabBar.props.onTabClick(activeKey);\n }\n this.setActiveKey(activeKey);\n };\n\n onNavKeyDown = e => {\n const eventKeyCode = e.keyCode;\n if (eventKeyCode === KeyCode.RIGHT || eventKeyCode === KeyCode.DOWN) {\n e.preventDefault();\n const nextKey = this.getNextActiveKey(true);\n this.onTabClick(nextKey);\n } else if (eventKeyCode === KeyCode.LEFT || eventKeyCode === KeyCode.UP) {\n e.preventDefault();\n const previousKey = this.getNextActiveKey(false);\n this.onTabClick(previousKey);\n }\n };\n\n setActiveKey = activeKey => {\n if (this.state.activeKey !== activeKey) {\n if (!('activeKey' in this.props)) {\n this.setState({\n activeKey,\n });\n }\n this.props.onChange(activeKey);\n }\n };\n\n getNextActiveKey = next => {\n const activeKey = this.state.activeKey;\n const children = [];\n Children.forEach(this.props.children, c => {\n if (c && !c.props.disabled) {\n if (next) {\n children.push(c);\n } else {\n children.unshift(c);\n }\n }\n });\n const length = children.length;\n let ret = length && generateKey(children[0].key, 0);\n children.forEach((child, i) => {\n if (generateKey(child.key, i) === activeKey) {\n if (i === length - 1) {\n ret = generateKey(children[0].key, 0);\n } else {\n ret = generateKey(children[i + 1].key, i + 1);\n }\n }\n });\n return ret;\n };\n\n render() {\n const props = this.props;\n const {\n prefixCls,\n tabBarPosition,\n className,\n renderTabContent,\n renderTabBar,\n destroyInactiveTabPane,\n ...restProps\n } = props;\n const cls = classnames({\n [prefixCls]: 1,\n [`${prefixCls}-${tabBarPosition}`]: 1,\n [className]: !!className,\n });\n\n this.tabBar = renderTabBar();\n const contents = [\n cloneElement(this.tabBar, {\n prefixCls,\n key: 'tabBar',\n onKeyDown: this.onNavKeyDown,\n tabBarPosition,\n onTabClick: this.onTabClick,\n panels: props.children,\n activeKey: this.state.activeKey,\n }),\n cloneElement(renderTabContent(), {\n prefixCls,\n tabBarPosition,\n activeKey: this.state.activeKey,\n destroyInactiveTabPane,\n children: props.children,\n onChange: this.setActiveKey,\n key: 'tabContent',\n }),\n ];\n if (tabBarPosition === 'bottom') {\n contents.reverse();\n }\n return (\n <div className={cls} style={props.style} {...getDataAttr(restProps)}>\n {contents}\n </div>\n );\n }\n}\n","import Tabs from './Tabs';\nimport TabPane from './TabPane';\nimport TabContent from './TabContent';\n\nexport default Tabs;\nexport { TabPane, TabContent };\n","import React, { Children, cloneElement } from 'react';\nimport createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { generateKey, getActiveIndex, getMarginStyle, getTransformByIndex, getTransformPropValue } from './utils';\n\nconst TabContent = createReactClass({\n displayName: 'TabContent',\n propTypes: {\n animated: PropTypes.bool,\n animatedWithMargin: PropTypes.bool,\n prefixCls: PropTypes.string,\n children: PropTypes.any,\n activeKey: PropTypes.string,\n style: PropTypes.any,\n tabBarPosition: PropTypes.string,\n },\n getDefaultProps() {\n return {\n animated: true,\n };\n },\n getTabPanes() {\n const props = this.props;\n const activeKey = props.activeKey;\n const children = props.children;\n const newChildren = [];\n\n Children.forEach(children, (child, index) => {\n if (!child) {\n return;\n }\n const key = generateKey(child.key, index);\n const active = activeKey === key;\n newChildren.push(cloneElement(child, {\n key,\n active,\n destroyInactiveTabPane: props.destroyInactiveTabPane,\n rootPrefixCls: props.prefixCls,\n }));\n });\n\n return newChildren;\n },\n render() {\n const { props } = this;\n const {\n prefixCls, children, activeKey,\n tabBarPosition, animated, animatedWithMargin,\n } = props;\n let { style } = props;\n const classes = classnames({\n [`${prefixCls}-content`]: true,\n [animated ? `${prefixCls}-content-animated` : `${prefixCls}-content-no-animated`]: true,\n });\n if (animated) {\n const activeIndex = getActiveIndex(children, activeKey);\n if (activeIndex !== -1) {\n const animatedStyle = animatedWithMargin ? getMarginStyle(activeIndex, tabBarPosition) : getTransformPropValue(getTransformByIndex(activeIndex, tabBarPosition));\n style = {\n ...style,\n ...animatedStyle,\n };\n } else {\n style = {\n ...style,\n display: 'none',\n };\n }\n }\n return (\n <div\n className={classes}\n style={style}\n >\n {this.getTabPanes()}\n </div>\n );\n },\n});\n\nexport default TabContent;\n","import { isTransformSupported, setTransform } from './utils';\nimport React from 'react';\nimport classnames from 'classnames';\n\nconst isDev = process.env.NODE_ENV !== 'production';\n\nexport function getScroll(w, top) {\n let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n const method = `scroll${top ? 'Top' : 'Left'}`;\n if (typeof ret !== 'number') {\n const d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction offset(elem) {\n let box;\n let x;\n let y;\n const doc = elem.ownerDocument;\n const body = doc.body;\n const docElem = doc && doc.documentElement;\n box = elem.getBoundingClientRect();\n x = box.left;\n y = box.top;\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n const w = doc.defaultView || doc.parentWindow;\n x += getScroll(w);\n y += getScroll(w, true);\n return {\n left: x, top: y,\n };\n}\n\nfunction componentDidUpdate(component, init) {\n const { styles } = component.props;\n const rootNode = component.root;\n const wrapNode = component.nav || rootNode;\n const containerOffset = offset(wrapNode);\n const inkBarNode = component.inkBar;\n const activeTab = component.activeTab;\n const inkBarNodeStyle = inkBarNode.style;\n const tabBarPosition = component.props.tabBarPosition;\n if (init) {\n // prevent mount animation\n inkBarNodeStyle.display = 'none';\n }\n if (activeTab) {\n const tabNode = activeTab;\n const tabOffset = offset(tabNode);\n const transformSupported = isTransformSupported(inkBarNodeStyle);\n if (tabBarPosition === 'top' || tabBarPosition === 'bottom') {\n let left = tabOffset.left - containerOffset.left;\n let width = tabNode.offsetWidth;\n\n // If tabNode'width width equal to wrapNode'width when tabBarPosition is top or bottom\n // It means no css working, then ink bar should not have width until css is loaded\n if (width === rootNode.offsetWidth) {\n width = 0;\n } else if (styles.inkBar && styles.inkBar.width !== undefined) {\n width = parseFloat(styles.inkBar.width, 10);\n if (width) {\n left = left + (tabNode.offsetWidth - width) / 2;\n }\n }\n // use 3d gpu to optimize render\n if (transformSupported) {\n setTransform(inkBarNodeStyle, `translate3d(${left}px,0,0)`);\n inkBarNodeStyle.width = `${width}px`;\n inkBarNodeStyle.height = '';\n } else {\n inkBarNodeStyle.left = `${left}px`;\n inkBarNodeStyle.top = '';\n inkBarNodeStyle.bottom = '';\n inkBarNodeStyle.right = `${wrapNode.offsetWidth - left - width}px`;\n }\n } else {\n let top = tabOffset.top - containerOffset.top;\n let height = tabNode.offsetHeight;\n if (styles.inkBar && styles.inkBar.height !== undefined) {\n height = parseFloat(styles.inkBar.height, 10);\n if (height) {\n top = top + (tabNode.offsetHeight - height) / 2;\n }\n }\n if (transformSupported) {\n setTransform(inkBarNodeStyle, `translate3d(0,${top}px,0)`);\n inkBarNodeStyle.height = `${height}px`;\n inkBarNodeStyle.width = '';\n } else {\n inkBarNodeStyle.left = '';\n inkBarNodeStyle.right = '';\n inkBarNodeStyle.top = `${top}px`;\n inkBarNodeStyle.bottom = `${wrapNode.offsetHeight - top - height}px`;\n }\n }\n }\n inkBarNodeStyle.display = activeTab ? 'block' : 'none';\n}\n\nexport default {\n getDefaultProps() {\n return {\n inkBarAnimated: true,\n };\n },\n\n componentDidUpdate() {\n componentDidUpdate(this);\n },\n\n componentDidMount() {\n if (isDev) {\n this.timeout = setTimeout(() => {\n componentDidUpdate(this, true);\n }, 0);\n } else {\n componentDidUpdate(this, true);\n }\n },\n\n componentWillUnmount() {\n clearTimeout(this.timeout);\n },\n\n getInkBarNode() {\n const { prefixCls, styles, inkBarAnimated } = this.props;\n const className = `${prefixCls}-ink-bar`;\n const classes = classnames({\n [className]: true,\n [\n inkBarAnimated ?\n `${className}-animated` :\n `${className}-no-animated`\n ]: true,\n });\n return (\n <div\n style={styles.inkBar}\n className={classes}\n key=\"inkBar\"\n ref={this.saveRef('inkBar')}\n />\n );\n },\n};\n","export var TabsType;\r\n(function (TabsType) {\r\n TabsType[\"line\"] = \"line\";\r\n TabsType[\"card\"] = \"card\";\r\n TabsType[\"editable-card\"] = \"editable-card\";\r\n})(TabsType || (TabsType = {}));\r\nexport var TabsPosition;\r\n(function (TabsPosition) {\r\n TabsPosition[\"top\"] = \"top\";\r\n TabsPosition[\"bottom\"] = \"bottom\";\r\n TabsPosition[\"left\"] = \"left\";\r\n TabsPosition[\"right\"] = \"right\";\r\n})(TabsPosition || (TabsPosition = {}));\r\n","import classnames from 'classnames';\nimport { isTransformSupported, setTransform } from './utils';\nimport React from 'react';\nimport addEventListener from '../../_util/addEventListener';\nimport debounce from 'lodash/debounce';\n\nexport default {\n getDefaultProps() {\n return {\n scrollAnimated: true,\n onPrevClick() {},\n onNextClick() {},\n };\n },\n\n getInitialState() {\n this.offset = 0;\n return {\n next: false,\n prev: false,\n };\n },\n\n componentDidMount() {\n this.componentDidUpdate();\n this.debouncedResize = debounce(() => {\n this.setNextPrev();\n this.scrollToActiveTab();\n }, 200);\n this.resizeEvent = addEventListener(window, 'resize', this.debouncedResize);\n },\n\n componentDidUpdate(prevProps) {\n const props = this.props;\n if (prevProps && prevProps.tabBarPosition !== props.tabBarPosition) {\n this.setOffset(0);\n return;\n }\n const nextPrev = this.setNextPrev();\n // wait next, prev show hide\n /* eslint react/no-did-update-set-state:0 */\n if (this.isNextPrevShown(this.state) !== this.isNextPrevShown(nextPrev)) {\n this.setState({}, this.scrollToActiveTab);\n } else if (!prevProps || props.activeKey !== prevProps.activeKey) {\n // can not use props.activeKey\n this.scrollToActiveTab();\n }\n },\n\n componentWillUnmount() {\n if (this.resizeEvent) {\n this.resizeEvent.remove();\n }\n if (this.debouncedResize && this.debouncedResize.cancel) {\n this.debouncedResize.cancel();\n }\n },\n\n setNextPrev() {\n const navNode = this.nav;\n const navNodeWH = this.getScrollWH(navNode);\n const containerWH = this.getOffsetWH(this.container);\n const navWrapNodeWH = this.getOffsetWH(this.navWrap);\n let { offset } = this;\n const minOffset = containerWH - navNodeWH;\n let { next, prev } = this.state;\n if (minOffset >= 0) {\n next = false;\n this.setOffset(0, false);\n offset = 0;\n } else if (minOffset < offset) {\n next = true;\n } else {\n next = false;\n // Test with container offset which is stable\n // and set the offset of the nav wrap node\n const realOffset = navWrapNodeWH - navNodeWH;\n this.setOffset(realOffset, false);\n offset = realOffset;\n }\n\n if (offset < 0) {\n prev = true;\n } else {\n prev = false;\n }\n\n this.setNext(next);\n this.setPrev(prev);\n return {\n next,\n prev,\n };\n },\n\n getOffsetWH(node) {\n const tabBarPosition = this.props.tabBarPosition;\n let prop = 'offsetWidth';\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n prop = 'offsetHeight';\n }\n return node[prop];\n },\n\n getScrollWH(node) {\n const tabBarPosition = this.props.tabBarPosition;\n let prop = 'scrollWidth';\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n prop = 'scrollHeight';\n }\n return node[prop];\n },\n\n\n getOffsetLT(node) {\n const tabBarPosition = this.props.tabBarPosition;\n let prop = 'left';\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n prop = 'top';\n }\n return node.getBoundingClientRect()[prop];\n },\n\n setOffset(offset, checkNextPrev = true) {\n const target = Math.min(0, offset);\n if (this.offset !== target) {\n this.offset = target;\n let navOffset = {};\n const tabBarPosition = this.props.tabBarPosition;\n const navStyle = this.nav.style;\n const transformSupported = isTransformSupported(navStyle);\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n if (transformSupported) {\n navOffset = {\n value: `translate3d(0,${target}px,0)`,\n };\n } else {\n navOffset = {\n name: 'top',\n value: `${target}px`,\n };\n }\n } else {\n if (transformSupported) {\n navOffset = {\n value: `translate3d(${target}px,0,0)`,\n };\n } else {\n navOffset = {\n name: 'left',\n value: `${target}px`,\n };\n }\n }\n if (transformSupported) {\n setTransform(navStyle, navOffset.value);\n } else {\n navStyle[navOffset.name] = navOffset.value;\n }\n if (checkNextPrev) {\n this.setNextPrev();\n }\n }\n },\n\n setPrev(v) {\n if (this.state.prev !== v) {\n this.setState({\n prev: v,\n });\n }\n },\n\n setNext(v) {\n if (this.state.next !== v) {\n this.setState({\n next: v,\n });\n }\n },\n\n isNextPrevShown(state) {\n if (state) {\n return state.next || state.prev;\n }\n return this.state.next || this.state.prev;\n },\n\n prevTransitionEnd(e) {\n if (e.propertyName !== 'opacity') {\n return;\n }\n const { container } = this;\n this.scrollToActiveTab({\n target: container,\n currentTarget: container,\n });\n },\n\n scrollToActiveTab(e) {\n const { activeTab, navWrap } = this;\n if (e && e.target !== e.currentTarget || !activeTab) {\n return;\n }\n\n // when not scrollable or enter scrollable first time, don't emit scrolling\n const needToSroll = this.isNextPrevShown() && this.lastNextPrevShown;\n this.lastNextPrevShown = this.isNextPrevShown();\n if (!needToSroll) {\n return;\n }\n\n const activeTabWH = this.getScrollWH(activeTab);\n const navWrapNodeWH = this.getOffsetWH(navWrap);\n let { offset } = this;\n const wrapOffset = this.getOffsetLT(navWrap);\n const activeTabOffset = this.getOffsetLT(activeTab);\n if (wrapOffset > activeTabOffset) {\n offset += (wrapOffset - activeTabOffset);\n this.setOffset(offset);\n } else if ((wrapOffset + navWrapNodeWH) < (activeTabOffset + activeTabWH)) {\n offset -= (activeTabOffset + activeTabWH) - (wrapOffset + navWrapNodeWH);\n this.setOffset(offset);\n }\n },\n\n prev(e) {\n this.props.onPrevClick(e);\n const navWrapNode = this.navWrap;\n const navWrapNodeWH = this.getOffsetWH(navWrapNode);\n const { offset } = this;\n this.setOffset(offset + navWrapNodeWH);\n },\n\n next(e) {\n this.props.onNextClick(e);\n const navWrapNode = this.navWrap;\n const navWrapNodeWH = this.getOffsetWH(navWrapNode);\n const { offset } = this;\n this.setOffset(offset - navWrapNodeWH);\n },\n\n getScrollBarNode(content) {\n const { next, prev } = this.state;\n const { prefixCls, scrollAnimated } = this.props;\n const showNextPrev = prev || next;\n\n const prevButton = (\n <span\n onClick={prev ? this.prev : null}\n unselectable=\"unselectable\"\n className={classnames({\n [`${prefixCls}-tab-prev`]: 1,\n [`${prefixCls}-tab-btn-disabled`]: !prev,\n [`${prefixCls}-tab-arrow-show`]: showNextPrev,\n })}\n onTransitionEnd={this.prevTransitionEnd}\n >\n <span className={`${prefixCls}-tab-prev-icon`} />\n </span>\n );\n\n const nextButton = (\n <span\n onClick={next ? this.next : null}\n unselectable=\"unselectable\"\n className={classnames({\n [`${prefixCls}-tab-next`]: 1,\n [`${prefixCls}-tab-btn-disabled`]: !next,\n [`${prefixCls}-tab-arrow-show`]: showNextPrev,\n })}\n >\n <span className={`${prefixCls}-tab-next-icon`} />\n </span>\n );\n\n const navClassName = `${prefixCls}-nav`;\n const navClasses = classnames({\n [navClassName]: true,\n [\n scrollAnimated ?\n `${navClassName}-animated` :\n `${navClassName}-no-animated`\n ]: true,\n });\n\n return (\n <div\n className={classnames({\n [`${prefixCls}-nav-container`]: 1,\n [`${prefixCls}-nav-container-scrolling`]: showNextPrev,\n })}\n key=\"container\"\n ref={this.saveRef('container')}\n >\n {prevButton}\n {nextButton}\n <div className={`${prefixCls}-nav-wrap`} ref={this.saveRef('navWrap')}>\n <div className={`${prefixCls}-nav-scroll`}>\n <div className={navClasses} ref={this.saveRef('nav')}>\n {content}\n </div>\n </div>\n </div>\n </div>\n );\n },\n};\n","import React, { Children, cloneElement } from 'react';\nimport classnames from 'classnames';\nimport { generateKey, getDataAttr } from './utils';\nimport warning from '../../_util/warning';\nimport Ripple from '../../ripple';\n\nexport default {\n getDefaultProps() {\n return {\n styles: {},\n };\n },\n onTabClick(key) {\n this.props.onTabClick(key);\n },\n getTabs() {\n const { panels: children, activeKey, prefixCls, tabBarGutter } = this.props;\n const rst = [];\n\n Children.forEach(children, (child, index) => {\n if (!child) {\n return;\n }\n const key = generateKey(child.key, index);\n const { disabled, tab } = child.props;\n let cls = activeKey === key ? `${prefixCls}-tab-active` : '';\n cls += ` ${prefixCls}-tab`;\n let events = {};\n if (disabled) {\n cls += ` ${prefixCls}-tab-disabled`;\n } else {\n events = {\n onClick: this.onTabClick.bind(this, key),\n };\n }\n const ref = {};\n if (activeKey === key) {\n ref.ref = this.saveRef('activeTab');\n }\n warning('tab' in child.props, 'There must be `tab` property on children of Tabs.');\n rst.push(\n <Ripple disabled={disabled} key={key}>\n <div\n role=\"tab\"\n aria-disabled={disabled ? 'true' : 'false'}\n aria-selected={activeKey === key ? 'true' : 'false'}\n {...events}\n className={cls}\n style={{\n marginRight: tabBarGutter && index === children.length - 1 ? 0 : tabBarGutter,\n }}\n {...ref}\n >\n {tab}\n </div>\n </Ripple>,\n );\n });\n\n return rst;\n },\n getRootNode(contents) {\n const {\n prefixCls,\n onKeyDown,\n className,\n extraContent,\n style,\n tabBarPosition,\n ...restProps\n } = this.props;\n const cls = classnames(`${prefixCls}-bar`, {\n [className]: !!className,\n });\n const topOrBottom = tabBarPosition === 'top' || tabBarPosition === 'bottom';\n const tabBarExtraContentStyle = topOrBottom ? { float: 'right' } : {};\n const extraContentStyle = extraContent && extraContent.props ? extraContent.props.style : {};\n let children = contents;\n if (extraContent) {\n children = [\n cloneElement(extraContent, {\n key: 'extra',\n style: {\n ...tabBarExtraContentStyle,\n ...extraContentStyle,\n },\n }),\n cloneElement(contents, { key: 'content' }),\n ];\n children = topOrBottom ? children : children.reverse();\n }\n return (\n <div\n role=\"tablist\"\n className={cls}\n tabIndex=\"0\"\n ref={this.saveRef('root')}\n onKeyDown={onKeyDown}\n style={style}\n {...getDataAttr(restProps)}\n >\n {children}\n </div>\n );\n },\n};\n","import createReactClass from 'create-react-class';\nimport InkTabBarMixin from './InkTabBarMixin';\nimport ScrollableTabBarMixin from './ScrollableTabBarMixin';\nimport TabBarMixin from './TabBarMixin';\nimport RefMixin from './RefMixin';\n\nconst ScrollableInkTabBar = createReactClass({\n displayName: 'ScrollableInkTabBar',\n mixins: [RefMixin, TabBarMixin, InkTabBarMixin, ScrollableTabBarMixin],\n render() {\n const inkBarNode = this.getInkBarNode();\n const tabs = this.getTabs();\n const scrollbarNode = this.getScrollBarNode([inkBarNode, tabs]);\n return this.getRootNode(scrollbarNode);\n },\n});\n\nexport default ScrollableInkTabBar;\n","export default {\n saveRef(name) {\n return node => {\n this[name] = node;\n };\n },\n};\n","import React, { Children, cloneElement, Component, } from 'react';\r\nimport { findDOMNode } from 'react-dom';\r\nimport classNames from 'classnames';\r\nimport Icon from '../icon';\r\nimport warning from '../_util/warning';\r\nimport isFlexSupported from '../_util/isFlexSupported';\r\nimport RcTabs, { TabContent, TabPane } from '../rc-components/tabs';\r\nimport ScrollableInkTabBar from '../rc-components/tabs/ScrollableInkTabBar';\r\nimport { generateKey } from '../rc-components/tabs/utils';\r\nimport { Size } from '../_util/enum';\r\nimport { TabsPosition, TabsType } from './enum';\r\nimport { getPrefixCls } from '../configure';\r\nexport default class Tabs extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.createNewTab = targetKey => {\r\n const { onEdit } = this.props;\r\n if (onEdit) {\r\n onEdit(targetKey, 'add');\r\n }\r\n };\r\n this.removeTab = (targetKey, e) => {\r\n e.stopPropagation();\r\n if (!targetKey) {\r\n return;\r\n }\r\n const { onEdit } = this.props;\r\n if (onEdit) {\r\n onEdit(targetKey, 'remove');\r\n }\r\n };\r\n this.handleChange = (activeKey) => {\r\n const { onChange } = this.props;\r\n if (onChange) {\r\n onChange(activeKey);\r\n }\r\n };\r\n }\r\n componentDidMount() {\r\n const NO_FLEX = ' no-flex';\r\n const tabNode = findDOMNode(this);\r\n if (tabNode && !isFlexSupported() && tabNode.className.indexOf(NO_FLEX) === -1) {\r\n tabNode.className += NO_FLEX;\r\n }\r\n }\r\n render() {\r\n const { prefixCls: customizePrefixCls, className = '', size, type = TabsType.line, tabPosition, children, tabBarStyle, hideAdd, onTabClick, onPrevClick, onNextClick, animated = true, tabBarGutter, } = this.props;\r\n let { tabBarExtraContent } = this.props;\r\n const prefixCls = getPrefixCls('tabs', customizePrefixCls);\r\n const inkBarAnimated = typeof animated === 'object' ? animated.inkBar : animated;\r\n let tabPaneAnimated = typeof animated === 'object' ? animated.tabPane : animated;\r\n // card tabs should not have animation\r\n if (type !== TabsType.line) {\r\n tabPaneAnimated = 'animated' in this.props ? tabPaneAnimated : false;\r\n }\r\n const isCard = type === TabsType.card || type === TabsType['editable-card'];\r\n warning(!(isCard && (size === Size.small || size === Size.large)), \"Tabs[type=card|editable-card] doesn't have small or large size, it's by designed.\");\r\n const cls = classNames(className, `${prefixCls}-${type}`, {\r\n [`${prefixCls}-vertical`]: tabPosition === TabsPosition.left || tabPosition === TabsPosition.right,\r\n [`${prefixCls}-${size}`]: !!size,\r\n [`${prefixCls}-card`]: isCard,\r\n [`${prefixCls}-no-animation`]: !tabPaneAnimated,\r\n });\r\n // only card type tabs can be added and closed\r\n let childrenWithClose = [];\r\n if (type === TabsType['editable-card']) {\r\n childrenWithClose = [];\r\n Children.forEach(children, (child, index) => {\r\n let closable = child.props.closable;\r\n closable = typeof closable === 'undefined' ? true : closable;\r\n const closeIcon = closable ? (<Icon type=\"close\" onClick={e => this.removeTab(child.key, e)}/>) : null;\r\n childrenWithClose.push(cloneElement(child, {\r\n tab: (<div className={closable ? undefined : `${prefixCls}-tab-unclosable`}>\n {child.props.tab}\n {closeIcon}\n </div>),\r\n key: generateKey(child.key, index),\r\n }));\r\n });\r\n // Add new tab handler\r\n if (!hideAdd) {\r\n tabBarExtraContent = (<span>\n <Icon type=\"plus\" className={`${prefixCls}-new-tab`} onClick={this.createNewTab}/>\n {tabBarExtraContent}\n </span>);\r\n }\r\n }\r\n tabBarExtraContent = tabBarExtraContent ? (<div className={`${prefixCls}-extra-content`}>{tabBarExtraContent}</div>) : null;\r\n const renderTabBar = () => (<ScrollableInkTabBar inkBarAnimated={inkBarAnimated} extraContent={tabBarExtraContent} onTabClick={onTabClick} onPrevClick={onPrevClick} onNextClick={onNextClick} style={tabBarStyle} tabBarGutter={tabBarGutter}/>);\r\n return (<RcTabs {...this.props} prefixCls={prefixCls} className={cls} tabBarPosition={tabPosition} renderTabBar={renderTabBar} renderTabContent={() => <TabContent animated={tabPaneAnimated} animatedWithMargin/>} onChange={this.handleChange}>\n {childrenWithClose.length > 0 ? childrenWithClose : children}\n </RcTabs>);\r\n }\r\n}\r\nTabs.displayName = 'Tabs';\r\nTabs.TabPane = TabPane;\r\nTabs.defaultProps = {\r\n hideAdd: false,\r\n};\r\n","export default function isFlexSupported() {\r\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\r\n const { documentElement } = window.document;\r\n return 'flex' in documentElement.style ||\r\n 'webkitFlex' in documentElement.style ||\r\n 'Flex' in documentElement.style ||\r\n 'msFlex' in documentElement.style;\r\n }\r\n return false;\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { SubMenu as RcSubMenu } from '../rc-components/menu';\r\nclass SubMenu extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.onKeyDown = e => {\r\n this.subMenu.onKeyDown(e);\r\n };\r\n this.saveSubMenu = (subMenu) => {\r\n this.subMenu = subMenu;\r\n };\r\n }\r\n render() {\r\n const { rootPrefixCls, className } = this.props;\r\n const { menuTheme } = this.context;\r\n return (<RcSubMenu {...this.props} ref={this.saveSubMenu} popupClassName={classNames(`${rootPrefixCls}-${menuTheme}`, className)}/>);\r\n }\r\n}\r\nSubMenu.contextTypes = {\r\n menuTheme: PropTypes.string,\r\n};\r\nexport default SubMenu;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Tooltip from '../tooltip';\r\nimport { Item } from '../rc-components/menu';\r\nclass MenuItem extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.onKeyDown = e => {\r\n this.menuItem.onKeyDown(e);\r\n };\r\n this.saveMenuItem = (menuItem) => {\r\n this.menuItem = menuItem;\r\n };\r\n }\r\n render() {\r\n const { inlineCollapsed } = this.context;\r\n const props = this.props;\r\n const item = <Item {...props} ref={this.saveMenuItem}/>;\r\n if (inlineCollapsed && props.level === 1) {\r\n return (<Tooltip title={props.children} placement=\"right\" overlayClassName={`${props.rootPrefixCls}-inline-collapsed-tooltip`}>\n {item}\n </Tooltip>);\r\n }\r\n return item;\r\n }\r\n}\r\nMenuItem.contextTypes = {\r\n inlineCollapsed: PropTypes.bool,\r\n};\r\nMenuItem.isMenuItem = 1;\r\nexport default MenuItem;\r\n","import React, { Component } from 'react';\r\nimport { findDOMNode } from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport animation from '../_util/openAnimation';\r\nimport warning from '../_util/warning';\r\nimport SubMenu from './SubMenu';\r\nimport Item from './MenuItem';\r\nimport RcMenu, { Divider, ItemGroup } from '../rc-components/menu';\r\nimport { getPrefixCls } from '../configure';\r\nexport default class Menu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.inlineOpenKeys = [];\r\n this.handleClick = (e) => {\r\n this.handleOpenChange([]);\r\n const { onClick } = this.props;\r\n if (onClick) {\r\n onClick(e);\r\n }\r\n };\r\n this.handleOpenChange = (openKeys) => {\r\n this.setOpenKeys(openKeys);\r\n const { onOpenChange } = this.props;\r\n if (onOpenChange) {\r\n onOpenChange(openKeys);\r\n }\r\n };\r\n warning(!('onOpen' in props || 'onClose' in props), '`onOpen` and `onClose` are removed, please use `onOpenChange` instead');\r\n warning(!('inlineCollapsed' in props && props.mode !== 'inline'), \"`inlineCollapsed` should only be used when Menu's `mode` is inline.\");\r\n let openKeys;\r\n if ('defaultOpenKeys' in props) {\r\n openKeys = props.defaultOpenKeys;\r\n }\r\n else if ('openKeys' in props) {\r\n openKeys = props.openKeys;\r\n }\r\n this.state = {\r\n openKeys: openKeys || [],\r\n };\r\n }\r\n getChildContext() {\r\n const { theme } = this.props;\r\n return {\r\n inlineCollapsed: this.getInlineCollapsed(),\r\n menuTheme: theme,\r\n };\r\n }\r\n getPrefixCls() {\r\n const { prefixCls } = this.props;\r\n return getPrefixCls('menu', prefixCls);\r\n }\r\n componentWillReceiveProps(nextProps, nextContext) {\r\n const { mode, inlineCollapsed } = this.props;\r\n if (mode === 'inline' && nextProps.mode !== 'inline') {\r\n this.switchModeFromInline = true;\r\n }\r\n if ('openKeys' in nextProps) {\r\n this.setState({ openKeys: nextProps.openKeys });\r\n return;\r\n }\r\n const { openKeys } = this.state;\r\n const { siderCollapsed } = this.context;\r\n if ((nextProps.inlineCollapsed && !inlineCollapsed) ||\r\n (nextContext.siderCollapsed && !siderCollapsed)) {\r\n this.switchModeFromInline =\r\n !!openKeys.length &&\r\n !!findDOMNode(this).querySelectorAll(`.${this.getPrefixCls()}-submenu-open`).length;\r\n this.inlineOpenKeys = openKeys;\r\n this.setState({ openKeys: [] });\r\n }\r\n if ((!nextProps.inlineCollapsed && inlineCollapsed) ||\r\n (!nextContext.siderCollapsed && siderCollapsed)) {\r\n this.setState({ openKeys: this.inlineOpenKeys });\r\n this.inlineOpenKeys = [];\r\n }\r\n }\r\n setOpenKeys(openKeys) {\r\n if (!('openKeys' in this.props)) {\r\n this.setState({ openKeys });\r\n }\r\n }\r\n getRealMenuMode() {\r\n const inlineCollapsed = this.getInlineCollapsed();\r\n if (this.switchModeFromInline && inlineCollapsed) {\r\n return 'inline';\r\n }\r\n const { mode } = this.props;\r\n return inlineCollapsed ? 'vertical' : mode;\r\n }\r\n getInlineCollapsed() {\r\n const { inlineCollapsed } = this.props;\r\n const { siderCollapsed = inlineCollapsed } = this.context;\r\n return siderCollapsed;\r\n }\r\n getMenuOpenAnimation(menuMode) {\r\n const { openAnimation, openTransitionName } = this.props;\r\n let menuOpenAnimation = openAnimation || openTransitionName;\r\n if (openAnimation === undefined && openTransitionName === undefined) {\r\n switch (menuMode) {\r\n case 'horizontal':\r\n menuOpenAnimation = 'slide-up';\r\n break;\r\n case 'vertical':\r\n case 'vertical-left':\r\n case 'vertical-right':\r\n // When mode switch from inline\r\n // submenu should hide without animation\r\n if (this.switchModeFromInline) {\r\n menuOpenAnimation = '';\r\n this.switchModeFromInline = false;\r\n }\r\n else {\r\n menuOpenAnimation = 'zoom-big';\r\n }\r\n break;\r\n case 'inline':\r\n menuOpenAnimation = {\r\n ...animation,\r\n leave: (node, done) => animation.leave(node, () => {\r\n // Make sure inline menu leave animation finished before mode is switched\r\n this.switchModeFromInline = false;\r\n this.setState({});\r\n // when inlineCollapsed change false to true, all submenu will be unmounted,\r\n // so that we don't need handle animation leaving.\r\n if (this.getRealMenuMode() === 'vertical') {\r\n return;\r\n }\r\n done();\r\n }),\r\n };\r\n break;\r\n default:\r\n }\r\n }\r\n return menuOpenAnimation;\r\n }\r\n render() {\r\n const { className, theme } = this.props;\r\n const { openKeys } = this.state;\r\n const prefixCls = this.getPrefixCls();\r\n const menuMode = this.getRealMenuMode();\r\n const menuOpenAnimation = this.getMenuOpenAnimation(menuMode);\r\n const menuClassName = classNames(className, `${prefixCls}-${theme}`, {\r\n [`${prefixCls}-inline-collapsed`]: this.getInlineCollapsed(),\r\n });\r\n const menuProps = {\r\n openKeys,\r\n onOpenChange: this.handleOpenChange,\r\n className: menuClassName,\r\n mode: menuMode,\r\n };\r\n if (menuMode !== 'inline') {\r\n // closing vertical popup submenu after click it\r\n menuProps.onClick = this.handleClick;\r\n menuProps.openTransitionName = menuOpenAnimation;\r\n }\r\n else {\r\n menuProps.openAnimation = menuOpenAnimation;\r\n }\r\n const { collapsedWidth } = this.context;\r\n if (this.getInlineCollapsed() &&\r\n (collapsedWidth === 0 || collapsedWidth === '0' || collapsedWidth === '0px')) {\r\n return null;\r\n }\r\n return <RcMenu {...this.props} {...menuProps} prefixCls={prefixCls}/>;\r\n }\r\n}\r\nMenu.displayName = 'Menu';\r\nMenu.Divider = Divider;\r\nMenu.Item = Item;\r\nMenu.SubMenu = SubMenu;\r\nMenu.ItemGroup = ItemGroup;\r\nMenu.defaultProps = {\r\n className: '',\r\n theme: 'light',\r\n focusable: false,\r\n};\r\nMenu.childContextTypes = {\r\n inlineCollapsed: PropTypes.bool,\r\n menuTheme: PropTypes.string,\r\n};\r\nMenu.contextTypes = {\r\n siderCollapsed: PropTypes.bool,\r\n collapsedWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n};\r\n","/* eslint-disable camelcase */\r\nexport var Lang;\r\n(function (Lang) {\r\n Lang[\"zh_CN\"] = \"zh_CN\";\r\n Lang[\"en_GB\"] = \"en_GB\";\r\n Lang[\"en_US\"] = \"en_US\";\r\n Lang[\"ja_JP\"] = \"ja_JP\";\r\n})(Lang || (Lang = {}));\r\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","import buildURL from 'axios/lib/helpers/buildURL';\r\nexport function buildSortedURL(...args) {\r\n const builtURL = buildURL(...args);\r\n const [urlPath, queryString] = builtURL.split('?');\r\n if (queryString) {\r\n const paramsPair = queryString.split('&');\r\n return `${urlPath}?${paramsPair.sort().join('&')}`;\r\n }\r\n return builtURL;\r\n}\r\nexport function buildURLWithAxiosConfig(config) {\r\n const { data, url, params, paramsSerializer } = config;\r\n const builtURL = buildSortedURL(url, params, paramsSerializer);\r\n if (data) {\r\n return `${builtURL}|${JSON.stringify(data)}`;\r\n }\r\n return builtURL;\r\n}\r\nexport function isCacheLike(cache) {\r\n return !!(cache.set &&\r\n cache.get &&\r\n cache.del &&\r\n typeof cache.get === 'function' &&\r\n typeof cache.set === 'function' &&\r\n typeof cache.del === 'function');\r\n}\r\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\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 baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'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","// 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","// 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","'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","// 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","// 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","// 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 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 = 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","exports.f = Object.getOwnPropertySymbols;\n","// 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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport createReactClass from 'create-react-class';\nimport KeyCode from '../../_util/KeyCode';\nimport classNames from 'classnames';\nimport { connect } from 'mini-store';\nimport noop from 'lodash/noop';\nimport Checkbox from '../../checkbox/Checkbox';\nimport Ripple from '../../ripple';\n/* eslint react/no-is-mounted:0 */\n\nconst MenuItem = createReactClass({\n displayName: 'MenuItem',\n\n propTypes: {\n rootPrefixCls: PropTypes.string,\n eventKey: PropTypes.string,\n active: PropTypes.bool,\n children: PropTypes.any,\n selectedKeys: PropTypes.array,\n disabled: PropTypes.bool,\n title: PropTypes.string,\n onItemHover: PropTypes.func,\n onSelect: PropTypes.func,\n onClick: PropTypes.func,\n onDeselect: PropTypes.func,\n parentMenu: PropTypes.object,\n onDestroy: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseDown: PropTypes.func,\n },\n\n getDefaultProps() {\n return {\n onSelect: noop,\n onMouseEnter: noop,\n onMouseLeave: noop,\n onMouseDown: noop,\n };\n },\n\n componentWillUnmount() {\n const props = this.props;\n if (props.onDestroy) {\n props.onDestroy(props.eventKey);\n }\n },\n\n componentDidMount() {\n // invoke customized ref to expose component to mixin\n if (this.props.manualRef) {\n this.props.manualRef(this);\n }\n },\n\n componentDidUpdate() {\n // invoke customized ref to expose component to mixin\n if (this.props.manualRef) {\n this.props.manualRef(this);\n }\n },\n\n onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === KeyCode.ENTER) {\n this.onClick(e);\n return true;\n }\n },\n\n onMouseLeave(e) {\n const { eventKey, onItemHover, onMouseLeave } = this.props;\n onItemHover({\n key: eventKey,\n hover: false,\n });\n onMouseLeave({\n key: eventKey,\n domEvent: e,\n });\n },\n\n onMouseEnter(e) {\n const { eventKey, onItemHover, onMouseEnter } = this.props;\n onItemHover({\n key: eventKey,\n hover: true,\n });\n onMouseEnter({\n key: eventKey,\n domEvent: e,\n });\n },\n\n onClick(e) {\n const { eventKey, multiple, onClick, onSelect, onDeselect, isSelected } = this.props;\n const info = {\n key: eventKey,\n keyPath: [eventKey],\n item: this,\n domEvent: e,\n };\n onClick(info);\n if (multiple) {\n if (isSelected) {\n onDeselect(info);\n } else {\n onSelect(info);\n }\n } else if (!isSelected) {\n onSelect(info);\n }\n },\n\n getPrefixCls() {\n return `${this.props.rootPrefixCls}-item`;\n },\n\n getActiveClassName() {\n return `${this.getPrefixCls()}-active`;\n },\n\n getSelectedClassName() {\n return `${this.getPrefixCls()}-selected`;\n },\n\n getDisabledClassName() {\n return `${this.getPrefixCls()}-disabled`;\n },\n\n render() {\n const props = this.props;\n const className = classNames(this.getPrefixCls(), props.className, {\n [this.getActiveClassName()]: !props.disabled && props.active,\n [this.getSelectedClassName()]: props.isSelected,\n [this.getDisabledClassName()]: props.disabled,\n });\n const attrs = {\n ...props.attribute,\n title: props.title,\n className,\n role: 'menuitem',\n 'aria-selected': props.isSelected,\n 'aria-disabled': props.disabled,\n };\n let mouseEvent = {};\n if (!props.disabled) {\n mouseEvent = {\n onClick: this.onClick,\n onMouseLeave: this.onMouseLeave,\n onMouseEnter: this.onMouseEnter,\n onMouseDown: this.props.onMouseDown,\n };\n }\n const style = {\n ...props.style,\n };\n if (props.mode === 'inline') {\n style.paddingLeft = props.inlineIndent * props.level;\n }\n\n const notFound = props.eventKey === 'NOT_FOUND';\n const checkbox = props.multiple && !notFound ? <Checkbox disabled={props.disabled} checked={props.isSelected} tabIndex={-1} /> : null;\n return (\n <Ripple disabled={props.disabled}>\n <li\n {...attrs}\n {...mouseEvent}\n style={style}\n >\n {checkbox}\n {props.children}\n </li>\n </Ripple>\n );\n },\n});\n\nMenuItem.isMenuItem = 1;\n\nexport default connect(({ activeKey, selectedKeys }, { eventKey, subMenuKey }) => ({\n active: activeKey[subMenuKey] === eventKey,\n isSelected: selectedKeys.indexOf(eventKey) !== -1,\n}))(MenuItem);\n","import React, { Children, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { menuAllProps } from './util';\n\nclass MenuItemGroup extends Component {\n static propTypes = {\n renderMenuItem: PropTypes.func,\n index: PropTypes.number,\n className: PropTypes.string,\n subMenuKey: PropTypes.string,\n rootPrefixCls: PropTypes.string,\n };\n\n static defaultProps = {\n disabled: true,\n };\n\n renderInnerMenuItem = (item) => {\n const { renderMenuItem, index } = this.props;\n return renderMenuItem(item, index, this.props.subMenuKey);\n };\n\n render() {\n const { ...props } = this.props;\n const { className = '', rootPrefixCls } = props;\n const titleClassName = `${rootPrefixCls}-item-group-title`;\n const listClassName = `${rootPrefixCls}-item-group-list`;\n const { title, children } = props;\n menuAllProps.forEach(key => delete props[key]);\n\n // Set onClick to null, to ignore propagated onClick event\n delete props.onClick;\n\n return (\n <li {...props} className={`${className} ${rootPrefixCls}-item-group`}>\n <div\n className={titleClassName}\n title={typeof title === 'string' ? title : undefined}\n >\n {title}\n </div>\n <ul className={listClassName}>\n {Children.map(children, this.renderInnerMenuItem)}\n </ul>\n </li>\n );\n }\n}\n\nMenuItemGroup.isMenuItemGroup = true;\n\nexport default MenuItemGroup;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\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};","import React, { Children, Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport warning from '../../_util/warning';\nimport Animate from '../../animate';\nimport toArray from '../util/Children/toArray';\nimport { contextTypes } from './Tree';\nimport Progress from '../../progress';\nimport { getNodeChildren, getPosition, isCheckDisabled, traverseTreeNodes } from './util';\n\nconst ICON_OPEN = 'open';\nconst ICON_CLOSE = 'close';\n\nconst LOAD_STATUS_NONE = 0;\nconst LOAD_STATUS_LOADING = 1;\nconst LOAD_STATUS_LOADED = 2;\nconst LOAD_STATUS_FAILED = 0; // Action align, let's make failed same as init.\n\nconst defaultTitle = '---';\n\nlet onlyTreeNodeWarned = false; // Only accept TreeNode\n\nexport const nodeContextTypes = {\n ...contextTypes,\n rcTreeNode: PropTypes.shape({\n onUpCheckConduct: PropTypes.func,\n }),\n};\n\nexport default class TreeNode extends Component {\n static propTypes = {\n eventKey: PropTypes.string, // Pass by parent `cloneElement`\n prefixCls: PropTypes.string,\n className: PropTypes.string,\n root: PropTypes.object,\n onSelect: PropTypes.func,\n wrapper: PropTypes.func,\n\n // By parent\n expanded: PropTypes.bool,\n selected: PropTypes.bool,\n checked: PropTypes.bool,\n halfChecked: PropTypes.bool,\n children: PropTypes.node,\n title: PropTypes.node,\n pos: PropTypes.string,\n dragOver: PropTypes.bool,\n dragOverGapTop: PropTypes.bool,\n dragOverGapBottom: PropTypes.bool,\n\n // By user\n isLeaf: PropTypes.bool,\n selectable: PropTypes.bool,\n disabled: PropTypes.bool,\n disableCheckbox: PropTypes.bool,\n icon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n switcherIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n };\n\n static contextTypes = nodeContextTypes;\n\n static childContextTypes = nodeContextTypes;\n\n static defaultProps = {\n title: defaultTitle,\n };\n\n static isTreeNode = 1;\n\n constructor(props) {\n super(props);\n\n this.state = {\n loadStatus: LOAD_STATUS_NONE,\n dragNodeHighlight: false,\n };\n }\n\n getChildContext() {\n return {\n ...this.context,\n rcTreeNode: {\n onUpCheckConduct: this.onUpCheckConduct,\n },\n };\n }\n\n // Isomorphic needn't load data in server side\n componentDidMount() {\n this.syncLoadData(this.props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.syncLoadData(nextProps);\n }\n\n onUpCheckConduct = (treeNode, nodeChecked, nodeHalfChecked) => {\n const { pos: nodePos } = treeNode.props;\n const { eventKey, pos, checked, halfChecked } = this.props;\n const {\n rcTree: { checkStrictly, isKeyChecked, onBatchNodeCheck, onCheckConductFinished },\n rcTreeNode: { onUpCheckConduct } = {},\n } = this.context;\n\n // Stop conduct when current node is disabled\n if (isCheckDisabled(this)) {\n onCheckConductFinished();\n return;\n }\n\n const children = this.getNodeChildren();\n\n let checkedCount = nodeChecked ? 1 : 0;\n\n // Statistic checked count\n children.forEach((node, index) => {\n const childPos = getPosition(pos, index);\n\n if (nodePos === childPos || isCheckDisabled(node)) {\n return;\n }\n\n if (isKeyChecked(node.key || childPos)) {\n checkedCount += 1;\n }\n });\n\n // Static enabled children count\n const enabledChildrenCount = children\n .filter(node => !isCheckDisabled(node))\n .length;\n\n // checkStrictly will not conduct check status\n const nextChecked = checkStrictly ? checked : enabledChildrenCount === checkedCount;\n const nextHalfChecked = checkStrictly ? // propagated or child checked\n halfChecked : (nodeHalfChecked || (checkedCount > 0 && !nextChecked));\n\n // Add into batch update\n if (checked !== nextChecked || halfChecked !== nextHalfChecked) {\n onBatchNodeCheck(eventKey, nextChecked, nextHalfChecked);\n\n if (onUpCheckConduct) {\n onUpCheckConduct(this, nextChecked, nextHalfChecked);\n } else {\n // Flush all the update\n onCheckConductFinished();\n }\n } else {\n // Flush all the update\n onCheckConductFinished();\n }\n };\n\n onDownCheckConduct = (nodeChecked) => {\n const { children } = this.props;\n const { rcTree: { checkStrictly, isKeyChecked, onBatchNodeCheck } } = this.context;\n if (checkStrictly) return;\n\n traverseTreeNodes(children, ({ node, key }) => {\n if (isCheckDisabled(node)) return false;\n\n if (nodeChecked !== isKeyChecked(key)) {\n onBatchNodeCheck(key, nodeChecked, false);\n }\n });\n };\n\n onSelectorClick = (e) => {\n if (this.isSelectable()) {\n this.onSelect(e);\n } else {\n this.onCheck(e);\n }\n };\n\n onSelect = (e) => {\n if (this.isDisabled()) return;\n\n const { rcTree: { onNodeSelect } } = this.context;\n e.preventDefault();\n onNodeSelect(e, this);\n };\n\n onCheck = (e) => {\n if (this.isDisabled()) return;\n\n const { disableCheckbox, checked, eventKey } = this.props;\n const {\n rcTree: { checkable, onBatchNodeCheck, onCheckConductFinished },\n rcTreeNode: { onUpCheckConduct } = {},\n } = this.context;\n\n if (!checkable || disableCheckbox) return;\n\n e.preventDefault();\n const targetChecked = !checked;\n onBatchNodeCheck(eventKey, targetChecked, false, this);\n\n // Children conduct\n this.onDownCheckConduct(targetChecked);\n\n // Parent conduct\n if (onUpCheckConduct) {\n onUpCheckConduct(this, targetChecked, false);\n } else {\n onCheckConductFinished();\n }\n };\n\n onMouseEnter = (e) => {\n const { rcTree: { onNodeMouseEnter } } = this.context;\n onNodeMouseEnter(e, this);\n };\n\n onMouseLeave = (e) => {\n const { rcTree: { onNodeMouseLeave } } = this.context;\n onNodeMouseLeave(e, this);\n };\n\n onContextMenu = (e) => {\n const { rcTree: { onNodeContextMenu } } = this.context;\n onNodeContextMenu(e, this);\n };\n\n onDragStart = (e) => {\n const { rcTree: { onNodeDragStart } } = this.context;\n\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: true,\n });\n onNodeDragStart(e, this);\n\n try {\n // ie throw error\n // firefox-need-it\n e.dataTransfer.setData('text/plain', '');\n } catch (error) {\n // empty\n }\n };\n\n onDragEnter = (e) => {\n const { rcTree: { onNodeDragEnter } } = this.context;\n\n e.preventDefault();\n e.stopPropagation();\n onNodeDragEnter(e, this);\n };\n\n onDragOver = (e) => {\n const { rcTree: { onNodeDragOver } } = this.context;\n\n e.preventDefault();\n e.stopPropagation();\n onNodeDragOver(e, this);\n };\n\n onDragLeave = (e) => {\n const { rcTree: { onNodeDragLeave } } = this.context;\n\n e.stopPropagation();\n onNodeDragLeave(e, this);\n };\n\n onDragEnd = (e) => {\n const { rcTree: { onNodeDragEnd } } = this.context;\n\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: false,\n });\n onNodeDragEnd(e, this);\n };\n\n onDrop = (e) => {\n const { rcTree: { onNodeDrop } } = this.context;\n\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: false,\n });\n onNodeDrop(e, this);\n };\n\n // Disabled item still can be switch\n onExpand = (e) => {\n const { rcTree: { onNodeExpand } } = this.context;\n const callbackPromise = onNodeExpand(e, this);\n\n // Promise like\n if (callbackPromise && callbackPromise.then) {\n this.setState({ loadStatus: LOAD_STATUS_LOADING });\n\n callbackPromise.then(() => {\n this.setState({ loadStatus: LOAD_STATUS_LOADED });\n }).catch(() => {\n this.setState({ loadStatus: LOAD_STATUS_FAILED });\n });\n }\n };\n\n // Drag usage\n setSelectHandle = (node) => {\n this.selectHandle = node;\n };\n\n getNodeChildren() {\n const { children } = this.props;\n const originList = toArray(children).filter(node => node);\n const targetList = getNodeChildren(originList);\n\n if (originList.length !== targetList.length && !onlyTreeNodeWarned) {\n onlyTreeNodeWarned = true;\n warning(false, 'Tree only accept TreeNode as children.');\n }\n\n return targetList;\n }\n\n getNodeState = () => {\n const { expanded } = this.props;\n\n if (this.isLeaf()) {\n return null;\n }\n\n return expanded ? ICON_OPEN : ICON_CLOSE;\n };\n\n isLeaf = () => {\n const { loadStatus } = this.state;\n const { isLeaf, hasChildren = this.getNodeChildren().length !== 0 } = this.props;\n const { rcTree: { loadData } } = this.context;\n\n return (\n isLeaf ||\n (!loadData && !hasChildren) ||\n (loadData && loadStatus === LOAD_STATUS_LOADED && !hasChildren)\n );\n };\n\n isDisabled = () => {\n const { disabled } = this.props;\n const { rcTree: { disabled: treeDisabled } } = this.context;\n\n // Follow the logic of Selectable\n if (disabled === false) {\n return false;\n }\n\n return !!(treeDisabled || disabled);\n };\n\n isSelectable() {\n const { selectable } = this.props;\n const { rcTree: { selectable: treeSelectable } } = this.context;\n\n // Ignore when selectable is undefined or null\n if (typeof selectable === 'boolean') {\n return selectable;\n }\n\n return treeSelectable;\n }\n\n // Load data to avoid default expanded tree without data\n syncLoadData = (props) => {\n const { loadStatus } = this.state;\n const { expanded } = props;\n const { rcTree: { loadData } } = this.context;\n\n if (loadData && loadStatus === LOAD_STATUS_NONE && expanded && !this.isLeaf()) {\n this.setState({ loadStatus: LOAD_STATUS_LOADING });\n\n loadData(this).then(() => {\n this.setState({ loadStatus: LOAD_STATUS_LOADED });\n }).catch(() => {\n this.setState({ loadStatus: LOAD_STATUS_FAILED });\n });\n }\n };\n\n // Switcher\n renderSwitcher = () => {\n const {\n expanded,\n switcherIcon: switcherIconFromProps,\n } = this.props;\n const {\n rcTree: {\n prefixCls,\n switcherIcon: switcherIconFromCtx,\n },\n } = this.context;\n\n const switcherIcon = switcherIconFromProps || switcherIconFromCtx;\n\n if (this.isLeaf()) {\n return (\n <span className={classNames(`${prefixCls}-switcher`, `${prefixCls}-switcher-noop`)}>\n {typeof switcherIcon === 'function' ? switcherIcon({ ...this.props, isLeaf: true }) : switcherIcon}\n </span>\n );\n }\n\n const switcherCls = classNames(`${prefixCls}-switcher`, `${prefixCls}-switcher_${expanded ? ICON_OPEN : ICON_CLOSE}`);\n return (\n <span onClick={this.onExpand} className={switcherCls}>\n {typeof switcherIcon === 'function' ? switcherIcon({ ...this.props, isLeaf: false }) : switcherIcon}\n </span>\n );\n };\n\n // Checkbox\n renderCheckbox = () => {\n const { checked, halfChecked, disableCheckbox } = this.props;\n const { rcTree: { prefixCls, checkable } } = this.context;\n const disabled = this.isDisabled();\n\n if (!checkable) return null;\n\n // [Legacy] Custom element should be separate with `checkable` in future\n const $custom = typeof checkable !== 'boolean' ? checkable : null;\n\n return (\n <span\n className={classNames(\n `${prefixCls}-checkbox`,\n checked && `${prefixCls}-checkbox-checked`,\n !checked && halfChecked && `${prefixCls}-checkbox-indeterminate`,\n (disabled || disableCheckbox) && `${prefixCls}-checkbox-disabled`,\n )}\n onClick={this.onCheck}\n >\n {$custom}\n </span>\n );\n };\n\n renderIcon = () => {\n const { loadStatus } = this.state;\n const { rcTree: { prefixCls } } = this.context;\n\n return loadStatus === LOAD_STATUS_LOADING ? (\n <Progress\n type=\"loading\"\n size=\"small\"\n width={14}\n className={`${prefixCls}-icon_loading`}\n />) : (\n <span\n className={classNames(\n `${prefixCls}-iconEle`,\n `${prefixCls}-icon__${this.getNodeState() || 'docu'}`,\n )}\n />\n );\n };\n\n // Icon + Title\n renderSelector = () => {\n const { loadStatus, dragNodeHighlight } = this.state;\n const { title, selected, icon } = this.props;\n const { rcTree: { prefixCls, showIcon, draggable, loadData } } = this.context;\n const disabled = this.isDisabled();\n\n const wrapClass = `${prefixCls}-node-content-wrapper`;\n\n // Icon - Still show loading icon when loading without showIcon\n let $icon;\n\n if (showIcon) {\n $icon = icon ? (\n <span\n className={classNames(\n `${prefixCls}-iconEle`,\n `${prefixCls}-icon__customize`,\n )}\n >\n {typeof icon === 'function' ? createElement(icon, this.props) : icon}\n </span>\n ) : this.renderIcon();\n } else if (loadData && loadStatus === LOAD_STATUS_LOADING) {\n $icon = this.renderIcon();\n }\n\n // Title\n const $title = <span className={`${prefixCls}-title`}>{title}</span>;\n\n return (\n <span\n ref={this.setSelectHandle}\n title={typeof title === 'string' ? title : ''}\n className={classNames(\n `${wrapClass}`,\n `${wrapClass}-${this.getNodeState() || 'normal'}`,\n (!disabled && (selected || dragNodeHighlight)) && `${prefixCls}-node-selected`,\n (!disabled && draggable) && 'draggable',\n )}\n draggable={(!disabled && draggable) || undefined}\n aria-grabbed={(!disabled && draggable) || undefined}\n\n onMouseEnter={this.onMouseEnter}\n onMouseLeave={this.onMouseLeave}\n onContextMenu={this.onContextMenu}\n onClick={this.onSelectorClick}\n onDragStart={this.onDragStart}\n >\n {$icon}{$title}\n </span>\n );\n };\n\n // Children list wrapped with `Animation`\n renderChildren = () => {\n const { expanded, pos, wrapper } = this.props;\n const {\n rcTree: {\n prefixCls,\n openTransitionName, openAnimation,\n renderTreeNode,\n },\n } = this.context;\n\n // [Legacy] Animation control\n const renderFirst = this.renderFirst;\n this.renderFirst = 1;\n let transitionAppear = true;\n if (!renderFirst && expanded) {\n transitionAppear = false;\n }\n\n const animProps = {};\n if (openTransitionName) {\n animProps.transitionName = openTransitionName;\n } else if (typeof openAnimation === 'object') {\n animProps.animation = { ...openAnimation };\n if (!transitionAppear) {\n delete animProps.animation.appear;\n }\n }\n\n // Children TreeNode\n const nodeList = this.getNodeChildren();\n\n if (nodeList.length === 0) {\n return null;\n }\n\n let $children;\n if (expanded) {\n let treeNodes = Children.map(nodeList, (node, index) => (\n renderTreeNode(node, index, pos)\n ));\n if (wrapper) {\n treeNodes = wrapper(treeNodes);\n }\n $children = (\n <ul hidden={!expanded}>\n {treeNodes}\n </ul>\n );\n }\n\n return (\n <Animate\n {...animProps}\n hiddenProp=\"hidden\"\n transitionAppear={transitionAppear}\n component=\"\"\n >\n {$children}\n </Animate>\n );\n };\n\n render() {\n const {\n className,\n dragOver, dragOverGapTop, dragOverGapBottom,\n } = this.props;\n const {\n rcTree: {\n prefixCls,\n filterTreeNode,\n },\n } = this.context;\n const disabled = this.isDisabled();\n\n return (\n <li\n className={classNames(className, {\n [`${prefixCls}-treenode-disabled`]: disabled,\n 'drag-over': !disabled && dragOver,\n 'drag-over-gap-top': !disabled && dragOverGapTop,\n 'drag-over-gap-bottom': !disabled && dragOverGapBottom,\n 'filter-node': filterTreeNode && filterTreeNode(this),\n })}\n\n onDragEnter={this.onDragEnter}\n onDragOver={this.onDragOver}\n onDragLeave={this.onDragLeave}\n onDrop={this.onDrop}\n onDragEnd={this.onDragEnd}\n >\n {this.renderSwitcher()}\n {this.renderCheckbox()}\n {this.renderSelector()}\n {this.renderChildren()}\n </li>\n );\n }\n}\n","import React from 'react';\r\nimport noop from 'lodash/noop';\r\nimport isString from 'lodash/isString';\r\nimport Icon from '../icon';\r\nimport Notification from '../rc-components/notification';\r\nimport { getPlacementStyle, getPlacementTransitionName } from './util';\r\nimport { getPrefixCls } from '../configure';\r\nlet defaultDuration = 3;\r\nlet defaultTop = 24;\r\nlet defaultBottom = 24;\r\nlet messageInstance;\r\nlet key = 1;\r\nlet customizePrefixCls;\r\nlet transitionName = 'move-up';\r\nlet defaultPlacement = 'leftBottom';\r\nlet getContainer;\r\nfunction getCustomizePrefixCls() {\r\n return getPrefixCls('message', customizePrefixCls);\r\n}\r\nfunction getMessageInstance(placement, callback) {\r\n if (messageInstance) {\r\n callback(messageInstance);\r\n return;\r\n }\r\n Notification.newInstance({\r\n prefixCls: getCustomizePrefixCls(),\r\n style: getPlacementStyle(placement, defaultTop, defaultBottom),\r\n transitionName: getPlacementTransitionName(placement, transitionName),\r\n getContainer,\r\n }, (instance) => {\r\n if (messageInstance) {\r\n callback(messageInstance);\r\n return;\r\n }\r\n messageInstance = instance;\r\n callback(instance);\r\n });\r\n}\r\nfunction notice(content, duration = defaultDuration, type, onClose, placement) {\r\n const iconType = {\r\n info: 'info',\r\n success: 'check_circle',\r\n error: 'error',\r\n warning: 'warning',\r\n loading: 'loading',\r\n }[type];\r\n if (isString(onClose)) {\r\n placement = onClose;\r\n onClose = noop;\r\n }\r\n if (typeof duration === 'function') {\r\n onClose = duration;\r\n duration = defaultDuration;\r\n }\r\n else if (isString(duration)) {\r\n placement = duration;\r\n }\r\n const target = key++;\r\n const prefixCls = getCustomizePrefixCls();\r\n getMessageInstance(placement || defaultPlacement, instance => {\r\n instance.notice({\r\n key: target,\r\n duration,\r\n style: {},\r\n content: (<div className={`${prefixCls}-custom-content ${prefixCls}-${type}`}>\n <Icon type={iconType}/>\n <span>{content}</span>\n </div>),\r\n onClose,\r\n });\r\n });\r\n return () => {\r\n if (messageInstance) {\r\n messageInstance.removeNotice(target);\r\n }\r\n };\r\n}\r\nexport default {\r\n info(content, duration, onClose, placement) {\r\n return notice(content, duration, 'info', onClose, placement);\r\n },\r\n success(content, duration, onClose, placement) {\r\n return notice(content, duration, 'success', onClose, placement);\r\n },\r\n error(content, duration, onClose, placement) {\r\n return notice(content, duration, 'error', onClose, placement);\r\n },\r\n // Departed usage, please use warning()\r\n warn(content, duration, onClose, placement) {\r\n return notice(content, duration, 'warning', onClose, placement);\r\n },\r\n warning(content, duration, onClose, placement) {\r\n return notice(content, duration, 'warning', onClose, placement);\r\n },\r\n loading(content, duration, onClose, placement) {\r\n return notice(content, duration, 'loading', onClose, placement);\r\n },\r\n config(options) {\r\n if (options.top !== undefined) {\r\n defaultTop = options.top;\r\n messageInstance = null; // delete messageInstance for new defaultTop\r\n }\r\n if (options.bottom !== undefined) {\r\n defaultBottom = options.bottom;\r\n messageInstance = null; // delete messageInstance for new defaultBottom\r\n }\r\n if (options.duration !== undefined) {\r\n defaultDuration = options.duration;\r\n }\r\n if (options.prefixCls !== undefined) {\r\n customizePrefixCls = options.prefixCls;\r\n }\r\n if (options.getContainer !== undefined) {\r\n getContainer = options.getContainer;\r\n }\r\n if (options.transitionName !== undefined) {\r\n transitionName = options.transitionName;\r\n messageInstance = null; // delete messageInstance for new transitionName\r\n }\r\n if (options.placement !== undefined) {\r\n defaultPlacement = options.placement;\r\n }\r\n },\r\n destroy() {\r\n if (messageInstance) {\r\n messageInstance.destroy();\r\n messageInstance = null;\r\n }\r\n },\r\n};\r\n","export function getPlacementStyle(placement, defaultTop, defaultBottom) {\r\n const top = defaultTop ? `${defaultTop}px` : 0;\r\n const bottom = defaultBottom ? `${defaultBottom}px` : 0;\r\n const target = {\r\n left: '24px',\r\n right: '24px',\r\n top,\r\n bottom,\r\n };\r\n let style = {};\r\n switch (placement) {\r\n case 'top':\r\n style = {\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'right':\r\n style = {\r\n left: 'auto',\r\n top: '50%',\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'bottom':\r\n style = {\r\n top: 'auto',\r\n };\r\n break;\r\n case 'left':\r\n style = {\r\n right: 'auto',\r\n top: '50%',\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'topLeft':\r\n case 'leftTop':\r\n style = {\r\n right: 'auto',\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'topRight':\r\n case 'rightTop':\r\n style = {\r\n left: 'auto',\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'bottomLeft':\r\n case 'leftBottom':\r\n style = {\r\n right: 'auto',\r\n top: 'auto',\r\n };\r\n break;\r\n case 'bottomRight':\r\n case 'rightBottom':\r\n style = {\r\n left: 'auto',\r\n top: 'auto',\r\n };\r\n break;\r\n default:\r\n break;\r\n }\r\n Object.assign(target, style);\r\n return target;\r\n}\r\nexport function getPlacementTransitionName(placement, defaultTransitionName) {\r\n let transitionName = defaultTransitionName;\r\n switch (placement) {\r\n case 'top':\r\n case 'topLeft':\r\n case 'topRight':\r\n transitionName = 'move-up';\r\n break;\r\n case 'left':\r\n case 'leftTop':\r\n case 'leftBottom':\r\n transitionName = 'move-left';\r\n break;\r\n case 'bottom':\r\n case 'bottomLeft':\r\n case 'bottomRight':\r\n transitionName = 'move-down';\r\n break;\r\n case 'right':\r\n case 'rightTop':\r\n case 'rightBottom':\r\n transitionName = 'move-right';\r\n break;\r\n default:\r\n break;\r\n }\r\n return transitionName;\r\n}\r\n","export default class TaskRunner {\r\n constructor(fn) {\r\n this.callbacks = [];\r\n if (fn) {\r\n this.fn = fn;\r\n }\r\n }\r\n async delay(delay, fn, callback) {\r\n return this.start(true, delay, fn, callback);\r\n }\r\n async run(interval, fn, callback) {\r\n return this.start(false, interval, fn, callback);\r\n }\r\n async start(once, interval, fn, callback) {\r\n this.cancel();\r\n if (fn) {\r\n this.fn = fn;\r\n }\r\n if (typeof callback === 'function') {\r\n this.callbacks.push(callback);\r\n }\r\n if (this.fn) {\r\n return new Promise(resolve => {\r\n this.id = setInterval(() => {\r\n if (once) {\r\n this.cancel();\r\n }\r\n resolve(this.fn());\r\n this.callbacks.forEach(cb => cb());\r\n this.callbacks = [];\r\n }, interval);\r\n });\r\n }\r\n return Promise.reject(new Error('no caller'));\r\n }\r\n cancel() {\r\n if (this.id) {\r\n clearInterval(this.id);\r\n delete this.id;\r\n }\r\n return this;\r\n }\r\n}\r\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class ContainerRender extends Component {\n static 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 }\n\n static defaultProps = {\n autoMount: true,\n autoDestroy: true,\n forceRender: false,\n }\n\n componentDidMount() {\n if (this.props.autoMount) {\n this.renderComponent();\n }\n }\n\n componentDidUpdate() {\n if (this.props.autoMount) {\n this.renderComponent();\n }\n }\n\n componentWillUnmount() {\n if (this.props.autoDestroy) {\n this.removeContainer();\n }\n }\n\n removeContainer = () => {\n if (this.container) {\n ReactDOM.unmountComponentAtNode(this.container);\n this.container.parentNode.removeChild(this.container);\n this.container = null;\n }\n }\n\n renderComponent = (props, ready) => {\n const { visible, getComponent, forceRender, getContainer, parent } = this.props;\n if (visible || parent._component || forceRender) {\n if (!this.container) {\n this.container = getContainer();\n }\n ReactDOM.unstable_renderSubtreeIntoContainer(\n parent,\n getComponent(props),\n this.container,\n function callback() {\n if (ready) {\n ready.call(this);\n }\n }\n );\n }\n }\n\n render() {\n return this.props.children({\n renderComponent: this.renderComponent,\n removeContainer: this.removeContainer,\n });\n }\n}\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class Portal extends Component {\n static propTypes = {\n getContainer: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n didUpdate: PropTypes.func,\n }\n\n componentDidMount() {\n this.createContainer();\n }\n\n componentDidUpdate(prevProps) {\n const { didUpdate } = this.props;\n if (didUpdate) {\n didUpdate(prevProps);\n }\n }\n\n componentWillUnmount() {\n this.removeContainer();\n }\n\n createContainer() {\n this._container = this.props.getContainer();\n this.forceUpdate();\n }\n\n removeContainer() {\n if (this._container) {\n this._container.parentNode.removeChild(this._container);\n }\n }\n\n render() {\n if (this._container) {\n return ReactDOM.createPortal(this.props.children, this._container);\n }\n return null;\n }\n}\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport PureRenderMixin from '../util/PureRenderMixin';\nimport classNames from 'classnames';\n\nexport default class Checkbox extends Component {\n static propTypes = {\n prefixCls: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n name: PropTypes.string,\n id: PropTypes.string,\n type: PropTypes.string,\n defaultChecked: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n checked: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n disabled: PropTypes.bool,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onClick: PropTypes.func,\n tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n readOnly: PropTypes.bool,\n autoFocus: PropTypes.bool,\n value: PropTypes.any,\n };\n static defaultProps = {\n prefixCls: 'rc-checkbox',\n className: '',\n style: {},\n type: 'checkbox',\n defaultChecked: false,\n onFocus() {},\n onBlur() {},\n onChange() {},\n };\n\n constructor(props) {\n super(props);\n\n const checked = 'checked' in props ? props.checked : props.defaultChecked;\n\n this.state = {\n checked,\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if ('checked' in nextProps) {\n this.setState({\n checked: nextProps.checked,\n });\n }\n }\n\n shouldComponentUpdate(...args) {\n return PureRenderMixin.shouldComponentUpdate.apply(this, args);\n }\n\n focus() {\n this.input.focus();\n }\n\n blur() {\n this.input.blur();\n }\n\n handleChange = e => {\n const { props } = this;\n if (props.disabled) {\n return;\n }\n if (!('checked' in props)) {\n this.setState({\n checked: e.target.checked,\n });\n }\n props.onChange({\n target: {\n ...props,\n checked: e.target.checked,\n },\n stopPropagation() {\n e.stopPropagation();\n },\n preventDefault() {\n e.preventDefault();\n },\n nativeEvent: e.nativeEvent,\n });\n };\n\n saveInput = node => {\n this.input = node;\n };\n\n render() {\n const {\n prefixCls,\n className,\n style,\n name,\n id,\n type,\n disabled,\n readOnly,\n tabIndex,\n onClick,\n onFocus,\n onBlur,\n autoFocus,\n value,\n ...others\n } = this.props;\n\n const globalProps = Object.keys(others).reduce((prev, key) => {\n if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n prev[key] = others[key];\n }\n return prev;\n }, {});\n\n const { checked } = this.state;\n const classString = classNames(prefixCls, className, {\n [`${prefixCls}-checked`]: checked,\n [`${prefixCls}-disabled`]: disabled,\n });\n\n return (\n <span className={classString} style={style}>\n <input\n name={name}\n id={id}\n type={type}\n readOnly={readOnly}\n disabled={disabled}\n tabIndex={tabIndex}\n className={`${prefixCls}-input`}\n checked={!!checked}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={this.handleChange}\n autoFocus={autoFocus}\n ref={this.saveInput}\n value={value}\n {...globalProps}\n />\n <span className={`${prefixCls}-inner`} />\n </span>\n );\n }\n}\n","import Checkbox from './Checkbox';\n\nexport default Checkbox;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Trigger from '../trigger';\nimport { placements } from './placements';\n\nclass Tooltip extends Component {\n static propTypes = {\n trigger: PropTypes.any,\n children: PropTypes.any,\n defaultVisible: PropTypes.bool,\n visible: PropTypes.bool,\n placement: PropTypes.string,\n transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n animation: PropTypes.any,\n onVisibleChange: PropTypes.func,\n afterVisibleChange: PropTypes.func,\n overlay: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n overlayStyle: PropTypes.object,\n overlayClassName: PropTypes.string,\n prefixCls: PropTypes.string,\n mouseEnterDelay: PropTypes.number,\n mouseLeaveDelay: PropTypes.number,\n getTooltipContainer: PropTypes.func,\n destroyTooltipOnHide: PropTypes.bool,\n align: PropTypes.object,\n arrowContent: PropTypes.any,\n id: PropTypes.string,\n };\n\n static defaultProps = {\n prefixCls: 'rc-tooltip',\n mouseEnterDelay: 0,\n destroyTooltipOnHide: false,\n mouseLeaveDelay: 0.1,\n align: {},\n placement: 'right',\n trigger: ['hover'],\n arrowContent: null,\n };\n\n getPopupElement = () => {\n const { arrowContent, overlay, prefixCls, id } = this.props;\n return [\n <div className={`${prefixCls}-arrow`} key=\"arrow\">\n {arrowContent}\n </div>,\n <div className={`${prefixCls}-inner`} key=\"content\" id={id}>\n {typeof overlay === 'function' ? overlay() : overlay}\n </div>,\n ];\n };\n\n getPopupDomNode() {\n return this.trigger.getPopupDomNode();\n }\n\n saveTrigger = node => {\n this.trigger = node;\n };\n\n render() {\n const {\n overlayClassName,\n trigger,\n mouseEnterDelay,\n mouseLeaveDelay,\n overlayStyle,\n prefixCls,\n children,\n onVisibleChange,\n afterVisibleChange,\n transitionName,\n animation,\n placement,\n align,\n destroyTooltipOnHide,\n defaultVisible,\n getTooltipContainer,\n ...restProps\n } = this.props;\n const extraProps = { ...restProps };\n if ('visible' in this.props) {\n extraProps.popupVisible = this.props.visible;\n }\n return (\n <Trigger\n popupClassName={overlayClassName}\n ref={this.saveTrigger}\n prefixCls={prefixCls}\n popup={this.getPopupElement}\n action={trigger}\n builtinPlacements={placements}\n popupPlacement={placement}\n popupAlign={align}\n getPopupContainer={getTooltipContainer}\n onPopupVisibleChange={onVisibleChange}\n afterPopupVisibleChange={afterVisibleChange}\n popupTransitionName={transitionName}\n popupAnimation={animation}\n defaultPopupVisible={defaultVisible}\n destroyPopupOnHide={destroyTooltipOnHide}\n mouseLeaveDelay={mouseLeaveDelay}\n popupStyle={overlayStyle}\n mouseEnterDelay={mouseEnterDelay}\n {...extraProps}\n >\n {children}\n </Trigger>\n );\n }\n}\n\nexport default Tooltip;\n","import Tooltip from './Tooltip';\n\nexport default Tooltip;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","module.exports = require('./_hide');\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","import { Lang } from './enum';\r\nconst locale = {\r\n lang: Lang.zh_CN,\r\n Table: {\r\n show_cached_seletion: '显示所有已选记录',\r\n hide_cached_seletion: '隐藏所有已选记录',\r\n edit_button: '编辑',\r\n create_button: '新增',\r\n save_button: '保存',\r\n cancel_button: '取消',\r\n delete_button: '删除',\r\n remove_button: '移除',\r\n reset_button: '重置',\r\n query_button: '查询',\r\n expand_button: '展开',\r\n collapse_button: '合并',\r\n export_button: '导出',\r\n advanced_search: '高级搜索',\r\n dirty_info: '显示条件已更改',\r\n restore: '还原',\r\n empty_data: '暂无数据',\r\n choose_export_columns: '请选择要导出的列',\r\n column_name: '列名',\r\n filter_bar_placeholder: '过滤表',\r\n advanced_query: '高级查询',\r\n advanced_query_conditions: '高级查询条件',\r\n },\r\n Pagination: {\r\n records_per_page: '每页行数:',\r\n },\r\n Upload: {\r\n file_selection: '选择文件',\r\n click_to_upload: '点击上传',\r\n upload_success: '上传成功',\r\n upload_failure: '上传失败',\r\n no_file: '没有文件',\r\n upload_path_unset: '未设置上传路径',\r\n not_acceptable_prompt: '含有上传类型不匹配的文件,期待:',\r\n file_list_max_length: '文件数量超过最大限制',\r\n },\r\n Modal: {\r\n ok: '确定',\r\n cancel: '取消',\r\n },\r\n DataSet: {\r\n unsaved_data_confirm: '有未保存的数据,是否继续?',\r\n invalid_query_dataset: '查询条件数集不通过',\r\n delete_selected_row_confirm: '确认删除选中行?',\r\n delete_all_row_confirm: '确认删除所有行?',\r\n query_failure: '查询失败',\r\n submit_success: '提交成功',\r\n submit_failure: '提交失败',\r\n cannot_add_record_when_head_no_current: '头未选中记录,不能新建行记录',\r\n },\r\n DatePicker: {\r\n value_missing_no_label: '请选择日期。',\r\n value_missing: '请选择{label}。',\r\n type_mismatch: '请输入有效的日期。',\r\n ok: '确定',\r\n today: '今天',\r\n now: '此刻',\r\n this_week: '本周',\r\n },\r\n EmailField: {\r\n value_missing_no_label: '请输入邮箱地址',\r\n value_missing: '请输入{label}。',\r\n type_mismatch: '请输入有效的邮箱地址',\r\n },\r\n IntlField: {\r\n modal_title: '输入多语言信息',\r\n },\r\n NumberField: {\r\n value_missing_no_label: '请输入数字',\r\n value_missing: '请输入{label}。',\r\n },\r\n Radio: {\r\n value_missing_no_label: '请选择。',\r\n value_missing: '请选择{label}。',\r\n },\r\n SelectBox: {\r\n value_missing_no_label: '请选择。',\r\n value_missing: '请选择{label}。',\r\n },\r\n Select: {\r\n value_missing_no_label: '请选择。',\r\n value_missing: '请选择{label}。',\r\n no_matching_results: '无匹配结果。',\r\n select_all: '全选',\r\n unselect_all: '无',\r\n },\r\n Lov: {\r\n choose: '请选择',\r\n },\r\n Transfer: {\r\n items: '项',\r\n },\r\n UrlField: {\r\n value_missing_no_label: '请输入网址。',\r\n value_missing: '请输入{label}。',\r\n type_mismatch: '请输入有效的网址。',\r\n },\r\n ColorPicker: {\r\n value_missing_no_label: '请选择颜色',\r\n value_missing: '请选择{label}。',\r\n type_mismatch: '请选择有效的颜色。',\r\n },\r\n Validator: {\r\n bad_input: '请输入一个数字。',\r\n pattern_mismatch: '请输入有效的值。',\r\n range_overflow: '{label}必须小于或等于{max}。',\r\n range_underflow: '{label}必须大于或等于{min}。',\r\n step_mismatch: '请输入有效值。最接近的有效值为{0}。',\r\n step_mismatch_between: '请输入有效值。两个最接近的有效值分别为{0}和{1}。',\r\n too_long: '请将该内容减少到{maxLength}个或更少字符(目前您使用了{length}个字符)。',\r\n too_short: '请将该内容增加到{minLength}个或更多字符(目前您使用了{length}个字符)。',\r\n type_mismatch: '请输入与类型匹配的有效值。',\r\n value_missing_no_label: '请填写此字段。',\r\n value_missing: '请输入{label}。',\r\n unique: '该字段值重复,请重新填写。',\r\n unknown: '未知错误。',\r\n },\r\n Icon: {\r\n icons: '图标',\r\n whatsNew: '新增',\r\n direction: '方向性',\r\n suggestion: '提示建议性',\r\n edit: '编辑类',\r\n data: '数据类',\r\n other: '网站通用',\r\n series: '套系类',\r\n },\r\n};\r\nexport default locale;\r\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\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","module.exports = function (done, value) {\n return { value: value, done: !!done };\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","// 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","module.exports = function(arr, obj){\n if (arr.indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.storeShape = undefined;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar storeShape = exports.storeShape = _propTypes2.default.shape({\n subscribe: _propTypes2.default.func.isRequired,\n setState: _propTypes2.default.func.isRequired,\n getState: _propTypes2.default.func.isRequired\n});","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport createReactClass from 'create-react-class';\n\nconst Divider = createReactClass({\n displayName: 'Divider',\n\n propTypes: {\n className: PropTypes.string,\n rootPrefixCls: PropTypes.string,\n },\n\n getDefaultProps() {\n // To fix keyboard UX.\n return { disabled: true };\n },\n\n render() {\n const { className = '', rootPrefixCls } = this.props;\n return <li className={`${className} ${rootPrefixCls}-item-divider`}/>;\n },\n});\n\nexport default Divider;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\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","import React from 'react';\r\nimport Icon from '../icon';\r\nimport Notification from '../rc-components/notification';\r\nimport { getPrefixCls } from '../configure';\r\nconst notificationInstance = {};\r\nlet defaultDuration = 4.5;\r\nlet defaultTop = 24;\r\nlet defaultBottom = 24;\r\nlet defaultPlacement = 'topRight';\r\nlet defaultGetContainer;\r\nfunction setNotificationConfig(options) {\r\n const { duration, placement, bottom, top, getContainer } = options;\r\n if (duration !== undefined) {\r\n defaultDuration = duration;\r\n }\r\n if (placement !== undefined) {\r\n defaultPlacement = placement;\r\n }\r\n if (bottom !== undefined) {\r\n defaultBottom = bottom;\r\n }\r\n if (top !== undefined) {\r\n defaultTop = top;\r\n }\r\n if (getContainer !== undefined) {\r\n defaultGetContainer = getContainer;\r\n }\r\n}\r\nfunction getPlacementStyle(placement) {\r\n let style;\r\n switch (placement) {\r\n case 'topLeft':\r\n style = {\r\n left: 0,\r\n top: defaultTop,\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'topRight':\r\n style = {\r\n right: 0,\r\n top: defaultTop,\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'bottomLeft':\r\n style = {\r\n left: 0,\r\n top: 'auto',\r\n bottom: defaultBottom,\r\n };\r\n break;\r\n default:\r\n style = {\r\n right: 0,\r\n top: 'auto',\r\n bottom: defaultBottom,\r\n };\r\n break;\r\n }\r\n return style;\r\n}\r\nfunction getNotificationInstance(prefixCls, placement, callback) {\r\n const cacheKey = `${prefixCls}-${placement}`;\r\n if (notificationInstance[cacheKey]) {\r\n callback(notificationInstance[cacheKey]);\r\n return;\r\n }\r\n Notification.newInstance({\r\n prefixCls,\r\n className: `${prefixCls}-${placement}`,\r\n style: getPlacementStyle(placement),\r\n getContainer: defaultGetContainer,\r\n closeIcon: <Icon className={`${prefixCls}-close-icon`} type=\"close\"/>,\r\n }, (notification) => {\r\n notificationInstance[cacheKey] = notification;\r\n callback(notification);\r\n });\r\n}\r\nconst typeToIcon = {\r\n success: 'check',\r\n info: 'info',\r\n error: 'error',\r\n warning: 'warning',\r\n};\r\nfunction notice(args) {\r\n const outerPrefixCls = getPrefixCls('notification', args.prefixCls);\r\n const prefixCls = `${outerPrefixCls}-notice`;\r\n const duration = args.duration === undefined ? defaultDuration : args.duration;\r\n let iconNode = null;\r\n if (args.icon) {\r\n iconNode = <span className={`${prefixCls}-icon`}>{args.icon}</span>;\r\n }\r\n else if (args.type) {\r\n const iconType = typeToIcon[args.type];\r\n iconNode = (<Icon className={`${prefixCls}-icon ${prefixCls}-icon-${args.type}`} type={iconType}/>);\r\n }\r\n const autoMarginTag = !args.description && iconNode ? (<span className={`${prefixCls}-message-single-line-auto-margin`}/>) : null;\r\n getNotificationInstance(outerPrefixCls, args.placement || defaultPlacement, (notification) => {\r\n notification.notice({\r\n content: (<div className={iconNode ? `${prefixCls}-with-icon` : ''}>\n {iconNode}\n <div className={`${prefixCls}-message`}>\n {autoMarginTag}\n {args.message}\n </div>\n <div className={`${prefixCls}-description`}>{args.description}</div>\n {args.btn ? <span className={`${prefixCls}-btn`}>{args.btn}</span> : null}\n </div>),\r\n duration,\r\n closable: true,\r\n onClose: args.onClose,\r\n key: args.key,\r\n style: args.style || {},\r\n className: args.className,\r\n });\r\n });\r\n}\r\nconst api = {\r\n open: notice,\r\n close(key) {\r\n Object.keys(notificationInstance).forEach(cacheKey => notificationInstance[cacheKey].removeNotice(key));\r\n },\r\n config: setNotificationConfig,\r\n destroy() {\r\n Object.keys(notificationInstance).forEach(cacheKey => {\r\n notificationInstance[cacheKey].destroy();\r\n delete notificationInstance[cacheKey];\r\n });\r\n },\r\n};\r\n['success', 'info', 'warning', 'error'].forEach(type => {\r\n api[type] = (args) => api.open({\r\n ...args,\r\n type,\r\n });\r\n});\r\napi.warn = api.warning;\r\nexport default api;\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = addEventListener;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _EventObject = require('./EventObject');\n\nvar _EventObject2 = _interopRequireDefault(_EventObject);\n\nfunction addEventListener(target, eventType, callback, option) {\n function wrapCallback(e) {\n var ne = new _EventObject2['default'](e);\n callback.call(target, ne);\n }\n\n if (target.addEventListener) {\n var _ret = (function () {\n var useCapture = false;\n if (typeof option === 'object') {\n useCapture = option.capture || false;\n } else if (typeof option === 'boolean') {\n useCapture = option;\n }\n\n target.addEventListener(eventType, wrapCallback, option || false);\n\n return {\n v: {\n remove: function remove() {\n target.removeEventListener(eventType, wrapCallback, useCapture);\n }\n }\n };\n })();\n\n if (typeof _ret === 'object') return _ret.v;\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, wrapCallback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, wrapCallback);\n }\n };\n }\n}\n\nmodule.exports = exports['default'];","var nargs = /\\{([0-9a-zA-Z_]+)\\}/g\n\nmodule.exports = template\n\nfunction template(string) {\n var args\n\n if (arguments.length === 2 && typeof arguments[1] === \"object\") {\n args = arguments[1]\n } else {\n args = new Array(arguments.length - 1)\n for (var i = 1; i < arguments.length; ++i) {\n args[i - 1] = arguments[i]\n }\n }\n\n if (!args || !args.hasOwnProperty) {\n args = {}\n }\n\n return string.replace(nargs, function replaceArg(match, i, index) {\n var result\n\n if (string[index - 1] === \"{\" &&\n string[index + match.length] === \"}\") {\n return i\n } else {\n result = args.hasOwnProperty(i) ? args[i] : null\n if (result === null || result === undefined) {\n return \"\"\n }\n\n return result\n }\n })\n}\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\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\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}\n\nmodule.exports = _objectDestructuringEmpty;","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\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","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","module.exports = require('./lib/axios');","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","class Node {\r\n constructor(value, prev, next, list) {\r\n if (!(this instanceof Node)) {\r\n return new Node(value, prev, next, list);\r\n }\r\n this.list = list;\r\n this.value = value;\r\n if (prev) {\r\n prev.next = this;\r\n this.prev = prev;\r\n }\r\n else {\r\n this.prev = null;\r\n }\r\n if (next) {\r\n next.prev = this;\r\n this.next = next;\r\n }\r\n else {\r\n this.next = null;\r\n }\r\n }\r\n}\r\nfunction insert(self, node, value) {\r\n const inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);\r\n if (inserted.next === null) {\r\n self.tail = inserted;\r\n }\r\n if (inserted.prev === null) {\r\n self.head = inserted;\r\n }\r\n self.length++;\r\n return inserted;\r\n}\r\nfunction push(self, item) {\r\n self.tail = new Node(item, self.tail, null, self);\r\n if (!self.head) {\r\n self.head = self.tail;\r\n }\r\n self.length++;\r\n}\r\nfunction unshift(self, item) {\r\n self.head = new Node(item, null, self.head, self);\r\n if (!self.tail) {\r\n self.tail = self.head;\r\n }\r\n self.length++;\r\n}\r\nexport default class Yallist {\r\n constructor(...args) {\r\n if (!(this instanceof Yallist)) {\r\n return new Yallist(...args);\r\n }\r\n this.tail = null;\r\n this.head = null;\r\n this.length = 0;\r\n const list = args[0];\r\n if (list && typeof list.forEach === 'function') {\r\n list.forEach(function (item) {\r\n this.push(item);\r\n });\r\n }\r\n else if (args.length > 0) {\r\n this.push(...args);\r\n }\r\n }\r\n removeNode(node) {\r\n if (node.list !== this) {\r\n throw new Error('removing node which does not belong to this list');\r\n }\r\n const { next, prev } = node;\r\n if (next) {\r\n next.prev = prev;\r\n }\r\n if (prev) {\r\n prev.next = next;\r\n }\r\n if (node === this.head) {\r\n this.head = next;\r\n }\r\n if (node === this.tail) {\r\n this.tail = prev;\r\n }\r\n node.list.length--;\r\n node.next = null;\r\n node.prev = null;\r\n node.list = null;\r\n return next;\r\n }\r\n unshiftNode(node) {\r\n if (node === this.head) {\r\n return;\r\n }\r\n if (node.list) {\r\n node.list.removeNode(node);\r\n }\r\n const { head } = this;\r\n node.list = this;\r\n node.next = head;\r\n if (head) {\r\n head.prev = node;\r\n }\r\n this.head = node;\r\n if (!this.tail) {\r\n this.tail = node;\r\n }\r\n this.length++;\r\n }\r\n pushNode(node) {\r\n if (node === this.tail) {\r\n return;\r\n }\r\n if (node.list) {\r\n node.list.removeNode(node);\r\n }\r\n const { tail } = this;\r\n node.list = this;\r\n node.prev = tail;\r\n if (tail) {\r\n tail.next = node;\r\n }\r\n this.tail = node;\r\n if (!this.head) {\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n push(...args) {\r\n args.forEach(item => push(this, item));\r\n return this.length;\r\n }\r\n unshift(...args) {\r\n args.forEach(item => unshift(this, item));\r\n return this.length;\r\n }\r\n pop() {\r\n if (!this.tail) {\r\n return undefined;\r\n }\r\n const { value } = this.tail;\r\n this.tail = this.tail.prev;\r\n if (this.tail) {\r\n this.tail.next = null;\r\n }\r\n else {\r\n this.head = null;\r\n }\r\n this.length--;\r\n return value;\r\n }\r\n shift() {\r\n if (!this.head) {\r\n return undefined;\r\n }\r\n const { value } = this.head;\r\n this.head = this.head.next;\r\n if (this.head) {\r\n this.head.prev = null;\r\n }\r\n else {\r\n this.tail = null;\r\n }\r\n this.length--;\r\n return value;\r\n }\r\n forEach(fn, thisp) {\r\n thisp = thisp || this;\r\n for (let walker = this.head, i = 0; walker !== null; i++) {\r\n fn.call(thisp, walker.value, i, this);\r\n walker = walker.next;\r\n }\r\n }\r\n forEachReverse(fn, thisp) {\r\n thisp = thisp || this;\r\n for (let walker = this.tail, i = this.length - 1; walker !== null; i--) {\r\n fn.call(thisp, walker.value, i, this);\r\n walker = walker.prev;\r\n }\r\n }\r\n get(n) {\r\n let i = 0;\r\n let walker = this.head;\r\n for (; walker !== null && i < n; i++) {\r\n walker = walker.next;\r\n }\r\n if (i === n && walker !== null) {\r\n return walker.value;\r\n }\r\n }\r\n getReverse(n) {\r\n let i = 0;\r\n let walker = this.tail;\r\n for (; walker !== null && i < n; i++) {\r\n // abort out of the list early if we hit a cycle\r\n walker = walker.prev;\r\n }\r\n if (i === n && walker !== null) {\r\n return walker.value;\r\n }\r\n }\r\n map(fn, thisp) {\r\n thisp = thisp || this;\r\n const res = new Yallist();\r\n for (let walker = this.head; walker !== null;) {\r\n res.push(fn.call(thisp, walker.value, this));\r\n walker = walker.next;\r\n }\r\n return res;\r\n }\r\n mapReverse(fn, thisp) {\r\n thisp = thisp || this;\r\n const res = new Yallist();\r\n for (let walker = this.tail; walker !== null;) {\r\n res.push(fn.call(thisp, walker.value, this));\r\n walker = walker.prev;\r\n }\r\n return res;\r\n }\r\n reduce(...args) {\r\n const fn = args[0];\r\n let acc;\r\n let walker = this.head;\r\n if (args.length > 1) {\r\n acc = args[1];\r\n }\r\n else if (this.head) {\r\n walker = this.head.next;\r\n acc = this.head.value;\r\n }\r\n else {\r\n throw new TypeError('Reduce of empty list with no initial value');\r\n }\r\n for (let i = 0; walker !== null; i++) {\r\n acc = fn(acc, walker.value, i);\r\n walker = walker.next;\r\n }\r\n return acc;\r\n }\r\n reduceReverse(...args) {\r\n const fn = args[0];\r\n let acc;\r\n let walker = this.tail;\r\n if (args.length > 1) {\r\n acc = args[1];\r\n }\r\n else if (this.tail) {\r\n walker = this.tail.prev;\r\n acc = this.tail.value;\r\n }\r\n else {\r\n throw new TypeError('Reduce of empty list with no initial value');\r\n }\r\n for (let i = this.length - 1; walker !== null; i--) {\r\n acc = fn(acc, walker.value, i);\r\n walker = walker.prev;\r\n }\r\n return acc;\r\n }\r\n toArray() {\r\n const arr = new Array(this.length);\r\n for (let i = 0, walker = this.head; walker !== null; i++) {\r\n arr[i] = walker.value;\r\n walker = walker.next;\r\n }\r\n return arr;\r\n }\r\n toArrayReverse() {\r\n const arr = new Array(this.length);\r\n for (let i = 0, walker = this.tail; walker !== null; i++) {\r\n arr[i] = walker.value;\r\n walker = walker.prev;\r\n }\r\n return arr;\r\n }\r\n slice(from, to) {\r\n to = to || this.length;\r\n if (to < 0) {\r\n to += this.length;\r\n }\r\n from = from || 0;\r\n if (from < 0) {\r\n from += this.length;\r\n }\r\n const ret = new Yallist();\r\n if (to < from || to < 0) {\r\n return ret;\r\n }\r\n if (from < 0) {\r\n from = 0;\r\n }\r\n if (to > this.length) {\r\n to = this.length;\r\n }\r\n let i = 0;\r\n let walker = this.head;\r\n for (; walker !== null && i < from; i++) {\r\n walker = walker.next;\r\n }\r\n for (; walker !== null && i < to; i++, walker = walker.next) {\r\n ret.push(walker.value);\r\n }\r\n return ret;\r\n }\r\n sliceReverse(from, to) {\r\n to = to || this.length;\r\n if (to < 0) {\r\n to += this.length;\r\n }\r\n from = from || 0;\r\n if (from < 0) {\r\n from += this.length;\r\n }\r\n const ret = new Yallist();\r\n if (to < from || to < 0) {\r\n return ret;\r\n }\r\n if (from < 0) {\r\n from = 0;\r\n }\r\n if (to > this.length) {\r\n to = this.length;\r\n }\r\n let i = this.length;\r\n let walker = this.tail;\r\n for (; walker !== null && i > to; i--) {\r\n walker = walker.prev;\r\n }\r\n for (; walker !== null && i > from; i--, walker = walker.prev) {\r\n ret.push(walker.value);\r\n }\r\n return ret;\r\n }\r\n splice(start, deleteCount, ...nodes) {\r\n if (start > this.length) {\r\n start = this.length - 1;\r\n }\r\n if (start < 0) {\r\n start = this.length + start;\r\n }\r\n let walker = this.head;\r\n for (let i = 0; walker !== null && i < start; i++) {\r\n walker = walker.next;\r\n }\r\n const ret = [];\r\n for (let i = 0; walker && i < deleteCount; i++) {\r\n ret.push(walker.value);\r\n walker = this.removeNode(walker);\r\n }\r\n if (walker === null) {\r\n walker = this.tail;\r\n }\r\n if (walker !== this.head && walker !== this.tail && walker !== null) {\r\n walker = walker.prev;\r\n }\r\n nodes.forEach(item => {\r\n walker = insert(this, walker, item);\r\n });\r\n return ret;\r\n }\r\n reverse() {\r\n const { head, tail } = this;\r\n for (let walker = head; walker !== null; walker = walker.prev) {\r\n const { prev } = walker;\r\n walker.prev = walker.next;\r\n walker.next = prev;\r\n }\r\n this.head = tail;\r\n this.tail = head;\r\n return this;\r\n }\r\n}\r\nYallist.Node = Node;\r\nYallist.create = Yallist;\r\ntry {\r\n Yallist.prototype[Symbol.iterator] = function* () {\r\n for (let walker = this.head; walker; walker = walker.next) {\r\n yield walker.value;\r\n }\r\n };\r\n // eslint-disable-next-line no-empty\r\n}\r\ncatch (er) { }\r\n","import Yallist from './Yallist';\r\nconst MAX = Symbol('max');\r\nconst LENGTH = Symbol('length');\r\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator');\r\nconst ALLOW_STALE = Symbol('allowStale');\r\nconst MAX_AGE = Symbol('maxAge');\r\nconst DISPOSE = Symbol('dispose');\r\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');\r\nconst LIST = Symbol('list');\r\nconst CACHE = Symbol('cache');\r\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');\r\nconst naiveLength = () => 1;\r\nfunction isStale(self, hit) {\r\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\r\n return false;\r\n const diff = Date.now() - hit.now;\r\n return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];\r\n}\r\nfunction del(self, node) {\r\n if (node) {\r\n const hit = node.value;\r\n if (self[DISPOSE])\r\n self[DISPOSE](hit.key, hit.value);\r\n self[LENGTH] -= hit.length;\r\n self[CACHE].delete(hit.key);\r\n self[LIST].removeNode(node);\r\n }\r\n}\r\nfunction get(self, key, doUse) {\r\n const node = self[CACHE].get(key);\r\n if (node) {\r\n const hit = node.value;\r\n if (isStale(self, hit)) {\r\n del(self, node);\r\n if (!self[ALLOW_STALE])\r\n return undefined;\r\n }\r\n else if (doUse) {\r\n if (self[UPDATE_AGE_ON_GET])\r\n node.value.now = Date.now();\r\n self[LIST].unshiftNode(node);\r\n }\r\n return hit.value;\r\n }\r\n}\r\nfunction trim(self) {\r\n if (self[LENGTH] > self[MAX]) {\r\n for (let walker = self[LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {\r\n // We know that we're about to delete this one, and also\r\n // what the next least recently used key will be, so just\r\n // go ahead and set it now.\r\n const prev = walker.prev;\r\n del(self, walker);\r\n walker = prev;\r\n }\r\n }\r\n}\r\nfunction forEachStep(self, fn, node, thisp) {\r\n let hit = node.value;\r\n if (isStale(self, hit)) {\r\n del(self, node);\r\n if (!self[ALLOW_STALE])\r\n hit = undefined;\r\n }\r\n if (hit)\r\n fn.call(thisp, hit.value, hit.key, self);\r\n}\r\nclass Entry {\r\n constructor(key, value, length, now, maxAge = 0) {\r\n this.key = key;\r\n this.value = value;\r\n this.length = length;\r\n this.now = now;\r\n this.maxAge = maxAge;\r\n }\r\n}\r\nexport default class Cache {\r\n constructor(options) {\r\n if (typeof options === 'number')\r\n options = { max: options };\r\n if (!options)\r\n options = {};\r\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\r\n throw new TypeError('max must be a non-negative number');\r\n this[MAX] = options.max || Infinity;\r\n const lc = options.length || naiveLength;\r\n this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;\r\n this[ALLOW_STALE] = options.stale || false;\r\n if (options.maxAge && typeof options.maxAge !== 'number')\r\n throw new TypeError('maxAge must be a number');\r\n this[MAX_AGE] = options.maxAge || 0;\r\n this[DISPOSE] = options.dispose;\r\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;\r\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;\r\n this.reset();\r\n }\r\n // resize the cache when the max changes.\r\n set max(mL) {\r\n if (typeof mL !== 'number' || mL < 0)\r\n throw new TypeError('max must be a non-negative number');\r\n this[MAX] = mL || Infinity;\r\n trim(this);\r\n }\r\n get max() {\r\n return this[MAX];\r\n }\r\n set allowStale(allowStale) {\r\n this[ALLOW_STALE] = !!allowStale;\r\n }\r\n get allowStale() {\r\n return this[ALLOW_STALE];\r\n }\r\n set maxAge(mA) {\r\n if (typeof mA !== 'number')\r\n throw new TypeError('maxAge must be a non-negative number');\r\n this[MAX_AGE] = mA;\r\n trim(this);\r\n }\r\n get maxAge() {\r\n return this[MAX_AGE];\r\n }\r\n // resize the cache when the lengthCalculator changes.\r\n set lengthCalculator(lC) {\r\n if (typeof lC !== 'function')\r\n lC = naiveLength;\r\n if (lC !== this[LENGTH_CALCULATOR]) {\r\n this[LENGTH_CALCULATOR] = lC;\r\n this[LENGTH] = 0;\r\n this[LIST].forEach(hit => {\r\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);\r\n this[LENGTH] += hit.length;\r\n });\r\n }\r\n trim(this);\r\n }\r\n get lengthCalculator() {\r\n return this[LENGTH_CALCULATOR];\r\n }\r\n get length() {\r\n return this[LENGTH];\r\n }\r\n get itemCount() {\r\n return this[LIST].length;\r\n }\r\n rforEach(fn, thisp) {\r\n thisp = thisp || this;\r\n for (let walker = this[LIST].tail; walker !== null;) {\r\n const prev = walker.prev;\r\n forEachStep(this, fn, walker, thisp);\r\n walker = prev;\r\n }\r\n }\r\n forEach(fn, thisp) {\r\n thisp = thisp || this;\r\n for (let walker = this[LIST].head; walker !== null;) {\r\n const next = walker.next;\r\n forEachStep(this, fn, walker, thisp);\r\n walker = next;\r\n }\r\n }\r\n keys() {\r\n return this[LIST].toArray().map(k => k.key);\r\n }\r\n values() {\r\n return this[LIST].toArray().map(k => k.value);\r\n }\r\n reset() {\r\n if (this[DISPOSE] && this[LIST] && this[LIST].length) {\r\n this[LIST].forEach(hit => this[DISPOSE](hit.key, hit.value));\r\n }\r\n this[CACHE] = new Map(); // hash of items by key\r\n this[LIST] = new Yallist(); // list of items in order of use recency\r\n this[LENGTH] = 0; // length of items in the list\r\n }\r\n dump() {\r\n return this[LIST].map(hit => isStale(this, hit)\r\n ? false\r\n : {\r\n k: hit.key,\r\n v: hit.value,\r\n e: hit.now + (hit.maxAge || 0),\r\n })\r\n .toArray()\r\n .filter(h => h);\r\n }\r\n dumpLru() {\r\n return this[LIST];\r\n }\r\n set(key, value, maxAge) {\r\n maxAge = maxAge || this[MAX_AGE];\r\n if (maxAge && typeof maxAge !== 'number')\r\n throw new TypeError('maxAge must be a number');\r\n const now = maxAge ? Date.now() : 0;\r\n const len = this[LENGTH_CALCULATOR](value, key);\r\n if (this[CACHE].has(key)) {\r\n if (len > this[MAX]) {\r\n del(this, this[CACHE].get(key));\r\n return false;\r\n }\r\n const node = this[CACHE].get(key);\r\n const item = node.value;\r\n if (this[DISPOSE]) {\r\n if (!this[NO_DISPOSE_ON_SET])\r\n this[DISPOSE](key, item.value);\r\n }\r\n item.now = now;\r\n item.maxAge = maxAge;\r\n item.value = value;\r\n this[LENGTH] += len - item.length;\r\n item.length = len;\r\n this.get(key);\r\n trim(this);\r\n return true;\r\n }\r\n const hit = new Entry(key, value, len, now, maxAge);\r\n if (hit.length > this[MAX]) {\r\n if (this[DISPOSE])\r\n this[DISPOSE](key, value);\r\n return false;\r\n }\r\n this[LENGTH] += hit.length;\r\n this[LIST].unshift(hit);\r\n this[CACHE].set(key, this[LIST].head);\r\n trim(this);\r\n return true;\r\n }\r\n has(key) {\r\n if (!this[CACHE].has(key))\r\n return false;\r\n const hit = this[CACHE].get(key).value;\r\n return !isStale(this, hit);\r\n }\r\n get(key) {\r\n return get(this, key, true);\r\n }\r\n peek(key) {\r\n return get(this, key, false);\r\n }\r\n pop() {\r\n const node = this[LIST].tail;\r\n if (!node)\r\n return null;\r\n del(this, node);\r\n return node.value;\r\n }\r\n del(key) {\r\n del(this, this[CACHE].get(key));\r\n }\r\n load(arr) {\r\n this.reset();\r\n const now = Date.now();\r\n // A previous serialized cache has the most recent items first\r\n for (let l = arr.length - 1; l >= 0; l--) {\r\n const hit = arr[l];\r\n const expiresAt = hit.e || 0;\r\n if (expiresAt === 0)\r\n // the item was created without expiration in a non aged cache\r\n this.set(hit.k, hit.v);\r\n else {\r\n const maxAge = expiresAt - now;\r\n // dont add already expired items\r\n if (maxAge > 0) {\r\n this.set(hit.k, hit.v, maxAge);\r\n }\r\n }\r\n }\r\n }\r\n prune() {\r\n this[CACHE].forEach((_value, key) => get(this, key, false));\r\n }\r\n}\r\n","require('../modules/es6.object.to-string');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es7.weak-map.of');\nrequire('../modules/es7.weak-map.from');\nmodule.exports = require('../modules/_core').WeakMap;\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 = 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","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","/**\n * @ignore\n * event object for dom\n * @author yiminghe@gmail.com\n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _EventBaseObject = require('./EventBaseObject');\n\nvar _EventBaseObject2 = _interopRequireDefault(_EventBaseObject);\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar TRUE = true;\nvar FALSE = false;\nvar commonProps = ['altKey', 'bubbles', 'cancelable', 'ctrlKey', 'currentTarget', 'eventPhase', 'metaKey', 'shiftKey', 'target', 'timeStamp', 'view', 'type'];\n\nfunction isNullOrUndefined(w) {\n return w === null || w === undefined;\n}\n\nvar eventNormalizers = [{\n reg: /^key/,\n props: ['char', 'charCode', 'key', 'keyCode', 'which'],\n fix: function fix(event, nativeEvent) {\n if (isNullOrUndefined(event.which)) {\n event.which = !isNullOrUndefined(nativeEvent.charCode) ? nativeEvent.charCode : nativeEvent.keyCode;\n }\n\n // add metaKey to non-Mac browsers (use ctrl for PC 's and Meta for Macs)\n if (event.metaKey === undefined) {\n event.metaKey = event.ctrlKey;\n }\n }\n}, {\n reg: /^touch/,\n props: ['touches', 'changedTouches', 'targetTouches']\n}, {\n reg: /^hashchange$/,\n props: ['newURL', 'oldURL']\n}, {\n reg: /^gesturechange$/i,\n props: ['rotation', 'scale']\n}, {\n reg: /^(mousewheel|DOMMouseScroll)$/,\n props: [],\n fix: function fix(event, nativeEvent) {\n var deltaX = undefined;\n var deltaY = undefined;\n var delta = undefined;\n var wheelDelta = nativeEvent.wheelDelta;\n var axis = nativeEvent.axis;\n var wheelDeltaY = nativeEvent.wheelDeltaY;\n var wheelDeltaX = nativeEvent.wheelDeltaX;\n var detail = nativeEvent.detail;\n\n // ie/webkit\n if (wheelDelta) {\n delta = wheelDelta / 120;\n }\n\n // gecko\n if (detail) {\n // press control e.detail == 1 else e.detail == 3\n delta = 0 - (detail % 3 === 0 ? detail / 3 : detail);\n }\n\n // Gecko\n if (axis !== undefined) {\n if (axis === event.HORIZONTAL_AXIS) {\n deltaY = 0;\n deltaX = 0 - delta;\n } else if (axis === event.VERTICAL_AXIS) {\n deltaX = 0;\n deltaY = delta;\n }\n }\n\n // Webkit\n if (wheelDeltaY !== undefined) {\n deltaY = wheelDeltaY / 120;\n }\n if (wheelDeltaX !== undefined) {\n deltaX = -1 * wheelDeltaX / 120;\n }\n\n // 默认 deltaY (ie)\n if (!deltaX && !deltaY) {\n deltaY = delta;\n }\n\n if (deltaX !== undefined) {\n /**\n * deltaX of mousewheel event\n * @property deltaX\n * @member Event.DomEvent.Object\n */\n event.deltaX = deltaX;\n }\n\n if (deltaY !== undefined) {\n /**\n * deltaY of mousewheel event\n * @property deltaY\n * @member Event.DomEvent.Object\n */\n event.deltaY = deltaY;\n }\n\n if (delta !== undefined) {\n /**\n * delta of mousewheel event\n * @property delta\n * @member Event.DomEvent.Object\n */\n event.delta = delta;\n }\n }\n}, {\n reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i,\n props: ['buttons', 'clientX', 'clientY', 'button', 'offsetX', 'relatedTarget', 'which', 'fromElement', 'toElement', 'offsetY', 'pageX', 'pageY', 'screenX', 'screenY'],\n fix: function fix(event, nativeEvent) {\n var eventDoc = undefined;\n var doc = undefined;\n var body = undefined;\n var target = event.target;\n var button = nativeEvent.button;\n\n // Calculate pageX/Y if missing and clientX/Y available\n if (target && isNullOrUndefined(event.pageX) && !isNullOrUndefined(nativeEvent.clientX)) {\n eventDoc = target.ownerDocument || document;\n doc = eventDoc.documentElement;\n body = eventDoc.body;\n event.pageX = nativeEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = nativeEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // which for click: 1 === left; 2 === middle; 3 === right\n // do not use button\n if (!event.which && button !== undefined) {\n if (button & 1) {\n event.which = 1;\n } else if (button & 2) {\n event.which = 3;\n } else if (button & 4) {\n event.which = 2;\n } else {\n event.which = 0;\n }\n }\n\n // add relatedTarget, if necessary\n if (!event.relatedTarget && event.fromElement) {\n event.relatedTarget = event.fromElement === target ? event.toElement : event.fromElement;\n }\n\n return event;\n }\n}];\n\nfunction retTrue() {\n return TRUE;\n}\n\nfunction retFalse() {\n return FALSE;\n}\n\nfunction DomEventObject(nativeEvent) {\n var type = nativeEvent.type;\n\n var isNative = typeof nativeEvent.stopPropagation === 'function' || typeof nativeEvent.cancelBubble === 'boolean';\n\n _EventBaseObject2['default'].call(this);\n\n this.nativeEvent = nativeEvent;\n\n // in case dom event has been mark as default prevented by lower dom node\n var isDefaultPrevented = retFalse;\n if ('defaultPrevented' in nativeEvent) {\n isDefaultPrevented = nativeEvent.defaultPrevented ? retTrue : retFalse;\n } else if ('getPreventDefault' in nativeEvent) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=691151\n isDefaultPrevented = nativeEvent.getPreventDefault() ? retTrue : retFalse;\n } else if ('returnValue' in nativeEvent) {\n isDefaultPrevented = nativeEvent.returnValue === FALSE ? retTrue : retFalse;\n }\n\n this.isDefaultPrevented = isDefaultPrevented;\n\n var fixFns = [];\n var fixFn = undefined;\n var l = undefined;\n var prop = undefined;\n var props = commonProps.concat();\n\n eventNormalizers.forEach(function (normalizer) {\n if (type.match(normalizer.reg)) {\n props = props.concat(normalizer.props);\n if (normalizer.fix) {\n fixFns.push(normalizer.fix);\n }\n }\n });\n\n l = props.length;\n\n // clone properties of the original event object\n while (l) {\n prop = props[--l];\n this[prop] = nativeEvent[prop];\n }\n\n // fix target property, if necessary\n if (!this.target && isNative) {\n this.target = nativeEvent.srcElement || document; // srcElement might not be defined either\n }\n\n // check if target is a text node (safari)\n if (this.target && this.target.nodeType === 3) {\n this.target = this.target.parentNode;\n }\n\n l = fixFns.length;\n\n while (l) {\n fixFn = fixFns[--l];\n fixFn(this, nativeEvent);\n }\n\n this.timeStamp = nativeEvent.timeStamp || Date.now();\n}\n\nvar EventBaseObjectProto = _EventBaseObject2['default'].prototype;\n\n(0, _objectAssign2['default'])(DomEventObject.prototype, EventBaseObjectProto, {\n constructor: DomEventObject,\n\n preventDefault: function preventDefault() {\n var e = this.nativeEvent;\n\n // if preventDefault exists run it on the original event\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n // otherwise set the returnValue property of the original event to FALSE (IE)\n e.returnValue = FALSE;\n }\n\n EventBaseObjectProto.preventDefault.call(this);\n },\n\n stopPropagation: function stopPropagation() {\n var e = this.nativeEvent;\n\n // if stopPropagation exists run it on the original event\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n // otherwise set the cancelBubble property of the original event to TRUE (IE)\n e.cancelBubble = TRUE;\n }\n\n EventBaseObjectProto.stopPropagation.call(this);\n }\n});\n\nexports['default'] = DomEventObject;\nmodule.exports = exports['default'];","/**\n * @ignore\n * base event object for custom and dom event.\n * @author yiminghe@gmail.com\n */\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction returnFalse() {\n return false;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction EventBaseObject() {\n this.timeStamp = Date.now();\n this.target = undefined;\n this.currentTarget = undefined;\n}\n\nEventBaseObject.prototype = {\n isEventObject: 1,\n\n constructor: EventBaseObject,\n\n isDefaultPrevented: returnFalse,\n\n isPropagationStopped: returnFalse,\n\n isImmediatePropagationStopped: returnFalse,\n\n preventDefault: function preventDefault() {\n this.isDefaultPrevented = returnTrue;\n },\n\n stopPropagation: function stopPropagation() {\n this.isPropagationStopped = returnTrue;\n },\n\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.isImmediatePropagationStopped = returnTrue;\n // fixed 1.2\n // call stopPropagation implicitly\n this.stopPropagation();\n },\n\n halt: function halt(immediate) {\n if (immediate) {\n this.stopImmediatePropagation();\n } else {\n this.stopPropagation();\n }\n this.preventDefault();\n }\n};\n\nexports[\"default\"] = EventBaseObject;\nmodule.exports = exports[\"default\"];","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","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}\n\nmodule.exports = _objectWithoutPropertiesLoose;","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","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","// 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","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","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","'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 = { \"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","// 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","// 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","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\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\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\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\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _PropTypes = require('./PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n _classCallCheck(this, Provider);\n\n return _possibleConstructorReturn(this, (Provider.__proto__ || Object.getPrototypeOf(Provider)).apply(this, arguments));\n }\n\n _createClass(Provider, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n miniStore: this.props.store\n };\n }\n }, {\n key: 'render',\n value: function render() {\n return _react.Children.only(this.props.children);\n }\n }]);\n\n return Provider;\n}(_react.Component);\n\nProvider.propTypes = {\n store: _PropTypes.storeShape.isRequired\n};\nProvider.childContextTypes = {\n miniStore: _PropTypes.storeShape.isRequired\n};\nexports.default = Provider;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.default = connect;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _shallowequal = require('shallowequal');\n\nvar _shallowequal2 = _interopRequireDefault(_shallowequal);\n\nvar _hoistNonReactStatics = require('hoist-non-react-statics');\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _reactLifecyclesCompat = require('react-lifecycles-compat');\n\nvar _PropTypes = require('./PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction isStateless(Component) {\n return !Component.prototype.render;\n}\n\nvar defaultMapStateToProps = function defaultMapStateToProps() {\n return {};\n};\n\nfunction connect(mapStateToProps) {\n var shouldSubscribe = !!mapStateToProps;\n var finnalMapStateToProps = mapStateToProps || defaultMapStateToProps;\n\n return function wrapWithConnect(WrappedComponent) {\n var Connect = function (_Component) {\n _inherits(Connect, _Component);\n\n _createClass(Connect, null, [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(props, prevState) {\n // using ownProps\n if (mapStateToProps && mapStateToProps.length === 2 && props !== prevState.props) {\n return {\n subscribed: finnalMapStateToProps(prevState.store.getState(), props),\n props: props\n };\n }\n return { props: props };\n }\n }]);\n\n function Connect(props, context) {\n _classCallCheck(this, Connect);\n\n var _this = _possibleConstructorReturn(this, (Connect.__proto__ || Object.getPrototypeOf(Connect)).call(this, props, context));\n\n _this.handleChange = function () {\n if (!_this.unsubscribe) {\n return;\n }\n var nextState = finnalMapStateToProps(_this.store.getState(), _this.props);\n if (!(0, _shallowequal2.default)(_this.state.subscribed, nextState)) {\n _this.setState({ subscribed: nextState });\n }\n };\n\n _this.store = context.miniStore;\n _this.state = {\n subscribed: finnalMapStateToProps(_this.store.getState(), props),\n store: _this.store,\n props: props\n };\n return _this;\n }\n\n _createClass(Connect, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.trySubscribe();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.tryUnsubscribe();\n }\n }, {\n key: 'trySubscribe',\n value: function trySubscribe() {\n if (shouldSubscribe) {\n this.unsubscribe = this.store.subscribe(this.handleChange);\n this.handleChange();\n }\n }\n }, {\n key: 'tryUnsubscribe',\n value: function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n }, {\n key: 'getWrappedInstance',\n value: function getWrappedInstance() {\n return this.wrappedInstance;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var props = _extends({}, this.props, this.state.subscribed, {\n store: this.store\n });\n\n if (!isStateless(WrappedComponent)) {\n props = _extends({}, props, {\n ref: function ref(c) {\n return _this2.wrappedInstance = c;\n }\n });\n }\n\n return _react2.default.createElement(WrappedComponent, props);\n }\n }]);\n\n return Connect;\n }(_react.Component);\n\n Connect.displayName = 'Connect(' + getDisplayName(WrappedComponent) + ')';\n Connect.contextTypes = {\n miniStore: _PropTypes.storeShape.isRequired\n };\n\n\n (0, _reactLifecyclesCompat.polyfill)(Connect);\n\n return (0, _hoistNonReactStatics2.default)(Connect, WrappedComponent);\n };\n}","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\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\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = create;\nfunction create(initialState) {\n var state = initialState;\n var listeners = [];\n\n function setState(partial) {\n state = _extends({}, state, partial);\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n }\n\n function getState() {\n return state;\n }\n\n function subscribe(listener) {\n listeners.push(listener);\n\n return function unsubscribe() {\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n }\n\n return {\n setState: setState,\n getState: getState,\n subscribe: subscribe\n };\n}","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\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;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","/**\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) {\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 Promise.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 Promise.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 Promise(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) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\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","// mutationobserver-shim v0.3.2 (github.com/megawac/MutationObserver.js)\n// Authors: Graeme Yeates (github.com/megawac) \nwindow.MutationObserver=window.MutationObserver||function(w){function v(a){this.i=[];this.m=a}function I(a){(function c(){var d=a.takeRecords();d.length&&a.m(d,a);a.h=setTimeout(c,v._period)})()}function p(a){var b={type:null,target:null,addedNodes:[],removedNodes:[],previousSibling:null,nextSibling:null,attributeName:null,attributeNamespace:null,oldValue:null},c;for(c in a)b[c]!==w&&a[c]!==w&&(b[c]=a[c]);return b}function J(a,b){var c=C(a,b);return function(d){var f=d.length,n;b.a&&3===a.nodeType&&\na.nodeValue!==c.a&&d.push(new p({type:\"characterData\",target:a,oldValue:c.a}));b.b&&c.b&&A(d,a,c.b,b.f);if(b.c||b.g)n=K(d,a,c,b);if(n||d.length!==f)c=C(a,b)}}function L(a,b){return b.value}function M(a,b){return\"style\"!==b.name?b.value:a.style.cssText}function A(a,b,c,d){for(var f={},n=b.attributes,k,g,x=n.length;x--;)k=n[x],g=k.name,d&&d[g]===w||(D(b,k)!==c[g]&&a.push(p({type:\"attributes\",target:b,attributeName:g,oldValue:c[g],attributeNamespace:k.namespaceURI})),f[g]=!0);for(g in c)f[g]||a.push(p({target:b,\ntype:\"attributes\",attributeName:g,oldValue:c[g]}))}function K(a,b,c,d){function f(b,c,f,k,y){var g=b.length-1;y=-~((g-y)/2);for(var h,l,e;e=b.pop();)h=f[e.j],l=k[e.l],d.c&&y&&Math.abs(e.j-e.l)>=g&&(a.push(p({type:\"childList\",target:c,addedNodes:[h],removedNodes:[h],nextSibling:h.nextSibling,previousSibling:h.previousSibling})),y--),d.b&&l.b&&A(a,h,l.b,d.f),d.a&&3===h.nodeType&&h.nodeValue!==l.a&&a.push(p({type:\"characterData\",target:h,oldValue:l.a})),d.g&&n(h,l)}function n(b,c){for(var g=b.childNodes,\nq=c.c,x=g.length,v=q?q.length:0,h,l,e,m,t,z=0,u=0,r=0;u<x||r<v;)m=g[u],t=(e=q[r])&&e.node,m===t?(d.b&&e.b&&A(a,m,e.b,d.f),d.a&&e.a!==w&&m.nodeValue!==e.a&&a.push(p({type:\"characterData\",target:m,oldValue:e.a})),l&&f(l,b,g,q,z),d.g&&(m.childNodes.length||e.c&&e.c.length)&&n(m,e),u++,r++):(k=!0,h||(h={},l=[]),m&&(h[e=E(m)]||(h[e]=!0,-1===(e=F(q,m,r,\"node\"))?d.c&&(a.push(p({type:\"childList\",target:b,addedNodes:[m],nextSibling:m.nextSibling,previousSibling:m.previousSibling})),z++):l.push({j:u,l:e})),\nu++),t&&t!==g[u]&&(h[e=E(t)]||(h[e]=!0,-1===(e=F(g,t,u))?d.c&&(a.push(p({type:\"childList\",target:c.node,removedNodes:[t],nextSibling:q[r+1],previousSibling:q[r-1]})),z--):l.push({j:e,l:r})),r++));l&&f(l,b,g,q,z)}var k;n(b,c);return k}function C(a,b){var c=!0;return function f(a){var k={node:a};!b.a||3!==a.nodeType&&8!==a.nodeType?(b.b&&c&&1===a.nodeType&&(k.b=G(a.attributes,function(c,f){if(!b.f||b.f[f.name])c[f.name]=D(a,f);return c})),c&&(b.c||b.a||b.b&&b.g)&&(k.c=N(a.childNodes,f)),c=b.g):k.a=\na.nodeValue;return k}(a)}function E(a){try{return a.id||(a.mo_id=a.mo_id||H++)}catch(b){try{return a.nodeValue}catch(c){return H++}}}function N(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=b(a[d],d,a);return c}function G(a,b){for(var c={},d=0;d<a.length;d++)c=b(c,a[d],d,a);return c}function F(a,b,c,d){for(;c<a.length;c++)if((d?a[c][d]:a[c])===b)return c;return-1}v._period=30;v.prototype={observe:function(a,b){for(var c={b:!!(b.attributes||b.attributeFilter||b.attributeOldValue),c:!!b.childList,g:!!b.subtree,\na:!(!b.characterData&&!b.characterDataOldValue)},d=this.i,f=0;f<d.length;f++)d[f].s===a&&d.splice(f,1);b.attributeFilter&&(c.f=G(b.attributeFilter,function(a,b){a[b]=!0;return a}));d.push({s:a,o:J(a,c)});this.h||I(this)},takeRecords:function(){for(var a=[],b=this.i,c=0;c<b.length;c++)b[c].o(a);return a},disconnect:function(){this.i=[];clearTimeout(this.h);this.h=null}};var B=document.createElement(\"i\");B.style.top=0;var D=(B=\"null\"!=B.attributes.style.value)?L:M,H=1;return v}(void 0);\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\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","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var createFind = require('./_createFind'),\n findLastIndex = require('./findLastIndex');\n\n/**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\nvar findLast = createFind(findLastIndex);\n\nmodule.exports = findLast;\n","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","import Cache from '../_util/Cache';\r\nimport { buildURLWithAxiosConfig } from './utils';\r\nexport default function throttleAdapterEnhancer(adapter, options = {}) {\r\n const { threshold = 1000, cache = new Cache({ max: 10 }) } = options;\r\n const recordCacheWithRequest = (index, config) => {\r\n const responsePromise = (async () => {\r\n try {\r\n const response = await adapter(config);\r\n cache.set(index, {\r\n timestamp: Date.now(),\r\n value: Promise.resolve(response),\r\n });\r\n return response;\r\n }\r\n catch (reason) {\r\n cache.del(index);\r\n throw reason;\r\n }\r\n })();\r\n cache.set(index, {\r\n timestamp: Date.now(),\r\n value: responsePromise,\r\n });\r\n return responsePromise;\r\n };\r\n return config => {\r\n const index = buildURLWithAxiosConfig(config);\r\n const now = Date.now();\r\n const cachedRecord = cache.get(index) || { timestamp: now };\r\n if (now - cachedRecord.timestamp <= threshold) {\r\n const responsePromise = cachedRecord.value;\r\n if (responsePromise) {\r\n if (process.env.LOGGER_LEVEL === 'info') {\r\n // eslint-disable-next-line no-console\r\n console.info(`request cached by throttle adapter: ${index}`);\r\n }\r\n return responsePromise;\r\n }\r\n }\r\n return recordCacheWithRequest(index, config);\r\n };\r\n}\r\n","import { getConfig } from 'choerodon-ui/lib/configure';\r\nimport { reaction } from 'mobx';\r\nimport Cache from '../_util/Cache';\r\nimport { buildURLWithAxiosConfig, isCacheLike } from './utils';\r\nfunction getDefaultCache() {\r\n const cache = new Cache(getConfig('lookupCache'));\r\n reaction(() => getConfig('lookupCache'), (lookupCache = {}) => {\r\n if ('max' in lookupCache) {\r\n cache.max = lookupCache.max;\r\n }\r\n if ('maxAge' in lookupCache) {\r\n cache.maxAge = lookupCache.maxAge;\r\n }\r\n if ('stale' in lookupCache) {\r\n cache.allowStale = lookupCache.stale;\r\n }\r\n if ('length' in lookupCache) {\r\n cache.lengthCalculator = lookupCache.length;\r\n }\r\n });\r\n return cache;\r\n}\r\nexport default function cacheAdapterEnhancer(adapter, options = {}) {\r\n const { enabledByDefault = true, cacheFlag = 'cache', defaultCache = getDefaultCache(), } = options;\r\n return config => {\r\n const useCache = config[cacheFlag] !== undefined && config[cacheFlag] !== null\r\n ? config[cacheFlag]\r\n : enabledByDefault;\r\n if (useCache) {\r\n const cache = isCacheLike(useCache) ? useCache : defaultCache;\r\n const index = buildURLWithAxiosConfig(config);\r\n let responsePromise = cache.get(index);\r\n if (!responsePromise) {\r\n responsePromise = (async () => {\r\n try {\r\n return await adapter(config);\r\n }\r\n catch (reason) {\r\n cache.del(index);\r\n throw reason;\r\n }\r\n })();\r\n if (process.env.LOGGER_LEVEL === 'info') {\r\n // eslint-disable-next-line no-console\r\n console.info(`request: ${index}`);\r\n }\r\n cache.set(index, responsePromise);\r\n return responsePromise;\r\n }\r\n if (process.env.LOGGER_LEVEL === 'info') {\r\n // eslint-disable-next-line no-console\r\n console.info(`request cached by cache adapter: ${index}`);\r\n }\r\n return responsePromise;\r\n }\r\n return adapter(config);\r\n };\r\n}\r\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { getPrefixCls } from '../configure';\r\nconst stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);\r\nconst objectOrNumber = PropTypes.oneOfType([PropTypes.object, PropTypes.number]);\r\nexport default function Col(props) {\r\n const { span, order, offset, push, pull, className, children, prefixCls: customizePrefixCls, ...others } = props;\r\n const prefixCls = getPrefixCls('col', customizePrefixCls);\r\n let sizeClassObj = {};\r\n ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].forEach(size => {\r\n let sizeProps = {};\r\n if (typeof props[size] === 'number') {\r\n sizeProps.span = props[size];\r\n }\r\n else if (typeof props[size] === 'object') {\r\n sizeProps = props[size] || {};\r\n }\r\n delete others[size];\r\n sizeClassObj = {\r\n ...sizeClassObj,\r\n [`${prefixCls}-${size}-${sizeProps.span}`]: sizeProps.span !== undefined,\r\n [`${prefixCls}-${size}-order-${sizeProps.order}`]: sizeProps.order || sizeProps.order === 0,\r\n [`${prefixCls}-${size}-offset-${sizeProps.offset}`]: sizeProps.offset || sizeProps.offset === 0,\r\n [`${prefixCls}-${size}-push-${sizeProps.push}`]: sizeProps.push || sizeProps.push === 0,\r\n [`${prefixCls}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull || sizeProps.pull === 0,\r\n };\r\n });\r\n const classes = classNames({\r\n [`${prefixCls}-${span}`]: span !== undefined,\r\n [`${prefixCls}-order-${order}`]: order,\r\n [`${prefixCls}-offset-${offset}`]: offset,\r\n [`${prefixCls}-push-${push}`]: push,\r\n [`${prefixCls}-pull-${pull}`]: pull,\r\n }, className, sizeClassObj);\r\n return (<div {...others} className={classes}>\n {children}\n </div>);\r\n}\r\nCol.displayName = 'Col';\r\nCol.propTypes = {\r\n span: stringOrNumber,\r\n order: stringOrNumber,\r\n offset: stringOrNumber,\r\n push: stringOrNumber,\r\n pull: stringOrNumber,\r\n className: PropTypes.string,\r\n children: PropTypes.node,\r\n xs: objectOrNumber,\r\n sm: objectOrNumber,\r\n md: objectOrNumber,\r\n lg: objectOrNumber,\r\n xl: objectOrNumber,\r\n xxl: objectOrNumber,\r\n};\r\n","import React, { Children, cloneElement, Component } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport Responsive from '../responsive/Responsive';\r\nimport { getPrefixCls } from '../configure';\r\nconst defaultGutter = 0;\r\nexport default class Row extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.renderRow = ([gutter = defaultGutter]) => {\r\n const { type, justify, align, className, style, children, prefixCls: customizePrefixCls, ...others } = this.props;\r\n const prefixCls = getPrefixCls('row', customizePrefixCls);\r\n const classes = classNames({\r\n [prefixCls]: !type,\r\n [`${prefixCls}-${type}`]: type,\r\n [`${prefixCls}-${type}-${justify}`]: type && justify,\r\n [`${prefixCls}-${type}-${align}`]: type && align,\r\n }, className);\r\n const rowStyle = gutter > 0\r\n ? {\r\n marginLeft: gutter / -2,\r\n marginRight: gutter / -2,\r\n ...style,\r\n }\r\n : style;\r\n const cols = Children.map(children, (col) => {\r\n if (!col) {\r\n return null;\r\n }\r\n if (col.props && gutter > 0) {\r\n return cloneElement(col, {\r\n style: {\r\n paddingLeft: gutter / 2,\r\n paddingRight: gutter / 2,\r\n ...col.props.style,\r\n },\r\n });\r\n }\r\n return col;\r\n });\r\n const otherProps = { ...others };\r\n delete otherProps.gutter;\r\n return (<div {...omit(otherProps, ['rowIndex', 'colIndex'])} className={classes} style={rowStyle}>\n {cols}\n </div>);\r\n };\r\n }\r\n render() {\r\n const { gutter } = this.props;\r\n return <Responsive items={[gutter]}>{this.renderRow}</Responsive>;\r\n }\r\n}\r\nRow.displayName = 'Row';\r\nRow.defaultProps = {\r\n gutter: defaultGutter,\r\n};\r\nRow.propTypes = {\r\n type: PropTypes.string,\r\n align: PropTypes.string,\r\n justify: PropTypes.string,\r\n className: PropTypes.string,\r\n children: PropTypes.node,\r\n gutter: PropTypes.oneOfType([PropTypes.object, PropTypes.number]),\r\n prefixCls: PropTypes.string,\r\n};\r\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nmodule.exports = baseDelay;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nmodule.exports = findLastIndex;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","'use strict';\n\nvar _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n} : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar __extends = undefined && undefined.__extends || function() {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n }\n instanceof Array && function(d, b) {\n d.__proto__ = b;\n } || function(d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n return function(d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar React = require('react');\nvar SERVER_RENDERED = typeof navigator === 'undefined' || global['PREVENT_CODEMIRROR_RENDER'] === true;\nvar cm;\nif (!SERVER_RENDERED) {\n cm = require('codemirror');\n}\nvar Helper = function() {\n function Helper() {}\n Helper.equals = function(x, y) {\n var _this = this;\n var ok = Object.keys,\n tx = typeof x === 'undefined' ? 'undefined' : _typeof(x),\n ty = typeof y === 'undefined' ? 'undefined' : _typeof(y);\n return x && y && tx === 'object' && tx === ty ? ok(x).length === ok(y).length && ok(x).every(function(key) {\n return _this.equals(x[key], y[key]);\n }) : x === y;\n };\n return Helper;\n}();\nvar Shared = function() {\n function Shared(editor, props) {\n this.editor = editor;\n this.props = props;\n }\n Shared.prototype.delegateCursor = function(position, scroll, focus) {\n var doc = this.editor.getDoc();\n if (focus) {\n this.editor.focus();\n }\n scroll ? doc.setCursor(position) : doc.setCursor(position, null, {\n scroll: false\n });\n };\n Shared.prototype.delegateScroll = function(coordinates) {\n this.editor.scrollTo(coordinates.x, coordinates.y);\n };\n Shared.prototype.delegateSelection = function(ranges, focus) {\n this.editor.setSelections(ranges);\n if (focus) {\n this.editor.focus();\n }\n };\n Shared.prototype.apply = function(props) {\n if (props && props.selection && props.selection.ranges) {\n this.delegateSelection(props.selection.ranges, props.selection.focus || false);\n }\n if (props && props.cursor) {\n this.delegateCursor(props.cursor, props.autoScroll || false, this.editor.getOption('autofocus') || false);\n }\n if (props && props.scroll) {\n this.delegateScroll(props.scroll);\n }\n };\n Shared.prototype.applyNext = function(props, next, preserved) {\n if (props && props.selection && props.selection.ranges) {\n if (next && next.selection && next.selection.ranges && !Helper.equals(props.selection.ranges, next.selection.ranges)) {\n this.delegateSelection(next.selection.ranges, next.selection.focus || false);\n }\n }\n if (props && props.cursor) {\n if (next && next.cursor && !Helper.equals(props.cursor, next.cursor)) {\n this.delegateCursor(preserved.cursor || next.cursor, next.autoScroll || false, next.autoCursor || false);\n }\n }\n if (props && props.scroll) {\n if (next && next.scroll && !Helper.equals(props.scroll, next.scroll)) {\n this.delegateScroll(next.scroll);\n }\n }\n };\n Shared.prototype.applyUserDefined = function(props, preserved) {\n if (preserved && preserved.cursor) {\n this.delegateCursor(preserved.cursor, props.autoScroll || false, this.editor.getOption('autofocus') || false);\n }\n };\n Shared.prototype.wire = function(props) {\n var _this = this;\n Object.keys(props || {}).filter(function(p) {\n return (/^on/.test(p));\n }).forEach(function(prop) {\n switch (prop) {\n case 'onBlur':\n {\n _this.editor.on('blur', function(cm, event) {\n _this.props.onBlur(_this.editor, event);\n });\n }\n break;\n case 'onContextMenu':\n {\n _this.editor.on('contextmenu', function(cm, event) {\n _this.props.onContextMenu(_this.editor, event);\n });\n break;\n }\n case 'onCopy':\n {\n _this.editor.on('copy', function(cm, event) {\n _this.props.onCopy(_this.editor, event);\n });\n break;\n }\n case 'onCursor':\n {\n _this.editor.on('cursorActivity', function(cm) {\n _this.props.onCursor(_this.editor, _this.editor.getCursor());\n });\n }\n break;\n case 'onCursorActivity':\n {\n _this.editor.on('cursorActivity', function(cm) {\n _this.props.onCursorActivity(_this.editor);\n });\n }\n break;\n case 'onCut':\n {\n _this.editor.on('cut', function(cm, event) {\n _this.props.onCut(_this.editor, event);\n });\n break;\n }\n case 'onDblClick':\n {\n _this.editor.on('dblclick', function(cm, event) {\n _this.props.onDblClick(_this.editor, event);\n });\n break;\n }\n case 'onDragEnter':\n {\n _this.editor.on('dragenter', function(cm, event) {\n _this.props.onDragEnter(_this.editor, event);\n });\n }\n break;\n case 'onDragLeave':\n {\n _this.editor.on('dragleave', function(cm, event) {\n _this.props.onDragLeave(_this.editor, event);\n });\n break;\n }\n case 'onDragOver':\n {\n _this.editor.on('dragover', function(cm, event) {\n _this.props.onDragOver(_this.editor, event);\n });\n }\n break;\n case 'onDragStart':\n {\n _this.editor.on('dragstart', function(cm, event) {\n _this.props.onDragStart(_this.editor, event);\n });\n break;\n }\n case 'onDrop':\n {\n _this.editor.on('drop', function(cm, event) {\n _this.props.onDrop(_this.editor, event);\n });\n }\n break;\n case 'onFocus':\n {\n _this.editor.on('focus', function(cm, event) {\n _this.props.onFocus(_this.editor, event);\n });\n }\n break;\n case 'onGutterClick':\n {\n _this.editor.on('gutterClick', function(cm, lineNumber, gutter, event) {\n _this.props.onGutterClick(_this.editor, lineNumber, gutter, event);\n });\n }\n break;\n case 'onKeyDown':\n {\n _this.editor.on('keydown', function(cm, event) {\n _this.props.onKeyDown(_this.editor, event);\n });\n }\n break;\n case 'onKeyPress':\n {\n _this.editor.on('keypress', function(cm, event) {\n _this.props.onKeyPress(_this.editor, event);\n });\n }\n break;\n case 'onKeyUp':\n {\n _this.editor.on('keyup', function(cm, event) {\n _this.props.onKeyUp(_this.editor, event);\n });\n }\n break;\n case 'onMouseDown':\n {\n _this.editor.on('mousedown', function(cm, event) {\n _this.props.onMouseDown(_this.editor, event);\n });\n break;\n }\n case 'onPaste':\n {\n _this.editor.on('paste', function(cm, event) {\n _this.props.onPaste(_this.editor, event);\n });\n break;\n }\n case 'onRenderLine':\n {\n _this.editor.on('renderLine', function(cm, line, element) {\n _this.props.onRenderLine(_this.editor, line, element);\n });\n break;\n }\n case 'onScroll':\n {\n _this.editor.on('scroll', function(cm) {\n _this.props.onScroll(_this.editor, _this.editor.getScrollInfo());\n });\n }\n break;\n case 'onSelection':\n {\n _this.editor.on('beforeSelectionChange', function(cm, data) {\n _this.props.onSelection(_this.editor, data);\n });\n }\n break;\n case 'onTouchStart':\n {\n _this.editor.on('touchstart', function(cm, event) {\n _this.props.onTouchStart(_this.editor, event);\n });\n break;\n }\n case 'onUpdate':\n {\n _this.editor.on('update', function(cm) {\n _this.props.onUpdate(_this.editor);\n });\n }\n break;\n case 'onViewportChange':\n {\n _this.editor.on('viewportChange', function(cm, from, to) {\n _this.props.onViewportChange(_this.editor, from, to);\n });\n }\n break;\n }\n });\n };\n return Shared;\n}();\nvar Controlled = function(_super) {\n __extends(Controlled, _super);\n\n function Controlled(props) {\n var _this = _super.call(this, props) || this;\n if (SERVER_RENDERED) return _this;\n _this.applied = false;\n _this.appliedNext = false;\n _this.appliedUserDefined = false;\n _this.deferred = null;\n _this.emulating = false;\n _this.hydrated = false;\n _this.initCb = function() {\n if (_this.props.editorDidConfigure) {\n _this.props.editorDidConfigure(_this.editor);\n }\n };\n _this.mounted = false;\n return _this;\n }\n Controlled.prototype.hydrate = function(props) {\n var _this = this;\n var userDefinedOptions = _extends({}, cm.defaults, this.editor.options, props.options || {});\n var optionDelta = Object.keys(userDefinedOptions).some(function(key) {\n return _this.editor.getOption(key) !== userDefinedOptions[key];\n });\n if (optionDelta) {\n Object.keys(userDefinedOptions).forEach(function(key) {\n if (props.options.hasOwnProperty(key)) {\n if (_this.editor.getOption(key) !== userDefinedOptions[key]) {\n _this.editor.setOption(key, userDefinedOptions[key]);\n _this.mirror.setOption(key, userDefinedOptions[key]);\n }\n }\n });\n }\n if (!this.hydrated) {\n if (!this.mounted) {\n this.initChange(props.value || '');\n } else {\n if (this.deferred) {\n this.resolveChange();\n } else {\n this.initChange(props.value || '');\n }\n }\n }\n this.hydrated = true;\n };\n Controlled.prototype.initChange = function(value) {\n this.emulating = true;\n var lastLine = this.editor.lastLine();\n var lastChar = this.editor.getLine(this.editor.lastLine()).length;\n this.editor.replaceRange(value || '', {\n line: 0,\n ch: 0\n }, {\n line: lastLine,\n ch: lastChar\n });\n this.mirror.setValue(value);\n this.editor.clearHistory();\n this.mirror.clearHistory();\n this.emulating = false;\n };\n Controlled.prototype.resolveChange = function() {\n this.emulating = true;\n if (this.deferred.origin === 'undo') {\n this.editor.undo();\n } else if (this.deferred.origin === 'redo') {\n this.editor.redo();\n } else {\n this.editor.replaceRange(this.deferred.text, this.deferred.from, this.deferred.to, this.deferred.origin);\n }\n this.emulating = false;\n this.deferred = null;\n };\n Controlled.prototype.mirrorChange = function(deferred) {\n if (deferred.origin === 'undo') {\n this.editor.setHistory(this.mirror.getHistory());\n this.mirror.undo();\n } else if (deferred.origin === 'redo') {\n this.editor.setHistory(this.mirror.getHistory());\n this.mirror.redo();\n } else {\n this.mirror.replaceRange(deferred.text, deferred.from, deferred.to, deferred.origin);\n }\n return this.mirror.getValue();\n };\n Controlled.prototype.componentWillMount = function() {\n if (SERVER_RENDERED) return;\n if (this.props.editorWillMount) {\n this.props.editorWillMount();\n }\n };\n Controlled.prototype.componentDidMount = function() {\n var _this = this;\n if (SERVER_RENDERED) return;\n if (this.props.defineMode) {\n if (this.props.defineMode.name && this.props.defineMode.fn) {\n cm.defineMode(this.props.defineMode.name, this.props.defineMode.fn);\n }\n }\n this.editor = cm(this.ref);\n this.shared = new Shared(this.editor, this.props);\n this.mirror = cm(function() {});\n this.editor.on('electricInput', function() {\n _this.mirror.setHistory(_this.editor.getHistory());\n });\n this.editor.on('cursorActivity', function() {\n _this.mirror.setCursor(_this.editor.getCursor());\n });\n this.editor.on('beforeChange', function(cm, data) {\n if (_this.emulating) {\n return;\n }\n data.cancel();\n _this.deferred = data;\n var phantomChange = _this.mirrorChange(_this.deferred);\n if (_this.props.onBeforeChange) _this.props.onBeforeChange(_this.editor, _this.deferred, phantomChange);\n });\n this.editor.on('change', function(cm, data) {\n if (!_this.mounted) {\n return;\n }\n if (_this.props.onChange) {\n _this.props.onChange(_this.editor, data, _this.editor.getValue());\n }\n });\n this.hydrate(this.props);\n this.shared.apply(this.props);\n this.applied = true;\n this.mounted = true;\n this.shared.wire(this.props);\n if (this.editor.getOption('autofocus')) {\n this.editor.focus();\n }\n if (this.props.editorDidMount) {\n this.props.editorDidMount(this.editor, this.editor.getValue(), this.initCb);\n }\n };\n Controlled.prototype.componentWillReceiveProps = function(nextProps) {\n if (SERVER_RENDERED) return;\n var preserved = {\n cursor: null\n };\n if (nextProps.value !== this.props.value) {\n this.hydrated = false;\n }\n if (!this.props.autoCursor && this.props.autoCursor !== undefined) {\n preserved.cursor = this.editor.getCursor();\n }\n this.hydrate(nextProps);\n if (!this.appliedNext) {\n this.shared.applyNext(this.props, nextProps, preserved);\n this.appliedNext = true;\n }\n this.shared.applyUserDefined(this.props, preserved);\n this.appliedUserDefined = true;\n };\n Controlled.prototype.componentWillUnmount = function() {\n if (SERVER_RENDERED) return;\n if (this.props.editorWillUnmount) {\n this.props.editorWillUnmount(cm);\n }\n };\n Controlled.prototype.shouldComponentUpdate = function(nextProps, nextState) {\n return !SERVER_RENDERED;\n };\n Controlled.prototype.render = function() {\n var _this = this;\n if (SERVER_RENDERED) return null;\n var className = this.props.className ? 'react-codemirror2 ' + this.props.className : 'react-codemirror2';\n return React.createElement('div', {\n className: className,\n ref: function ref(self) {\n return _this.ref = self;\n }\n });\n };\n return Controlled;\n}(React.Component);\nexports.Controlled = Controlled;\nvar UnControlled = function(_super) {\n __extends(UnControlled, _super);\n\n function UnControlled(props) {\n var _this = _super.call(this, props) || this;\n if (SERVER_RENDERED) return _this;\n _this.applied = false;\n _this.appliedUserDefined = false;\n _this.continueChange = false;\n _this.detached = false;\n _this.hydrated = false;\n _this.initCb = function() {\n if (_this.props.editorDidConfigure) {\n _this.props.editorDidConfigure(_this.editor);\n }\n };\n _this.mounted = false;\n _this.onBeforeChangeCb = function() {\n _this.continueChange = true;\n };\n return _this;\n }\n UnControlled.prototype.hydrate = function(props) {\n var _this = this;\n var userDefinedOptions = _extends({}, cm.defaults, this.editor.options, props.options || {});\n var optionDelta = Object.keys(userDefinedOptions).some(function(key) {\n return _this.editor.getOption(key) !== userDefinedOptions[key];\n });\n if (optionDelta) {\n Object.keys(userDefinedOptions).forEach(function(key) {\n if (props.options.hasOwnProperty(key)) {\n if (_this.editor.getOption(key) !== userDefinedOptions[key]) {\n _this.editor.setOption(key, userDefinedOptions[key]);\n }\n }\n });\n }\n if (!this.hydrated) {\n var lastLine = this.editor.lastLine();\n var lastChar = this.editor.getLine(this.editor.lastLine()).length;\n this.editor.replaceRange(props.value || '', {\n line: 0,\n ch: 0\n }, {\n line: lastLine,\n ch: lastChar\n });\n }\n this.hydrated = true;\n };\n UnControlled.prototype.componentWillMount = function() {\n if (SERVER_RENDERED) return;\n if (this.props.editorWillMount) {\n this.props.editorWillMount();\n }\n };\n UnControlled.prototype.componentDidMount = function() {\n var _this = this;\n if (SERVER_RENDERED) return;\n this.detached = this.props.detach === true;\n if (this.props.defineMode) {\n if (this.props.defineMode.name && this.props.defineMode.fn) {\n cm.defineMode(this.props.defineMode.name, this.props.defineMode.fn);\n }\n }\n this.editor = cm(this.ref);\n this.shared = new Shared(this.editor, this.props);\n this.editor.on('beforeChange', function(cm, data) {\n if (_this.props.onBeforeChange) {\n _this.props.onBeforeChange(_this.editor, data, _this.editor.getValue(), _this.onBeforeChangeCb);\n }\n });\n this.editor.on('change', function(cm, data) {\n if (!_this.mounted || !_this.props.onChange) {\n return;\n }\n if (_this.props.onBeforeChange) {\n if (_this.continueChange) {\n _this.props.onChange(_this.editor, data, _this.editor.getValue());\n }\n } else {\n _this.props.onChange(_this.editor, data, _this.editor.getValue());\n }\n });\n this.hydrate(this.props);\n this.shared.apply(this.props);\n this.applied = true;\n this.mounted = true;\n this.shared.wire(this.props);\n this.editor.clearHistory();\n if (this.props.editorDidMount) {\n this.props.editorDidMount(this.editor, this.editor.getValue(), this.initCb);\n }\n };\n UnControlled.prototype.componentWillReceiveProps = function(nextProps) {\n if (this.detached && nextProps.detach === false) {\n this.detached = false;\n if (this.props.editorDidAttach) {\n this.props.editorDidAttach(this.editor);\n }\n }\n if (!this.detached && nextProps.detach === true) {\n this.detached = true;\n if (this.props.editorDidDetach) {\n this.props.editorDidDetach(this.editor);\n }\n }\n if (SERVER_RENDERED || this.detached) return;\n var preserved = {\n cursor: null\n };\n if (nextProps.value !== this.props.value) {\n this.hydrated = false;\n this.applied = false;\n this.appliedUserDefined = false;\n }\n if (!this.props.autoCursor && this.props.autoCursor !== undefined) {\n preserved.cursor = this.editor.getCursor();\n }\n this.hydrate(nextProps);\n if (!this.applied) {\n this.shared.apply(this.props);\n this.applied = true;\n }\n if (!this.appliedUserDefined) {\n this.shared.applyUserDefined(this.props, preserved);\n this.appliedUserDefined = true;\n }\n };\n UnControlled.prototype.componentWillUnmount = function() {\n if (SERVER_RENDERED) return;\n if (this.props.editorWillUnmount) {\n this.props.editorWillUnmount(cm);\n }\n };\n UnControlled.prototype.shouldComponentUpdate = function(nextProps, nextState) {\n var update = true;\n if (SERVER_RENDERED) update = false;\n if (this.detached) update = false;\n return update;\n };\n UnControlled.prototype.render = function() {\n var _this = this;\n if (SERVER_RENDERED) return null;\n var className = this.props.className ? 'react-codemirror2 ' + this.props.className : 'react-codemirror2';\n return React.createElement('div', {\n className: className,\n ref: function ref(self) {\n return _this.ref = self;\n }\n });\n };\n return UnControlled;\n}(React.Component);\nexports.UnControlled = UnControlled;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\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.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {this.id = null;};\n Delayed.prototype.set = function (ms, f) {\n clearTimeout(this.id);\n this.id = setTimeout(f, ms);\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 30;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n input.init(d);\n }\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n // Add a span to a line.\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n var line = getLine(doc, lineNo$$1);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers || (emitter._handlers = {});\n map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range$$1;\n try {range$$1 = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range$$1 || range$$1.parentElement() != te) { return false }\n return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var this$1 = this;\n\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n var this$1 = this;\n\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this$1.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (node.className == \"CodeMirror-linewidget\")\n { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map$$1, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map$$1.length; i += 3) {\n mStart = map$$1[i];\n mEnd = map$$1[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map$$1[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n node = map$$1[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n node = map$$1[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = true; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight$$1 = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo$$1, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight$$1; box.bottom += widgetHeight$$1;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo$$1, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top || y >= coords.bottom;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor]);\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[cm.options.gutters[i]] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range$$1 = doc.sel.ranges[i];\n if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n var collapsed = range$$1.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range$$1.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range$$1, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range$$1, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range$$1.from(), sTo = range$$1.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm);\n return true\n }\n return false\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range$$1) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range$$1;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range$$1 = cm.curOp.scrollToPos;\n if (range$$1) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n scrollToCoordsRange(cm, from, to, range$$1.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this$1.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range$$1 = document.createRange();\n range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range$$1.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range$$1);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(cm) {\n var width = cm.display.gutters.offsetWidth;\n cm.display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function updateGutters(cm) {\n var gutters = cm.display.gutters, specs = cm.options.gutters;\n removeChildren(gutters);\n var i = 0;\n for (; i < specs.length; ++i) {\n var gutterClass = specs[i];\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n if (gutterClass == \"CodeMirror-linenumbers\") {\n cm.display.lineGutter = gElt;\n gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = i ? \"\" : \"none\";\n updateGutterSpace(cm);\n }\n\n // Make sure the gutters options contains the element\n // \"CodeMirror-linenumbers\" when the lineNumbers option is true.\n function setGuttersForLineNumbers(options) {\n var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n if (found == -1 && options.lineNumbers) {\n options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n } else if (found > -1 && !options.lineNumbers) {\n options.gutters = options.gutters.slice(0);\n options.gutters.splice(found, 1);\n }\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n var this$1 = this;\n\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this$1.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var this$1 = this;\n\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this$1.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n var this$1 = this;\n\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this$1.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight$$1);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(startGen) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = startGen || 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n var this$1 = this;\n\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm)\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n var this$1 = this;\n\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this$1;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n var this$1 = this;\n\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this$1.lines[i];\n this$1.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var e = at + n; at < e; ++at)\n { if (op(this$1.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n var this$1 = this;\n\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this$1;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n var this$1 = this;\n\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this$1.height -= oldHeight - child.height;\n if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this$1.children.splice(++i, 0, leaf);\n leaf.parent = this$1;\n }\n child.lines = child.lines.slice(0, remaining);\n this$1.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n var this$1 = this;\n\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this$1[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var this$1 = this;\n\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n var this$1 = this;\n\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null));\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n var this$1 = this;\n\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this$1; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this$1.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range$$1 = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range$$1.head; }\n else if (start == \"anchor\") { pos = range$$1.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n else { pos = range$$1.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n var this$1 = this;\n\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n clipPos(this$1, ranges[i].head)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var this$1 = this;\n\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var this$1 = this;\n\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var this$1 = this;\n\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range$$1 = sel.ranges[i];\n changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this$1, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo$$1 = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n span.from == null && lineNo$$1 != from.line ||\n span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo$$1;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo$$1;\n });\n return clipPos(this, Pos(lineNo$$1, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n var this$1 = this;\n\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this$1.linked[i];\n if (link.doc != other) { continue }\n this$1.linked.splice(i, 1);\n other.unlinkDoc(this$1);\n detachSharedMarkers(findSharedMarkers(this$1));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var loadFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n { return }\n\n var reader = new FileReader;\n reader.onload = operation(cm, function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n text[i] = content;\n if (++read == n) {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n }\n });\n reader.readAsText(file);\n };\n for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map$$1, handle, context) {\n map$$1 = getKeyMap(map$$1);\n var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map$$1.fallthrough) {\n if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map$$1.fallthrough, handle, context) }\n for (var i = 0; i < map$$1.fallthrough.length; i++) {\n var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(0, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if (webkit || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus(); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n delayBlurEvent(cm);\n setTimeout(function () { return display.input.focus(); }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range$$1 = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); }\n else\n { ourRange = range$$1; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range$$1 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range$$1.anchor, anchor) > 0) {\n head = range$$1.head;\n anchor = minPos(oldRange.from(), range$$1.anchor);\n } else {\n head = range$$1.anchor;\n anchor = maxPos(oldRange.to(), range$$1.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n e_preventDefault(e);\n display.input.focus();\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range$$1) {\n var anchor = range$$1.anchor;\n var head = range$$1.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range$$1 }\n var order = getOrder(anchorLine);\n if (!order) { return range$$1 }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range$$1 }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range$$1 }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.options.gutters.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.options.gutters[i];\n signal(cm, type, cm, line, gutter, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n guttersChanged(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"firstLineNumber\", 1, guttersChanged, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function guttersChanged(cm) {\n updateGutters(cm);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n setGuttersForLineNumbers(options);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input);\n display.wrapper.CodeMirror = this;\n updateGutters(this);\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(bind(onFocus, this), 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this$1, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range$$1 = sel.ranges[i$1];\n var from = range$$1.from(), to = range$$1.to();\n if (range$$1.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range$$1 = sel.ranges[i];\n if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n var mode = cm.getModeAt(range$$1.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range$$1.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", !!autocorrect);\n field.setAttribute(\"autocapitalize\", !!autocapitalize);\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map$$1, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n },\n removeKeyMap: function(map$$1) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var this$1 = this;\n\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this$1.state.modeGen++;\n regChange(this$1);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var this$1 = this;\n\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range$$1 = ranges[i];\n if (!range$$1.empty()) {\n var from = range$$1.from(), to = range$$1.to();\n var start = Math.max(end, from.line);\n end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this$1, j, how); }\n var newRanges = this$1.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range$$1.head.line > end) {\n indentLine(this$1, range$$1.head.line, how, true);\n end = range$$1.head.line;\n if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var this$1 = this;\n\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range$$1 = this.doc.sel.primary();\n if (start == null) { pos = range$$1.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range$$1.from() : range$$1.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var this$1 = this;\n\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this$1.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range$$1) {\n if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range$$1) {\n var other = findPosH(doc, range$$1.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var this$1 = this;\n\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this$1, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this$1, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range$$1) {\n if (collapse)\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range$$1 == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range$$1, margin) {\n if (range$$1 == null) {\n range$$1 = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range$$1 == \"number\") {\n range$$1 = {from: Pos(range$$1, 0), to: null};\n } else if (range$$1.from == null) {\n range$$1 = {from: range$$1, to: null};\n }\n if (!range$$1.to) { range$$1.to = range$$1.from; }\n range$$1.margin = margin || 0;\n\n if (range$$1.from.line != null) {\n scrollToRange(this, range$$1);\n } else {\n scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo$$1 = this.display.viewFrom;\n this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n ++lineNo$$1;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"char\", \"column\" (like char, but doesn't\n // cross line boundaries), \"word\" (across next word), or \"group\" (to\n // the start of next group of word or non-word-non-whitespace\n // chars). The visually param controls whether, in right-to-left\n // text, direction 1 means to move towards the next index in the\n // string, or towards the character to the right of the current\n // position. The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n function findNextLine() {\n var l = pos.line + dir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n on(div, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = this.cm.state.focused;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor())\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n if (this.selectionInEditor())\n { this.pollSelection(); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range$$1 = found[0].find(0)))\n { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map$$1 = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map$$1.length; j += 3) {\n var curNode = map$$1[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map$$1[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.44.0\";\n\n return CodeMirror;\n\n})));\n","import axios from 'axios';\r\nconst jsonMimeType = 'application/json';\r\nconst instance = axios.create({\r\n timeout: 30000,\r\n headers: {\r\n 'Content-Type': jsonMimeType,\r\n Accept: jsonMimeType,\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n },\r\n});\r\n// http response 拦截器\r\ninstance.interceptors.response.use((response) => {\r\n const { status, data } = response;\r\n if (status === 204) {\r\n return response;\r\n }\r\n if (data.success === false) {\r\n throw data;\r\n }\r\n else {\r\n return data;\r\n }\r\n});\r\nexport default instance;\r\n","import * as tslib_1 from \"tslib\";\r\nimport { action, computed, observable } from 'mobx';\r\nexport default class Validity {\r\n constructor(props) {\r\n this.init(props);\r\n }\r\n get valid() {\r\n return Object.keys(this)\r\n .filter(key => key !== 'valid')\r\n .every(key => !this[key]);\r\n }\r\n reset() {\r\n this.init();\r\n }\r\n init(props) {\r\n this.badInput = false;\r\n this.customError = false;\r\n this.patternMismatch = false;\r\n this.rangeOverflow = false;\r\n this.rangeUnderflow = false;\r\n this.stepMismatch = false;\r\n this.tooLong = false;\r\n this.tooShort = false;\r\n this.typeMismatch = false;\r\n this.valueMissing = false;\r\n this.uniqueError = false;\r\n if (props) {\r\n Object.assign(this, props);\r\n }\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"badInput\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"customError\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"patternMismatch\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"rangeOverflow\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"rangeUnderflow\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"stepMismatch\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"tooLong\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"tooShort\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"typeMismatch\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"valueMissing\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validity.prototype, \"uniqueError\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Validity.prototype, \"valid\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Validity.prototype, \"init\", null);\r\n","export default class ValidationResult {\r\n constructor(props) {\r\n Object.assign(this, props);\r\n }\r\n}\r\n","export default function isEmpty(value, allowBlank = false) {\r\n return value === null || value === undefined || (allowBlank ? false : value === '');\r\n}\r\n","export const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 2 ** 53 - 1;\r\nexport function getPrecision(value) {\r\n const valueString = value.toString();\r\n if (valueString.indexOf('e-') >= 0) {\r\n return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);\r\n }\r\n if (valueString.indexOf('.') >= 0) {\r\n return valueString.length - valueString.indexOf('.') - 1;\r\n }\r\n return 0;\r\n}\r\nfunction getMaxPrecision(value, step) {\r\n const stepPrecision = getPrecision(step);\r\n const currentValuePrecision = getPrecision(value);\r\n if (!value) {\r\n return stepPrecision;\r\n }\r\n return Math.max(currentValuePrecision, stepPrecision);\r\n}\r\nfunction getPrecisionFactor(value, step) {\r\n return 10 ** getMaxPrecision(value, step);\r\n}\r\nfunction precisionFix(value, precisionFactor) {\r\n return Math.round(value * precisionFactor);\r\n}\r\nexport function plus(...values) {\r\n if (values.length > 2) {\r\n return plus(values.shift(), plus(...values));\r\n }\r\n if (values.length < 2) {\r\n return values[0];\r\n }\r\n const v1 = values[0];\r\n const v2 = values[1];\r\n const precisionFactor = getPrecisionFactor(v1, v2);\r\n return (precisionFix(v1, precisionFactor) + precisionFix(v2, precisionFactor)) / precisionFactor;\r\n}\r\nfunction getBeforeStepValue(value, minFactor, stepFactor) {\r\n return value - ((value - minFactor) % stepFactor);\r\n}\r\nexport function getNearStepValues(value, step, min = -MAX_SAFE_INTEGER, max = MAX_SAFE_INTEGER) {\r\n min = Number(min);\r\n max = Number(max);\r\n const precisionFactor = getPrecisionFactor(value, step);\r\n const valueFactor = precisionFix(value, precisionFactor);\r\n const minFactor = precisionFix(min, precisionFactor);\r\n const minFactorBase = min === -MAX_SAFE_INTEGER ? 0 : minFactor;\r\n const maxFactor = precisionFix(max, precisionFactor);\r\n const stepFactor = precisionFix(step, precisionFactor);\r\n let beforeStepFactor = getBeforeStepValue(valueFactor, minFactorBase, stepFactor);\r\n if (beforeStepFactor === valueFactor) {\r\n return undefined;\r\n }\r\n if (beforeStepFactor > maxFactor) {\r\n beforeStepFactor = getBeforeStepValue(maxFactor, minFactorBase, stepFactor);\r\n }\r\n else if (beforeStepFactor < minFactor) {\r\n beforeStepFactor = minFactor;\r\n }\r\n const afterStepFactor = beforeStepFactor + stepFactor;\r\n const values = [beforeStepFactor / precisionFactor];\r\n if (afterStepFactor <= maxFactor) {\r\n values.push(afterStepFactor / precisionFactor);\r\n }\r\n return values;\r\n}\r\n","import isObject from 'lodash/isObject';\r\nimport isNil from 'lodash/isNil';\r\nimport { isArrayLike } from 'mobx';\r\nimport moment from 'moment';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport { FieldType } from '../data-set/enum';\r\nexport function toRangeValue(value, range) {\r\n if (isArrayLike(range)) {\r\n if (isObject(value)) {\r\n const [start, end] = range;\r\n return [value[start], value[end]];\r\n }\r\n }\r\n else if (isArrayLike(value)) {\r\n return value.slice(0, 2);\r\n }\r\n return [undefined, undefined];\r\n}\r\nexport function fromRangeValue(value, range) {\r\n if (isArrayLike(range)) {\r\n const [start, end] = range;\r\n return {\r\n [start]: value[0],\r\n [end]: value[1],\r\n };\r\n }\r\n return value;\r\n}\r\nexport function toMultipleValue(value, range) {\r\n if (!isNil(value)) {\r\n const multipleValue = isArrayLike(value) ? value.slice() : [value];\r\n if (range) {\r\n return multipleValue.map(item => toRangeValue(item, range));\r\n }\r\n return multipleValue;\r\n }\r\n return [];\r\n}\r\nexport function getDateFormatByFieldType(type) {\r\n const formatter = getConfig('formatter');\r\n switch (type) {\r\n case FieldType.date:\r\n return formatter.date;\r\n case FieldType.dateTime:\r\n return formatter.dateTime;\r\n case FieldType.week:\r\n return formatter.week;\r\n case FieldType.month:\r\n return formatter.month;\r\n case FieldType.year:\r\n return formatter.year;\r\n case FieldType.time:\r\n return formatter.time;\r\n default:\r\n return formatter.date;\r\n }\r\n}\r\nexport function getDateFormatByField(field, type) {\r\n if (field) {\r\n return field.get('format') || getDateFormatByFieldType(type || field.type);\r\n }\r\n if (type) {\r\n return getDateFormatByFieldType(type);\r\n }\r\n return getConfig('formatter').jsonDate || moment.defaultFormat;\r\n}\r\n","import { isMoment } from 'moment';\r\nimport isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport { FieldType } from '../../data-set/enum';\r\nimport { toRangeValue } from '../../field/utils';\r\n/* eslint-disable */\r\nconst emailReg = /^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*$/;\r\nconst urlReg = /^(?:(?:https?|HTTPS?|ftp|FTP):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*)(?::\\d{2,5})?(?:[\\/?#]\\S*)?$/;\r\nconst colorRgbaReg = /^[rR][gG][Bb][Aa]?\\((\\s*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\\s*,){2}\\s*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\\s*,?\\s*(0?\\.\\d{1,2}|1|0)?\\s*\\){1}$/;\r\nconst colorHexReg = /^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/;\r\n/* eslint-enable */\r\nconst isDate = (value, range) => {\r\n if (range) {\r\n return toRangeValue(value, range).some(item => item && (!isMoment(item) || !item.isValid()));\r\n }\r\n return !isMoment(value) || !value.isValid();\r\n};\r\nconst types = {\r\n [FieldType.email]: [value => !emailReg.test(value), 'EmailField'],\r\n [FieldType.url]: [value => !urlReg.test(value), 'UrlField'],\r\n [FieldType.color]: [\r\n value => !(colorRgbaReg.test(value) || colorHexReg.test(value)),\r\n 'ColorPicker',\r\n ],\r\n [FieldType.date]: [isDate, 'DatePicker'],\r\n [FieldType.dateTime]: [isDate, 'DatePicker'],\r\n [FieldType.week]: [isDate, 'DatePicker'],\r\n [FieldType.month]: [isDate, 'DatePicker'],\r\n [FieldType.year]: [isDate, 'DatePicker'],\r\n [FieldType.time]: [isDate, 'DatePicker'],\r\n};\r\nexport default function typeMismatch(value, props) {\r\n const { type, defaultValidationMessages, range } = props;\r\n if (!isEmpty(value) && type) {\r\n const validateType = types[type];\r\n if (validateType) {\r\n const [validate, component] = validateType;\r\n if (validate(value, range)) {\r\n const ruleName = 'typeMismatch';\r\n const { [ruleName]: validationMessage = $l(component, 'type_mismatch'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n","import isString from 'lodash/isString';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nexport default async function customError(value, props) {\r\n const { customValidator, name, record, form } = props;\r\n if (typeof customValidator === 'function') {\r\n const result = await customValidator(value, name, record || form);\r\n if (isString(result) || result === false) {\r\n return new ValidationResult({\r\n validationMessage: result || $l('Validator', 'unknown'),\r\n value,\r\n ruleName: 'customError',\r\n });\r\n }\r\n }\r\n return true;\r\n}\r\n","import { get, isObservableObject, remove, runInAction, set } from 'mobx';\r\nexport function mobxGet(obj, key) {\r\n if (isObservableObject(obj)) {\r\n return get(obj, key);\r\n }\r\n return obj[key];\r\n}\r\nexport function mobxSet(obj, key, value) {\r\n if (isObservableObject(obj)) {\r\n runInAction(() => {\r\n set(obj, key, value);\r\n });\r\n }\r\n else {\r\n obj[key] = value;\r\n }\r\n}\r\nexport function mobxRemove(obj, key) {\r\n if (isObservableObject(obj)) {\r\n runInAction(() => {\r\n remove(obj, key);\r\n });\r\n }\r\n else {\r\n delete obj[key];\r\n }\r\n}\r\n","import isObject from 'lodash/isObject';\r\nimport { isArrayLike, observable } from 'mobx';\r\nimport { mobxGet, mobxRemove, mobxSet } from './MobxUtils';\r\nexport function get(obj, prop) {\r\n const index = prop.indexOf('.');\r\n if (index !== -1) {\r\n const key = prop.slice(0, index);\r\n const restKey = prop.slice(index + 1);\r\n const value = mobxGet(obj, key);\r\n if (isArrayLike(value)) {\r\n return value.map(item => get(item, restKey)).filter(item => !!item);\r\n }\r\n if (isObject(value)) {\r\n return get(value, restKey);\r\n }\r\n }\r\n else {\r\n return mobxGet(obj, prop);\r\n }\r\n}\r\nexport function set(data, prop, value, fields = observable.map()) {\r\n const index = prop.indexOf('.');\r\n if (index !== -1) {\r\n const key = prop.slice(0, index);\r\n if (!data[key] && value !== undefined) {\r\n const field = fields.get(key);\r\n if (field && field.get('multiple')) {\r\n mobxSet(data, key, []);\r\n }\r\n else {\r\n mobxSet(data, key, {});\r\n }\r\n }\r\n const obj = mobxGet(data, key);\r\n if (isArrayLike(obj)) {\r\n if (isArrayLike(value)) {\r\n value.forEach((item, i) => {\r\n if (!obj[i]) {\r\n obj.push({});\r\n }\r\n set(obj[i], prop.slice(index + 1), item);\r\n });\r\n }\r\n }\r\n else if (isObject(obj)) {\r\n set(obj, prop.slice(index + 1), value);\r\n }\r\n }\r\n else {\r\n mobxSet(data, prop, value);\r\n }\r\n}\r\nexport function remove(obj, prop) {\r\n const index = prop.indexOf('.');\r\n if (index !== -1) {\r\n const key = prop.slice(0, index);\r\n const restKey = prop.slice(index + 1);\r\n const value = mobxGet(obj, key);\r\n if (isArrayLike(value)) {\r\n value.forEach(item => remove(item, restKey));\r\n }\r\n else if (isObject(value)) {\r\n remove(value, restKey);\r\n }\r\n }\r\n else {\r\n mobxRemove(obj, prop);\r\n }\r\n}\r\n","import capitalize from 'lodash/capitalize';\r\nimport { FieldFormat, FieldTrim, FieldType } from '../data-set/enum';\r\nlet supportsLocales;\r\nexport function toLocaleStringSupportsLocales() {\r\n if (supportsLocales === undefined) {\r\n try {\r\n (0).toLocaleString('i');\r\n supportsLocales = false;\r\n }\r\n catch (e) {\r\n supportsLocales = e.name === 'RangeError';\r\n }\r\n }\r\n return supportsLocales;\r\n}\r\nexport function getNumberFormatOptions(type, options) {\r\n if (type === FieldType.number) {\r\n return { style: 'decimal' };\r\n }\r\n if (options && options.currency) {\r\n return { style: 'currency' };\r\n }\r\n return { style: 'decimal', minimumFractionDigits: 2, maximumFractionDigits: 2 };\r\n}\r\nexport function toLocaleStringPolyfill(value, type, options) {\r\n if (type === FieldType.number) {\r\n const fraction = String(value).split('.')[1];\r\n return value.toLocaleString().split('.')[0] + (fraction ? `.${fraction}` : '');\r\n }\r\n const currency = options && options.currency;\r\n return `${currency ? `${currency} ` : ''}${value.toLocaleString()}`;\r\n}\r\nexport function trimString(value, fieldTrim) {\r\n if (fieldTrim) {\r\n switch (fieldTrim) {\r\n case FieldTrim.both:\r\n return value.trim();\r\n case FieldTrim.left:\r\n return value.trimLeft();\r\n case FieldTrim.right:\r\n return value.trimRight();\r\n default:\r\n }\r\n }\r\n return value;\r\n}\r\nexport function transformString(value, format) {\r\n if (format) {\r\n switch (format) {\r\n case FieldFormat.uppercase:\r\n return value.toUpperCase();\r\n case FieldFormat.lowercase:\r\n return value.toLowerCase();\r\n case FieldFormat.capitalize:\r\n return capitalize(value);\r\n default:\r\n }\r\n }\r\n return value;\r\n}\r\n","import isString from 'lodash/isString';\r\nimport { transformString, trimString } from './utils';\r\nexport default function formatString(value, { trim, format }) {\r\n if (isString(value)) {\r\n return transformString(trimString(value, trim), format);\r\n }\r\n return value;\r\n}\r\n","import queryString from 'querystringify';\r\nimport moment, { isDate, isMoment } from 'moment';\r\nimport { isArrayLike } from 'mobx';\r\nimport isBoolean from 'lodash/isBoolean';\r\nimport isObject from 'lodash/isObject';\r\nimport isString from 'lodash/isString';\r\nimport isArray from 'lodash/isArray';\r\nimport isNumber from 'lodash/isNumber';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport { BooleanValue, FieldType, RecordStatus, SortOrder } from './enum';\r\nimport isEmpty from '../_util/isEmpty';\r\nimport * as ObjectChainValue from '../_util/ObjectChainValue';\r\nimport localeContext, { $l } from '../locale-context';\r\nimport formatString from '../formatter/formatString';\r\nimport formatNumber from '../formatter/formatNumber';\r\nimport formatCurrency from '../formatter/formatCurrency';\r\nexport function append(url, suffix) {\r\n if (suffix) {\r\n return url + queryString.stringify(suffix, url.indexOf('?') === -1);\r\n }\r\n return url;\r\n}\r\nexport function getOrderFields(fields) {\r\n return [...fields.values()].filter(({ order }) => order);\r\n}\r\nexport function processToJSON(value) {\r\n if (isDate(value)) {\r\n value = moment(value);\r\n }\r\n if (isMoment(value)) {\r\n const { jsonDate } = getConfig('formatter');\r\n value = jsonDate ? value.format(jsonDate) : +value;\r\n }\r\n return value;\r\n}\r\nfunction processOne(value, field, checkRange = true) {\r\n if (!isEmpty(value)) {\r\n const range = field.get('range');\r\n if (range && checkRange) {\r\n if (isArrayLike(range)) {\r\n if (isObject(value)) {\r\n const [start, end] = range;\r\n value[start] = processOne(value[start], field, false);\r\n value[end] = processOne(value[end], field, false);\r\n }\r\n }\r\n else if (isArrayLike(value)) {\r\n value[0] = processOne(value[0], field, false);\r\n value[1] = processOne(value[1], field, false);\r\n }\r\n }\r\n else if (value instanceof Date) {\r\n value = moment(value);\r\n }\r\n else if (!isObject(value)) {\r\n value = formatString(value, {\r\n trim: field.get('trim'),\r\n format: field.get('format'),\r\n });\r\n switch (field.type) {\r\n case FieldType.boolean: {\r\n const trueValue = field.get(BooleanValue.trueValue);\r\n const falseValue = field.get(BooleanValue.falseValue);\r\n if (value !== trueValue) {\r\n value = falseValue;\r\n }\r\n break;\r\n }\r\n case FieldType.number:\r\n case FieldType.currency:\r\n if (!isNaN(value)) {\r\n value = Number(value);\r\n }\r\n else {\r\n value = undefined;\r\n }\r\n break;\r\n case FieldType.string:\r\n case FieldType.intl:\r\n case FieldType.email:\r\n case FieldType.url:\r\n value = String(value);\r\n break;\r\n case FieldType.date:\r\n case FieldType.dateTime:\r\n case FieldType.time:\r\n case FieldType.week:\r\n case FieldType.month:\r\n case FieldType.year: {\r\n const { jsonDate } = getConfig('formatter');\r\n value = jsonDate ? moment(value, jsonDate) : moment(value);\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\nexport function processValue(value, field) {\r\n if (field) {\r\n const multiple = field.get('multiple');\r\n const range = field.get('range');\r\n if (multiple) {\r\n if (isEmpty(value)) {\r\n value = [];\r\n }\r\n else if (!isArray(value)) {\r\n if (isString(multiple) && isString(value)) {\r\n value = value.split(multiple);\r\n }\r\n else {\r\n value = [value];\r\n }\r\n }\r\n }\r\n if (isArray(value) && (multiple || !range)) {\r\n return value.map(item => processOne(item, field));\r\n }\r\n return processOne(value, field);\r\n }\r\n return value;\r\n}\r\nexport function childrenInfoForDelete(json, children) {\r\n return Object.keys(children).reduce((data, name) => {\r\n const child = children[name];\r\n if (child) {\r\n data[name] = [childrenInfoForDelete({}, child.children)];\r\n }\r\n return data;\r\n }, json);\r\n}\r\nexport function sortTree(children, orderField) {\r\n if (orderField && children.length > 0) {\r\n const { name, order } = orderField;\r\n const m = Number.MIN_SAFE_INTEGER;\r\n children.sort((record1, record2) => {\r\n const a = record1.get(name) || m;\r\n const b = record2.get(name) || m;\r\n if (isString(a) || isString(b)) {\r\n return order === SortOrder.asc\r\n ? String(a).localeCompare(String(b))\r\n : String(b).localeCompare(String(a));\r\n }\r\n return order === SortOrder.asc ? a - b : b - a;\r\n });\r\n }\r\n return children;\r\n}\r\nexport function checkParentByInsert({ parent }) {\r\n if (parent && !parent.current) {\r\n throw new Error($l('DataSet', 'cannot_add_record_when_head_no_current'));\r\n }\r\n}\r\nfunction getValueType(value) {\r\n return isBoolean(value)\r\n ? FieldType.boolean\r\n : isNumber(value)\r\n ? FieldType.number\r\n : isString(value)\r\n ? FieldType.string\r\n : isMoment(value)\r\n ? FieldType.date\r\n : isObject(value)\r\n ? FieldType.object\r\n : FieldType.auto;\r\n}\r\nfunction getBaseType(type) {\r\n switch (type) {\r\n case FieldType.number:\r\n case FieldType.currency:\r\n return FieldType.number;\r\n case FieldType.dateTime:\r\n case FieldType.time:\r\n case FieldType.week:\r\n case FieldType.month:\r\n case FieldType.year:\r\n return FieldType.date;\r\n case FieldType.intl:\r\n case FieldType.url:\r\n case FieldType.email:\r\n return FieldType.string;\r\n default:\r\n return type;\r\n }\r\n}\r\nexport function checkFieldType(value, field) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!isEmpty(value)) {\r\n if (isArrayLike(value)) {\r\n return value.every(item => checkFieldType(item, field));\r\n }\r\n const fieldType = getBaseType(field.type);\r\n const valueType = field.type === FieldType.boolean &&\r\n [field.get(BooleanValue.trueValue), field.get(BooleanValue.falseValue)].includes(value)\r\n ? FieldType.boolean\r\n : getValueType(value);\r\n if (fieldType !== FieldType.auto &&\r\n fieldType !== FieldType.reactNode &&\r\n fieldType !== valueType) {\r\n warning(false, `Value type error: The value<${value}>'s type is ${valueType}, but the field<${field.name}>'s type is ${fieldType}.`);\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nlet iframe;\r\nexport function doExport(url, data, method = 'post') {\r\n if (!iframe) {\r\n iframe = document.createElement('iframe');\r\n iframe.id = '_export_window';\r\n iframe.name = '_export_window';\r\n iframe.style.cssText =\r\n 'position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;display:none';\r\n document.body.appendChild(iframe);\r\n }\r\n const form = document.createElement('form');\r\n form.target = '_export_window';\r\n form.method = method;\r\n form.action = url;\r\n const s = document.createElement('input');\r\n s.id = '_request_data';\r\n s.type = 'hidden';\r\n s.name = '_request_data';\r\n s.value = JSON.stringify(data);\r\n form.appendChild(s);\r\n document.body.appendChild(form);\r\n form.submit();\r\n document.body.removeChild(form);\r\n}\r\nexport function findBindFields(myField, fields, excludeSelf) {\r\n const { name } = myField;\r\n return [...fields.values()].filter(field => {\r\n if (field !== myField) {\r\n const bind = field.get('bind');\r\n return isString(bind) && bind.startsWith(`${name}.`);\r\n }\r\n return !excludeSelf;\r\n });\r\n}\r\nexport function findBindField(myField, fields, callback) {\r\n const name = isString(myField) ? myField : myField.name;\r\n return [...fields.values()].find(field => {\r\n if (field.name !== name) {\r\n const bind = field.get('bind');\r\n return isString(bind) && bind.startsWith(`${name}.`) && (!callback || callback(field));\r\n }\r\n return false;\r\n });\r\n}\r\nfunction numberSorter(a, b) {\r\n return a - b;\r\n}\r\nfunction stringSorter(a, b) {\r\n return String(a || '').localeCompare(String(b || ''));\r\n}\r\nexport function getFieldSorter(field) {\r\n const { name } = field;\r\n switch (field.type) {\r\n case FieldType.number:\r\n case FieldType.currency:\r\n case FieldType.date:\r\n case FieldType.dateTime:\r\n case FieldType.week:\r\n case FieldType.month:\r\n case FieldType.year:\r\n case FieldType.time:\r\n return field.order === SortOrder.asc\r\n ? (a, b) => numberSorter(a.get(name), b.get(name))\r\n : (a, b) => numberSorter(b.get(name), a.get(name));\r\n default:\r\n return field.order === SortOrder.asc\r\n ? (a, b) => stringSorter(a.get(name), b.get(name))\r\n : (a, b) => stringSorter(b.get(name), a.get(name));\r\n }\r\n}\r\nexport function generateJSONData(array, record, isSelect, noCascade) {\r\n const json = record.toJSONData(noCascade);\r\n if (json.__dirty || isSelect) {\r\n delete json.__dirty;\r\n array.push(json);\r\n }\r\n}\r\nexport function prepareSubmitData(records, isSelect, noCascade) {\r\n const created = [];\r\n const updated = [];\r\n const destroyed = [];\r\n function storeWith(status) {\r\n switch (status) {\r\n case RecordStatus.add:\r\n return created;\r\n case RecordStatus.delete:\r\n return destroyed;\r\n default:\r\n return updated;\r\n }\r\n }\r\n records.forEach(record => (noCascade && record.status === RecordStatus.sync) ||\r\n generateJSONData(storeWith(record.status), record, isSelect, noCascade));\r\n return [created, updated, destroyed];\r\n}\r\nfunction defaultAxiosConfigAdapter(config) {\r\n return config;\r\n}\r\nfunction generateConfig(config, dataSet, data, params, options) {\r\n if (isString(config)) {\r\n return {\r\n url: config,\r\n };\r\n }\r\n if (typeof config === 'function') {\r\n return config({ ...options, data, dataSet, params });\r\n }\r\n return config;\r\n}\r\nexport function axiosConfigAdapter(type, dataSet, data, params, options) {\r\n const newConfig = {\r\n data,\r\n params,\r\n method: 'post',\r\n };\r\n const { [type]: globalConfig, adapter: globalAdapter = defaultAxiosConfigAdapter } = getConfig('transport') || {};\r\n const { [type]: config, adapter } = dataSet.transport;\r\n if (globalConfig) {\r\n Object.assign(newConfig, generateConfig(globalConfig, dataSet, data, params, options));\r\n }\r\n if (config) {\r\n Object.assign(newConfig, generateConfig(config, dataSet, data, params, options));\r\n }\r\n if (newConfig.data && newConfig.method && newConfig.method.toLowerCase() === 'get') {\r\n newConfig.params = {\r\n ...newConfig.params,\r\n ...newConfig.data,\r\n };\r\n }\r\n return (adapter || globalAdapter)(newConfig, type) || newConfig;\r\n}\r\nexport function prepareForSubmit(type, data, configs, dataSet) {\r\n if (data.length) {\r\n const newConfig = axiosConfigAdapter(type, dataSet, data);\r\n if (newConfig.url) {\r\n configs.push(newConfig);\r\n }\r\n else {\r\n return data;\r\n }\r\n }\r\n return [];\r\n}\r\nexport function generateResponseData(item, dataKey) {\r\n if (item) {\r\n if (isArray(item)) {\r\n return item;\r\n }\r\n if (isObject(item)) {\r\n if (dataKey) {\r\n const result = ObjectChainValue.get(item, dataKey);\r\n if (result === undefined) {\r\n return [item];\r\n }\r\n if (isArray(result)) {\r\n return result;\r\n }\r\n if (isObject(result)) {\r\n return [result];\r\n }\r\n }\r\n else {\r\n return [item];\r\n }\r\n }\r\n }\r\n return [];\r\n}\r\nexport function getRecordValue(data, cb, fieldName) {\r\n if (fieldName) {\r\n const field = this.getField(fieldName);\r\n if (field) {\r\n const bind = field.get('bind');\r\n if (bind) {\r\n fieldName = bind;\r\n }\r\n }\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { checkField } = dataSet.props;\r\n if (checkField && checkField === fieldName) {\r\n const trueValue = field ? field.get(BooleanValue.trueValue) : true;\r\n const falseValue = field ? field.get(BooleanValue.falseValue) : false;\r\n const { children } = this;\r\n if (children) {\r\n return children.every(child => cb(child, checkField) === trueValue)\r\n ? trueValue\r\n : falseValue;\r\n }\r\n }\r\n }\r\n return ObjectChainValue.get(data, fieldName);\r\n }\r\n}\r\nfunction tlsBind(props, name, lang, tlsKey) {\r\n const tls = props.record.get(tlsKey) || {};\r\n if (name in tls) {\r\n return `${tlsKey}.${name}.${lang}`;\r\n }\r\n}\r\nexport function processIntlField(name, fieldProps, callback, dataSet) {\r\n const tlsKey = getConfig('tlsKey');\r\n const { supports } = localeContext;\r\n const languages = Object.keys(supports);\r\n const { type, dynamicProps } = fieldProps;\r\n if (type === FieldType.intl) {\r\n languages.forEach(language => callback(`${tlsKey}.${name}.${language}`, {\r\n type: FieldType.string,\r\n label: `${supports[language]}`,\r\n }));\r\n const { lang = localeContext.locale.lang } = dataSet || {};\r\n const newDynamicProps = typeof dynamicProps === 'function'\r\n ? props => {\r\n return {\r\n ...dynamicProps(props),\r\n bind: tlsBind(props, name, lang, tlsKey),\r\n };\r\n }\r\n : {\r\n ...dynamicProps,\r\n bind: props => {\r\n return tlsBind(props, name, lang, tlsKey);\r\n },\r\n };\r\n return callback(name, {\r\n ...fieldProps,\r\n dynamicProps: newDynamicProps,\r\n });\r\n }\r\n return callback(name, fieldProps);\r\n}\r\nexport function findBindFieldBy(myField, fields, prop) {\r\n const value = myField.get(prop);\r\n const myName = myField.name;\r\n return [...fields.values()].find(field => {\r\n const bind = field.get('bind');\r\n return bind && bind === `${myName}.${value}`;\r\n });\r\n}\r\nexport function processFieldValue(value, field, lang, showValueIfNotFound) {\r\n const { type } = field;\r\n if (type === FieldType.number) {\r\n return formatNumber(value, lang);\r\n }\r\n if (type === FieldType.currency) {\r\n return formatCurrency(value, lang, {\r\n currency: field.get('currency'),\r\n });\r\n }\r\n return field.getText(value, showValueIfNotFound);\r\n}\r\nexport function getLimit(limit, record) {\r\n if (isString(limit) && record.getField(limit)) {\r\n return record.get(limit);\r\n }\r\n return limit;\r\n}\r\n","import { FieldType } from '../data-set/enum';\r\nimport normalizeLanguage from '../_util/normalizeLanguage';\r\nimport { getNumberFormatOptions, toLocaleStringPolyfill, toLocaleStringSupportsLocales, } from './utils';\r\nexport default function formatNumber(value, lang, options) {\r\n const v = parseFloat(value);\r\n if (!isNaN(v)) {\r\n if (toLocaleStringSupportsLocales()) {\r\n return v.toLocaleString(normalizeLanguage(lang), {\r\n ...getNumberFormatOptions(FieldType.number, options),\r\n ...options,\r\n });\r\n }\r\n return toLocaleStringPolyfill(v, FieldType.number, options);\r\n }\r\n return value;\r\n}\r\n","import { getNumberFormatOptions, toLocaleStringPolyfill, toLocaleStringSupportsLocales, } from './utils';\r\nimport normalizeLanguage from '../_util/normalizeLanguage';\r\nimport { FieldType } from '../data-set/enum';\r\nexport default function formatCurrency(value, lang, options) {\r\n const v = parseFloat(value);\r\n if (!isNaN(v)) {\r\n if (toLocaleStringSupportsLocales()) {\r\n return v.toLocaleString(normalizeLanguage(lang), {\r\n ...getNumberFormatOptions(FieldType.currency, options),\r\n ...options,\r\n });\r\n }\r\n return toLocaleStringPolyfill(v, FieldType.currency, options);\r\n }\r\n return value;\r\n}\r\n","import isString from 'lodash/isString';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport isEmpty from '../../_util/isEmpty';\r\nimport { axiosConfigAdapter } from '../../data-set/utils';\r\nexport default async function uniqueError(value, props) {\r\n const { dataSet, record, unique, name, multiple, range, defaultValidationMessages } = props;\r\n if (!isEmpty(value) && dataSet && record && unique && name && !multiple && !range) {\r\n const myField = record.getField(name);\r\n if (myField) {\r\n let { dirty } = myField;\r\n const fields = { [name]: value };\r\n if (isString(unique) &&\r\n [...record.fields.entries()].some(([fieldName, field]) => {\r\n if (fieldName !== name &&\r\n field &&\r\n field.get('unique') === unique &&\r\n !field.get('multiple') &&\r\n !field.get('range')) {\r\n const otherValue = record.get(fieldName);\r\n if (isEmpty(otherValue)) {\r\n return true;\r\n }\r\n if (!dirty && field.dirty) {\r\n dirty = true;\r\n }\r\n fields[fieldName] = otherValue;\r\n }\r\n return false;\r\n })) {\r\n return true;\r\n }\r\n if (!dirty) {\r\n return true;\r\n }\r\n let invalid = dataSet.data.some(item => item !== record && Object.keys(fields).every(field => fields[field] === item.get(field)));\r\n if (!invalid) {\r\n const newConfig = axiosConfigAdapter('validate', dataSet, { unique: [fields] });\r\n if (newConfig.url) {\r\n const results = await dataSet.axios(newConfig);\r\n invalid = [].concat(results).some(result => !result);\r\n }\r\n }\r\n if (invalid) {\r\n const ruleName = 'uniqueError';\r\n const { [ruleName]: validationMessage = $l('Validator', 'unique'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n","import badInput from './badInput';\r\nimport patternMismatch from './patternMismatch';\r\nimport rangeOverflow from './rangeOverflow';\r\nimport rangeUnderflow from './rangeUnderflow';\r\nimport stepMismatch from './stepMismatch';\r\nimport tooLong from './tooLong';\r\nimport tooShort from './tooShort';\r\nimport typeMismatch from './typeMismatch';\r\nimport customError from './customError';\r\nimport uniqueError from './uniqueError';\r\nconst validationRules = [\r\n badInput,\r\n patternMismatch,\r\n rangeOverflow,\r\n rangeUnderflow,\r\n stepMismatch,\r\n tooLong,\r\n tooShort,\r\n typeMismatch,\r\n customError,\r\n uniqueError,\r\n];\r\nexport default validationRules;\r\n","import isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport { FieldType } from '../../data-set/enum';\r\nexport default function badInput(value, props) {\r\n const { type, defaultValidationMessages } = props;\r\n if (!isEmpty(value) && type === FieldType.number && isNaN(value)) {\r\n const ruleName = 'badInput';\r\n const { [ruleName]: validationMessage = $l('Validator', 'bad_input'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n return true;\r\n}\r\n","import isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nfunction generatePattern(pattern) {\r\n if (pattern instanceof RegExp) {\r\n return pattern;\r\n }\r\n const begin = pattern.startsWith('^') ? '' : '^';\r\n const end = pattern.endsWith('$') ? '' : '$';\r\n return new RegExp(`${begin}${pattern}${end}`);\r\n}\r\nexport default function patternMismatch(value, props) {\r\n const { pattern, defaultValidationMessages } = props;\r\n if (!isEmpty(value) && !!pattern && !generatePattern(pattern).test(value)) {\r\n const ruleName = 'patternMismatch';\r\n const { [ruleName]: validationMessage = $l('Validator', 'pattern_mismatch'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n return true;\r\n}\r\n","import { isMoment } from 'moment';\r\nimport isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport formatReactTemplate from '../../formatter/formatReactTemplate';\r\nexport default function rangeOverflow(value, props) {\r\n const { max, label, format, defaultValidationMessages } = props;\r\n if (!isEmpty(value) && max !== undefined && Number(value) > Number(max)) {\r\n const injectionOptions = { max: isMoment(max) ? max.format(format) : max, label };\r\n const ruleName = 'rangeOverflow';\r\n const { [ruleName]: validationMessage = $l('Validator', 'range_overflow'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage: formatReactTemplate(validationMessage, injectionOptions),\r\n injectionOptions,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n return true;\r\n}\r\n","import { isMoment } from 'moment';\r\nimport isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport formatReactTemplate from '../../formatter/formatReactTemplate';\r\nexport default function rangeUnderflow(value, props) {\r\n const { min, label, format, defaultValidationMessages } = props;\r\n if (!isEmpty(value) && min !== undefined && Number(value) < Number(min)) {\r\n const injectionOptions = { min: isMoment(min) ? min.format(format) : min, label };\r\n const ruleName = 'rangeUnderflow';\r\n const { [ruleName]: validationMessage = $l('Validator', 'range_underflow'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage: formatReactTemplate(validationMessage, injectionOptions),\r\n injectionOptions,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n return true;\r\n}\r\n","import isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport { getNearStepValues } from '../../number-field/utils';\r\nimport formatReactTemplate from '../../formatter/formatReactTemplate';\r\nexport default function stepMismatch(value, props) {\r\n const { step, min, max, defaultValidationMessages } = props;\r\n if (!isEmpty(value) && step !== undefined) {\r\n const nearStepValues = getNearStepValues(Number(value), step, min, max);\r\n if (nearStepValues !== undefined) {\r\n const injectionOptions = {\r\n 0: nearStepValues[0],\r\n 1: nearStepValues[1],\r\n };\r\n const ruleName = nearStepValues.length === 2 ? 'stepMismatchBetween' : 'stepMismatch';\r\n const key = nearStepValues.length === 2 ? 'step_mismatch_between' : 'step_mismatch';\r\n const { [ruleName]: validationMessage = $l('Validator', key) } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage: formatReactTemplate(validationMessage, injectionOptions),\r\n injectionOptions,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n }\r\n return true;\r\n}\r\n","import isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport formatReactTemplate from '../../formatter/formatReactTemplate';\r\nexport default function tooLong(value, props) {\r\n const { maxLength, defaultValidationMessages } = props;\r\n if (!isEmpty(value)) {\r\n const { length } = value.toString();\r\n if (!!maxLength && maxLength > 0 && length > maxLength) {\r\n const injectionOptions = { maxLength, length };\r\n const ruleName = 'tooLong';\r\n const { [ruleName]: validationMessage = $l('Validator', 'too_long'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage: formatReactTemplate(validationMessage, injectionOptions),\r\n injectionOptions,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n }\r\n return true;\r\n}\r\n","import isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport formatReactTemplate from '../../formatter/formatReactTemplate';\r\nexport default function tooShort(value, props) {\r\n const { minLength, defaultValidationMessages } = props;\r\n if (!isEmpty(value)) {\r\n const { length } = value.toString();\r\n if (!!minLength && minLength > 0 && length < minLength) {\r\n const injectionOptions = { minLength, length };\r\n const ruleName = 'tooShort';\r\n const { [ruleName]: validationMessage = $l('Validator', 'too_short'), } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage: formatReactTemplate(validationMessage, injectionOptions),\r\n injectionOptions,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n }\r\n return true;\r\n}\r\n","import { isArrayLike } from 'mobx';\r\nimport isEmpty from '../../_util/isEmpty';\r\nimport ValidationResult from '../ValidationResult';\r\nimport { $l } from '../../locale-context';\r\nimport formatReactTemplate from '../../formatter/formatReactTemplate';\r\nfunction isEmptyArray(value) {\r\n return isEmpty(value) || (isArrayLike(value) && value.length === 0);\r\n}\r\nexport default function valueMissing(value, props) {\r\n const { required, label, multiple, range, defaultValidationMessages } = props;\r\n if (required &&\r\n (isEmptyArray(value) || (multiple && range && value.every(item => isEmptyArray(item))))) {\r\n const injectionOptions = { label };\r\n const key = label ? 'value_missing' : 'value_missing_no_label';\r\n const ruleName = label ? 'valueMissing' : 'valueMissingNoLabel';\r\n const { [ruleName]: validationMessage = $l('Validator', key) } = defaultValidationMessages;\r\n return new ValidationResult({\r\n validationMessage: formatReactTemplate(validationMessage, injectionOptions),\r\n injectionOptions,\r\n value,\r\n ruleName,\r\n });\r\n }\r\n return true;\r\n}\r\n","import { isValidElement } from 'react';\r\nimport { render, unmountComponentAtNode } from 'react-dom';\r\nimport isString from 'lodash/isString';\r\nimport isNumber from 'lodash/isNumber';\r\nimport toString from 'lodash/toString';\r\nexport default async function getReactNodeText(node) {\r\n if (node) {\r\n if (isString(node) || isNumber(node)) {\r\n return String(node);\r\n }\r\n if (typeof window !== 'undefined' && isValidElement(node)) {\r\n const textDiv = document.createElement('div');\r\n document.body.appendChild(textDiv);\r\n await new Promise(resolve => render(node, textDiv, resolve));\r\n const { textContent } = textDiv;\r\n unmountComponentAtNode(textDiv);\r\n if (textDiv.parentNode) {\r\n textDiv.parentNode.removeChild(textDiv);\r\n }\r\n return textContent || '';\r\n }\r\n return toString(node);\r\n }\r\n return '';\r\n}\r\n","export var LovFieldType;\r\n(function (LovFieldType) {\r\n LovFieldType[\"INT\"] = \"INT\";\r\n LovFieldType[\"TEXT\"] = \"TEXT\";\r\n LovFieldType[\"DATE\"] = \"DATE\";\r\n LovFieldType[\"DATETIME\"] = \"DATETIME\";\r\n LovFieldType[\"POPUP\"] = \"POPUP\";\r\n LovFieldType[\"SELECT\"] = \"SELECT\";\r\n})(LovFieldType || (LovFieldType = {}));\r\nexport var ViewMode;\r\n(function (ViewMode) {\r\n ViewMode[\"default\"] = \"default\";\r\n ViewMode[\"button\"] = \"button\";\r\n})(ViewMode || (ViewMode = {}));\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { action, computed, isArrayLike, observable, runInAction } from 'mobx';\r\nimport isString from 'lodash/isString';\r\nimport omitBy from 'lodash/omitBy';\r\nimport isUndefined from 'lodash/isUndefined';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport Validity from './Validity';\r\nimport ValidationResult from './ValidationResult';\r\nimport validationRules from './rules';\r\nimport valueMissing from './rules/valueMissing';\r\nimport getReactNodeText from '../_util/getReactNodeText';\r\nexport default class Validator {\r\n constructor(field, control) {\r\n runInAction(() => {\r\n this.field = field;\r\n this.control = control;\r\n this.innerValidationResults = [];\r\n });\r\n }\r\n get props() {\r\n const { control, field } = this;\r\n const controlProps = control && omitBy(control.getValidatorProps(), isUndefined);\r\n const fieldProps = field && field.getValidatorProps();\r\n return {\r\n ...fieldProps,\r\n ...controlProps,\r\n defaultValidationMessages: {\r\n ...(controlProps && controlProps.defaultValidationMessages),\r\n ...getConfig('defaultValidationMessages'),\r\n ...(fieldProps && fieldProps.defaultValidationMessages),\r\n },\r\n };\r\n }\r\n get uniqueRefFields() {\r\n const { name, unique, record } = this.props;\r\n if (record && isString(unique)) {\r\n return [...record.fields.values()].filter(field => field.name !== name &&\r\n field.get('unique') === unique &&\r\n !field.get('multiple') &&\r\n !field.get('range'));\r\n }\r\n return [];\r\n }\r\n // @computed\r\n // private get bindingFieldWithValidationResult(): Field | undefined {\r\n // const { name, record, type } = this.props;\r\n // if (record && name && type === FieldType.object) {\r\n // return findBindField(name, record.fields, field => !field.isValid());\r\n // }\r\n // return undefined;\r\n // }\r\n get uniqueRefValidationResult() {\r\n const { uniqueRefFields } = this;\r\n let validationResult;\r\n if (uniqueRefFields.length &&\r\n this.innerValidationResults.every(result => result.ruleName !== 'uniqueError')) {\r\n uniqueRefFields.some(uniqueRefField => {\r\n validationResult = uniqueRefField.validator.innerValidationResults.find(result => result.ruleName === 'uniqueError');\r\n return !!validationResult;\r\n });\r\n }\r\n return validationResult;\r\n }\r\n get validationResults() {\r\n const { uniqueRefValidationResult } = this;\r\n if (uniqueRefValidationResult) {\r\n return [uniqueRefValidationResult];\r\n }\r\n const { innerValidationResults } = this;\r\n if (innerValidationResults.length) {\r\n return innerValidationResults;\r\n }\r\n // const { bindingFieldWithValidationResult } = this;\r\n // if (bindingFieldWithValidationResult) {\r\n // return bindingFieldWithValidationResult.getValidationErrorValues();\r\n // }\r\n return [];\r\n }\r\n get currentValidationResult() {\r\n const { validationResults } = this;\r\n return validationResults.length ? validationResults[0] : undefined;\r\n }\r\n get validity() {\r\n const { currentValidationResult } = this;\r\n return new Validity(currentValidationResult ? { [currentValidationResult.ruleName]: true } : undefined);\r\n }\r\n get injectionOptions() {\r\n const { currentValidationResult } = this;\r\n return (currentValidationResult && currentValidationResult.injectionOptions) || {};\r\n }\r\n get validationMessage() {\r\n const { currentValidationResult } = this;\r\n return currentValidationResult && currentValidationResult.validationMessage;\r\n }\r\n reset() {\r\n this.clearErrors();\r\n const { uniqueRefFields } = this;\r\n if (uniqueRefFields.length) {\r\n uniqueRefFields.forEach(uniqueRefField => uniqueRefField.validator.clearErrors());\r\n }\r\n }\r\n async report(ret) {\r\n const { name, dataSet, record } = this.props;\r\n if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\r\n const { validationMessage, value } = ret;\r\n const reportMessage = [\r\n 'validation:',\r\n isString(validationMessage)\r\n ? validationMessage\r\n : await getReactNodeText(<span>{validationMessage}</span>),\r\n ];\r\n if (dataSet) {\r\n const { name: dsName, id } = dataSet;\r\n if (dsName || id) {\r\n reportMessage.push(`\n[dataSet<${dsName || id}>]:`, dataSet);\r\n }\r\n else {\r\n reportMessage.push('\\n[dataSet]:', dataSet);\r\n }\r\n }\r\n if (record) {\r\n if (dataSet) {\r\n reportMessage.push(`\n[record<${dataSet.indexOf(record)}>]:`, record);\r\n }\r\n else {\r\n reportMessage.push(`\\n[record]:`, record);\r\n }\r\n reportMessage.push(`\n[field<${name}>]:`, record.getField(name));\r\n }\r\n else {\r\n reportMessage.push('[field]:', name);\r\n }\r\n reportMessage.push('\\n[value]:', value);\r\n console.warn(...reportMessage);\r\n }\r\n }\r\n clearErrors() {\r\n this.innerValidationResults = [];\r\n }\r\n addError(result) {\r\n this.innerValidationResults.push(result);\r\n this.report(result);\r\n }\r\n async execute(rules, value) {\r\n const { props } = this;\r\n const method = rules.shift();\r\n if (method) {\r\n const results = await Promise.all(value.map(item => method(item, props)));\r\n results.forEach(result => {\r\n if (result instanceof ValidationResult) {\r\n this.addError(result);\r\n const index = value.indexOf(result.value);\r\n if (index !== -1) {\r\n value.splice(index, 1);\r\n }\r\n }\r\n });\r\n if (value.length) {\r\n await this.execute(rules, value);\r\n }\r\n }\r\n }\r\n async checkValidity(value = null) {\r\n const valueMiss = valueMissing(value, this.props);\r\n this.clearErrors();\r\n if (valueMiss !== true) {\r\n this.addError(valueMiss);\r\n }\r\n else {\r\n const { multiple } = this.props;\r\n await this.execute(validationRules.slice(), multiple && isArrayLike(value) ? value.slice() : [value]);\r\n }\r\n return this.validity.valid;\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], Validator.prototype, \"field\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validator.prototype, \"control\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Validator.prototype, \"innerValidationResults\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"props\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"uniqueRefFields\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"uniqueRefValidationResult\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"validationResults\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"currentValidationResult\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"validity\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"injectionOptions\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Validator.prototype, \"validationMessage\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Validator.prototype, \"reset\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Validator.prototype, \"report\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Validator.prototype, \"clearErrors\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Validator.prototype, \"addError\", null);\r\n","import { toJS } from 'mobx';\r\nexport function getLovPara(field, record) {\r\n const lovPara = toJS(field.get('lovPara')) || {};\r\n const cascadeMap = field.get('cascadeMap');\r\n if (record && cascadeMap) {\r\n Object.keys(cascadeMap).forEach(cascade => (lovPara[cascade] = record.get(cascadeMap[cascade])));\r\n }\r\n return lovPara;\r\n}\r\nexport function processAxiosConfig(axiosConfig = {}, ...args) {\r\n if (typeof axiosConfig === 'function') {\r\n return axiosConfig(...args);\r\n }\r\n return axiosConfig;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport isNil from 'lodash/isNil';\r\nimport { action, observable, runInAction } from 'mobx';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport DataSet from '../data-set/DataSet';\r\nimport axios from '../axios';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { LovFieldType } from '../lov/enum';\r\nimport { processAxiosConfig } from './utils';\r\nfunction getFieldType(conditionFieldType) {\r\n switch (conditionFieldType) {\r\n case LovFieldType.INT:\r\n return FieldType.number;\r\n case LovFieldType.TEXT:\r\n return FieldType.string;\r\n case LovFieldType.DATE:\r\n return FieldType.date;\r\n case LovFieldType.DATETIME:\r\n return FieldType.dateTime;\r\n case LovFieldType.POPUP:\r\n return FieldType.object;\r\n default:\r\n return conditionFieldType || FieldType.string;\r\n }\r\n}\r\nfunction generateConditionField(fields, { conditionField, conditionFieldType, conditionFieldName, gridFieldName, display, conditionFieldLovCode, conditionFieldSelectCode, conditionFieldSelectUrl, conditionFieldSelectTf, conditionFieldSelectVf, conditionFieldRequired, }) {\r\n if (conditionField === 'Y') {\r\n const name = conditionFieldName || gridFieldName;\r\n const field = {\r\n name,\r\n type: getFieldType(conditionFieldType),\r\n label: display,\r\n lovCode: conditionFieldLovCode || undefined,\r\n lookupCode: conditionFieldSelectCode || undefined,\r\n lookupUrl: conditionFieldSelectUrl || undefined,\r\n textField: conditionFieldSelectTf || undefined,\r\n valueField: conditionFieldSelectVf || undefined,\r\n required: conditionFieldRequired || undefined,\r\n };\r\n fields.push(field);\r\n if (conditionFieldType === LovFieldType.POPUP) {\r\n const aliasName = `__lov__${name}`;\r\n field.name = aliasName;\r\n fields.push({\r\n name,\r\n bind: `${aliasName}.${conditionFieldSelectVf}`,\r\n });\r\n }\r\n }\r\n}\r\nfunction generateGridField(fields, { gridField, gridFieldName, display }, valueField) {\r\n if (gridField === 'Y') {\r\n fields.push({\r\n name: gridFieldName,\r\n label: display,\r\n unique: valueField === gridFieldName,\r\n });\r\n }\r\n}\r\nexport class LovCodeStore {\r\n constructor() {\r\n this.pendings = {};\r\n this.init();\r\n }\r\n get axios() {\r\n return getConfig('axios') || axios;\r\n }\r\n init() {\r\n this.lovCodes = observable.map();\r\n this.lovDS = observable.map();\r\n }\r\n getDefineAxiosConfig(code, field) {\r\n const lovDefineAxiosConfig = (field && field.get('lovDefineAxiosConfig')) || getConfig('lovDefineAxiosConfig');\r\n const config = processAxiosConfig(lovDefineAxiosConfig, code);\r\n return {\r\n ...config,\r\n url: config.url || this.getConfigUrl(code, field),\r\n method: config.method || 'post',\r\n };\r\n }\r\n getConfig(code) {\r\n return this.lovCodes.get(code);\r\n }\r\n async fetchConfig(code, field) {\r\n let config = this.getConfig(code);\r\n // SSR do not fetch the lookup\r\n if (!config && typeof window !== 'undefined') {\r\n const axiosConfig = this.getDefineAxiosConfig(code, field);\r\n if (axiosConfig) {\r\n try {\r\n const pending = this.pendings[code] || this.axios(axiosConfig);\r\n this.pendings[code] = pending;\r\n config = await pending;\r\n runInAction(() => {\r\n if (config) {\r\n this.lovCodes.set(code, config);\r\n }\r\n });\r\n }\r\n finally {\r\n delete this.pendings[code];\r\n }\r\n }\r\n }\r\n return config;\r\n }\r\n getLovDataSet(code, field) {\r\n let ds = this.lovDS.get(code);\r\n if (!ds) {\r\n const config = this.getConfig(code);\r\n if (config) {\r\n const { lovPageSize, lovItems, parentIdField, idField, valueField, treeFlag } = config;\r\n const dataSetProps = {\r\n transport: {\r\n read: this.getQueryAxiosConfig(code, field, config),\r\n },\r\n primaryKey: valueField,\r\n cacheSelection: true,\r\n };\r\n if (!isNil(lovPageSize) && !isNaN(Number(lovPageSize))) {\r\n dataSetProps.pageSize = Number(lovPageSize);\r\n }\r\n else {\r\n dataSetProps.paging = false;\r\n }\r\n if (treeFlag === 'Y' && parentIdField && idField) {\r\n dataSetProps.parentField = parentIdField;\r\n dataSetProps.idField = idField;\r\n }\r\n if (lovItems && lovItems.length) {\r\n const { querys, fields } = lovItems\r\n .sort(({ conditionFieldSequence }, { conditionFieldSequence: conditionFieldSequence2 }) => conditionFieldSequence - conditionFieldSequence2)\r\n .reduce((obj, configItem) => {\r\n generateConditionField(obj.querys, configItem);\r\n generateGridField(obj.fields, configItem, valueField);\r\n return obj;\r\n }, { querys: [], fields: [] });\r\n if (querys.length) {\r\n dataSetProps.queryFields = querys;\r\n }\r\n if (fields.length) {\r\n dataSetProps.fields = fields;\r\n }\r\n }\r\n runInAction(() => {\r\n this.lovDS.set(code, (ds = new DataSet(dataSetProps)));\r\n });\r\n }\r\n else {\r\n warning(false, `LOV: code<${code}> is not exists`);\r\n }\r\n }\r\n return ds;\r\n }\r\n getConfigUrl(code, field) {\r\n const lovDefineUrl = (field && field.get('lovDefineUrl')) || getConfig('lovDefineUrl');\r\n if (typeof lovDefineUrl === 'function') {\r\n return lovDefineUrl(code);\r\n }\r\n return lovDefineUrl;\r\n }\r\n getQueryAxiosConfig(code, field, config) {\r\n return (props) => {\r\n const lovQueryAxiosConfig = (field && field.get('lovQueryAxiosConfig')) || getConfig('lovQueryAxiosConfig');\r\n const axiosConfig = processAxiosConfig(lovQueryAxiosConfig, code, config, props);\r\n return {\r\n ...axiosConfig,\r\n url: axiosConfig.url || this.getQueryUrl(code, field, props),\r\n method: axiosConfig.method || 'post',\r\n };\r\n };\r\n }\r\n getQueryUrl(code, field, props) {\r\n const config = this.getConfig(code);\r\n if (config) {\r\n const { customUrl } = config;\r\n if (customUrl) {\r\n return customUrl;\r\n }\r\n }\r\n const lovQueryUrl = (field && field.get('lovQueryUrl')) || getConfig('lovQueryUrl');\r\n if (typeof lovQueryUrl === 'function') {\r\n return lovQueryUrl(code, config, props);\r\n }\r\n return lovQueryUrl;\r\n }\r\n clearCache(codes) {\r\n if (codes) {\r\n codes.forEach(code => {\r\n this.lovCodes.delete(code);\r\n this.lovDS.delete(code);\r\n });\r\n }\r\n else {\r\n this.lovCodes.clear();\r\n this.lovDS.clear();\r\n }\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], LovCodeStore.prototype, \"lovCodes\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], LovCodeStore.prototype, \"lovDS\", void 0);\r\ntslib_1.__decorate([\r\n action\r\n], LovCodeStore.prototype, \"init\", null);\r\ntslib_1.__decorate([\r\n action\r\n], LovCodeStore.prototype, \"clearCache\", null);\r\nexport default new LovCodeStore();\r\n","import * as tslib_1 from \"tslib\";\r\nimport { action } from 'mobx';\r\nimport isString from 'lodash/isString';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport axios from '../axios';\r\nimport lovCodeStore from './LovCodeStore';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { generateResponseData } from '../data-set/utils';\r\nimport { getLovPara, processAxiosConfig } from './utils';\r\nimport cacheAdapterEnhancer from '../axios/cacheAdapterEnhancer';\r\nimport throttleAdapterEnhancer from '../axios/throttleAdapterEnhancer';\r\nconst adapter = throttleAdapterEnhancer(cacheAdapterEnhancer(axios.defaults.adapter));\r\nexport class LookupCodeStore {\r\n get axios() {\r\n return getConfig('axios') || axios;\r\n }\r\n async fetchLookupData(key, axiosConfig = {}) {\r\n let config = {};\r\n if (isString(key)) {\r\n config = {\r\n ...axiosConfig,\r\n url: key,\r\n method: axiosConfig.method || getConfig('lookupAxiosMethod') || 'post',\r\n };\r\n }\r\n else {\r\n config = key;\r\n }\r\n if (config.url) {\r\n let data;\r\n // SSR do not fetch the lookup\r\n if (typeof window !== 'undefined') {\r\n const result = await this.axios(config);\r\n if (result) {\r\n data = generateResponseData(result, getConfig('dataKey'));\r\n }\r\n }\r\n return data;\r\n }\r\n }\r\n getAxiosConfig(field) {\r\n const lookupAxiosConfig = field.get('lookupAxiosConfig') || getConfig('lookupAxiosConfig');\r\n const { record } = field;\r\n const params = getLovPara(field, record);\r\n const config = processAxiosConfig(lookupAxiosConfig, {\r\n dataSet: field.dataSet,\r\n record,\r\n params,\r\n lookupCode: field.get('lookupCode'),\r\n });\r\n return {\r\n adapter,\r\n ...config,\r\n url: config.url || this.getUrl(field),\r\n method: config.method || getConfig('lookupAxiosMethod') || 'post',\r\n params: config.params || params,\r\n };\r\n }\r\n getUrl(field) {\r\n const type = field.get('type');\r\n const lovCode = field.get('lovCode');\r\n const lookupUrl = field.get('lookupUrl');\r\n const lookupCode = field.get('lookupCode');\r\n if (typeof lookupUrl === 'function' && lookupCode) {\r\n return lookupUrl(lookupCode);\r\n }\r\n if (isString(lookupUrl)) {\r\n return lookupUrl;\r\n }\r\n if (lovCode && type !== FieldType.object) {\r\n return lovCodeStore.getQueryAxiosConfig(lovCode, field)({ dataSet: field.dataSet }).url;\r\n }\r\n }\r\n // @deprecate\r\n clearCache() { }\r\n}\r\ntslib_1.__decorate([\r\n action\r\n], LookupCodeStore.prototype, \"clearCache\", null);\r\nexport default new LookupCodeStore();\r\n","import isEqual from 'lodash/isEqual';\r\nimport isEmpty from './isEmpty';\r\nexport default function isSame(newValue, oldValue) {\r\n return (isEmpty(newValue) && isEmpty(oldValue)) || isEqual(newValue, oldValue);\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport { action, observable, runInAction } from 'mobx';\r\nexport default class PromiseQueue {\r\n constructor() {\r\n this.queueing = false;\r\n runInAction(() => {\r\n this.queue = [];\r\n });\r\n }\r\n get length() {\r\n return this.queue.length;\r\n }\r\n clear(promise) {\r\n if (!this.queueing) {\r\n const { queue } = this;\r\n const index = queue.indexOf(promise);\r\n if (index !== -1) {\r\n queue.splice(index, 1);\r\n }\r\n }\r\n }\r\n add(promise) {\r\n const { queue } = this;\r\n queue.push(promise);\r\n return promise\r\n .then(value => {\r\n this.clear(promise);\r\n return value;\r\n })\r\n .catch(error => {\r\n this.clear(promise);\r\n throw error;\r\n });\r\n }\r\n async ready() {\r\n this.queueing = true;\r\n const { queue } = this;\r\n if (queue.length) {\r\n await queue.pop();\r\n return this.ready();\r\n }\r\n this.queueing = false;\r\n return Promise.resolve();\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], PromiseQueue.prototype, \"queue\", void 0);\r\ntslib_1.__decorate([\r\n action\r\n], PromiseQueue.prototype, \"clear\", null);\r\ntslib_1.__decorate([\r\n action\r\n], PromiseQueue.prototype, \"add\", null);\r\ntslib_1.__decorate([\r\n action\r\n], PromiseQueue.prototype, \"ready\", null);\r\n","import isSame from './isSame';\r\nexport default function isSameLike(newValue, oldValue) {\r\n /* eslint-disable-next-line */\r\n return isSame(newValue, oldValue) || newValue == oldValue;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport { action, computed, get, observable, runInAction, set, toJS } from 'mobx';\r\nimport isEqual from 'lodash/isEqual';\r\nimport isObject from 'lodash/isObject';\r\nimport merge from 'lodash/merge';\r\nimport defer from 'lodash/defer';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport Validator from '../validator/Validator';\r\nimport { DataSetEvents, FieldTrim, FieldType } from './enum';\r\nimport lookupStore from '../stores/LookupCodeStore';\r\nimport lovCodeStore from '../stores/LovCodeStore';\r\nimport localeContext from '../locale-context';\r\nimport { findBindFields, getLimit, processValue } from './utils';\r\nimport isSame from '../_util/isSame';\r\nimport PromiseQueue from '../_util/PromiseQueue';\r\nimport isSameLike from '../_util/isSameLike';\r\nimport * as ObjectChainValue from '../_util/ObjectChainValue';\r\nimport { buildURLWithAxiosConfig } from '../axios/utils';\r\nimport { getDateFormatByField } from 'choerodon-ui/pro/lib/field/utils';\r\nexport default class Field {\r\n constructor(props = {}, dataSet, record) {\r\n this.validator = new Validator(this);\r\n this.pending = new PromiseQueue();\r\n this.lastDynamicProps = {};\r\n this.isDynamicPropsComputing = false;\r\n runInAction(() => {\r\n this.dataSet = dataSet;\r\n this.record = record;\r\n this.pristineProps = props;\r\n this.props = props;\r\n this.fetchLookup();\r\n this.fetchLovConfig();\r\n });\r\n }\r\n get lookup() {\r\n const lookup = this.get('lookup');\r\n if (lookup) {\r\n const lookupData = this.get('lookupData') || [];\r\n return lookup.concat(lookupData);\r\n }\r\n return undefined;\r\n }\r\n get intlFields() {\r\n const { record, type, name } = this;\r\n const tlsKey = getConfig('tlsKey');\r\n if (type === FieldType.intl && record && record.get(tlsKey)) {\r\n return Object.keys(localeContext.supports).reduce((arr, lang) => {\r\n const field = record.getField(`${tlsKey}.${name}.${lang}`);\r\n if (field) {\r\n arr.push(field);\r\n }\r\n return arr;\r\n }, []);\r\n }\r\n return [];\r\n }\r\n get dirty() {\r\n const { record, name, intlFields } = this;\r\n if (intlFields.length) {\r\n return intlFields.some(langField => langField.dirty);\r\n }\r\n if (record) {\r\n const pristineValue = toJS(record.getPristineValue(name));\r\n const value = toJS(record.get(name));\r\n if (isObject(pristineValue) && isObject(value)) {\r\n if (isEqual(pristineValue, value)) {\r\n return false;\r\n }\r\n try {\r\n const fields = findBindFields(this, record.fields, true);\r\n if (fields.length) {\r\n return fields.some(({ dirty }) => dirty);\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n return true;\r\n }\r\n }\r\n return !isSame(pristineValue, value);\r\n }\r\n return false;\r\n }\r\n get name() {\r\n return this.props.name;\r\n }\r\n get order() {\r\n return this.get('order');\r\n }\r\n set order(order) {\r\n this.set('order', order);\r\n }\r\n get valid() {\r\n const { intlFields, validator: { validity: { valid }, }, } = this;\r\n if (valid && intlFields.length) {\r\n return intlFields.every(field => field.valid);\r\n }\r\n return valid;\r\n }\r\n get validationMessage() {\r\n return this.validator.validationMessage;\r\n }\r\n /**\r\n * 获取所有属性\r\n * @return 属性对象\r\n */\r\n getProps() {\r\n const dsField = this.findDataSetField();\r\n return merge({ lookupUrl: getConfig('lookupUrl') }, Field.defaultProps, dsField && dsField.props, this.props);\r\n }\r\n /**\r\n * 根据属性名获取属性值\r\n * @param propsName 属性名\r\n * @return {any}\r\n */\r\n get(propsName) {\r\n if (propsName === 'textField' || propsName === 'valueField') {\r\n const lovCode = this.get('lovCode');\r\n if (lovCode) {\r\n const config = lovCodeStore.getConfig(lovCode);\r\n if (config && config[propsName]) {\r\n return config[propsName];\r\n }\r\n }\r\n }\r\n if (propsName !== 'dynamicProps') {\r\n const dynamicProps = this.get('dynamicProps');\r\n if (dynamicProps) {\r\n if (typeof dynamicProps === 'function') {\r\n warning(false, `\nThe dynamicProps hook will be deprecated. Please use dynamicProps map.\nFor e.g,\nBad case:\ndynamicProps({ record }) {\n return {\n bind: record.get('xx'),\n label: record.get('yy'),\n }\n}\nGood case:\ndynamicProps = {\n bind({ record }) {\n return record.get('xx')\n },\n label({ record }) {\n return record.get('yy'),\n }\n}`);\r\n const props = this.executeDynamicProps(dynamicProps);\r\n if (props && propsName in props) {\r\n const prop = props[propsName];\r\n this.checkDynamicProp(propsName, prop);\r\n return prop;\r\n }\r\n }\r\n else {\r\n const dynamicProp = dynamicProps[propsName];\r\n if (typeof dynamicProp === 'function') {\r\n const prop = this.executeDynamicProps(dynamicProp);\r\n if (prop !== undefined) {\r\n this.checkDynamicProp(propsName, prop);\r\n return prop;\r\n }\r\n }\r\n }\r\n this.checkDynamicProp(propsName, undefined);\r\n }\r\n }\r\n const value = get(this.props, propsName);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n const dsField = this.findDataSetField();\r\n if (dsField) {\r\n const dsValue = dsField.get(propsName);\r\n if (dsValue !== undefined) {\r\n return dsValue;\r\n }\r\n }\r\n if (propsName === 'lookupUrl') {\r\n return getConfig(propsName);\r\n }\r\n return Field.defaultProps[propsName];\r\n }\r\n /**\r\n * 设置属性值\r\n * @param propsName 属性名\r\n * @param value 属性值\r\n * @return {any}\r\n */\r\n set(propsName, value) {\r\n const oldValue = this.get(propsName);\r\n if (oldValue !== value) {\r\n set(this.props, propsName, value);\r\n const { record, dataSet, name } = this;\r\n if (record) {\r\n if (propsName === 'type') {\r\n record.set(name, processValue(record.get(name), this));\r\n }\r\n }\r\n if (dataSet) {\r\n dataSet.fireEvent(DataSetEvents.fieldChange, {\r\n dataSet,\r\n record,\r\n name,\r\n field: this,\r\n propsName,\r\n value,\r\n oldValue,\r\n });\r\n }\r\n this.handlePropChange(propsName, value, oldValue);\r\n }\r\n }\r\n /**\r\n * 根据lookup值获取lookup对象\r\n * @param value lookup值\r\n * @return {object}\r\n */\r\n getLookupData(value = this.getValue()) {\r\n const valueField = this.get('valueField');\r\n const data = {};\r\n if (this.lookup) {\r\n return this.lookup.find(obj => isSameLike(get(obj, valueField), value)) || data;\r\n }\r\n return data;\r\n }\r\n getValue() {\r\n const { dataSet, name } = this;\r\n const record = this.record || (dataSet && dataSet.current);\r\n if (record) {\r\n return record.get(name);\r\n }\r\n }\r\n /**\r\n * 根据lookup值获取lookup含义\r\n * @param value lookup值\r\n * @param boolean showValueIfNotFound\r\n * @return {string}\r\n */\r\n getText(value = this.getValue(), showValueIfNotFound) {\r\n const textField = this.get('textField');\r\n const valueField = this.get('valueField');\r\n const { lookup } = this;\r\n if (lookup) {\r\n const found = lookup.find(obj => isSameLike(get(obj, valueField), value));\r\n if (found) {\r\n return get(found, textField);\r\n }\r\n if (showValueIfNotFound) {\r\n return value;\r\n }\r\n return undefined;\r\n }\r\n const options = this.getOptions();\r\n if (options) {\r\n const found = options.find(record => record.get(valueField) === value);\r\n if (found) {\r\n return found.get(textField);\r\n }\r\n }\r\n if (textField && isObject(value)) {\r\n return get(value, textField);\r\n }\r\n return value;\r\n }\r\n setOptions(options) {\r\n this.set('options', options);\r\n }\r\n getOptions() {\r\n return this.get('options');\r\n }\r\n /**\r\n * 重置设置的属性\r\n */\r\n reset() {\r\n this.props = this.pristineProps;\r\n }\r\n commit() {\r\n this.validator.reset();\r\n }\r\n /**\r\n * 是否必选\r\n * @return true | false\r\n */\r\n get required() {\r\n return this.get('required');\r\n }\r\n /**\r\n * 设置是否必选\r\n * @param required 是否必选\r\n */\r\n set required(required) {\r\n this.set('required', required);\r\n }\r\n /**\r\n * 是否只读\r\n * @return true | false\r\n */\r\n get readOnly() {\r\n return this.get('readOnly');\r\n }\r\n /**\r\n * 设置是否只读\r\n * @param readOnly 是否只读\r\n */\r\n set readOnly(readOnly) {\r\n this.set('readOnly', readOnly);\r\n }\r\n /**\r\n * 获取字段类型\r\n * @return 获取字段类型\r\n */\r\n get type() {\r\n return this.get('type');\r\n }\r\n /**\r\n * 设置字段类型\r\n * @param type 字段类型\r\n */\r\n set type(type) {\r\n this.set('type', type);\r\n }\r\n /**\r\n * 设置Lov的查询参数\r\n * @param {String} name\r\n * @param {Object} value\r\n */\r\n setLovPara(name, value) {\r\n const p = toJS(this.get('lovPara')) || {};\r\n if (value === null) {\r\n delete p[name];\r\n }\r\n else {\r\n p[name] = value;\r\n }\r\n this.set('lovPara', p);\r\n }\r\n getValidatorProps() {\r\n const { record, dataSet, name, type, required } = this;\r\n if (record) {\r\n const customValidator = this.get('validator');\r\n const max = this.get('max');\r\n const min = this.get('min');\r\n const format = this.get('format') || getDateFormatByField(this, this.type);\r\n const pattern = this.get('pattern');\r\n const step = this.get('step');\r\n const minLength = this.get('minLength');\r\n const maxLength = this.get('maxLength');\r\n const label = this.get('label');\r\n const range = this.get('range');\r\n const multiple = this.get('multiple');\r\n const unique = this.get('unique');\r\n const defaultValidationMessages = this.get('defaultValidationMessages');\r\n return {\r\n type,\r\n required,\r\n record,\r\n dataSet,\r\n name,\r\n unique,\r\n customValidator,\r\n pattern,\r\n max: getLimit(max, record),\r\n min: getLimit(min, record),\r\n step,\r\n minLength,\r\n maxLength,\r\n label,\r\n range,\r\n multiple,\r\n format,\r\n defaultValidationMessages,\r\n };\r\n }\r\n }\r\n /**\r\n * 校验字段值\r\n * 只有通过record.getField()获取的field才能校验\r\n * @return true | false\r\n */\r\n async checkValidity() {\r\n let valid = true;\r\n const { record, validator, name } = this;\r\n if (record) {\r\n validator.reset();\r\n const value = record.get(name);\r\n valid = await validator.checkValidity(value);\r\n }\r\n return valid;\r\n }\r\n /**\r\n * 请求lookup值, 如有缓存值直接获得。\r\n * @return Promise<object[]>\r\n */\r\n async fetchLookup() {\r\n const axiosConfig = lookupStore.getAxiosConfig(this);\r\n const dsField = this.findDataSetField();\r\n if (dsField) {\r\n const dsConfig = lookupStore.getAxiosConfig(dsField);\r\n if (dsConfig.url &&\r\n buildURLWithAxiosConfig(dsConfig) === buildURLWithAxiosConfig(axiosConfig)) {\r\n this.set('lookup', undefined);\r\n return dsField.get('lookup');\r\n }\r\n }\r\n if (axiosConfig.url) {\r\n const result = await this.pending.add(lookupStore.fetchLookupData(axiosConfig));\r\n if (result) {\r\n runInAction(() => {\r\n const { lookup } = this;\r\n this.set('lookup', result);\r\n const value = this.getValue();\r\n const valueField = this.get('valueField');\r\n if (value && valueField && lookup) {\r\n this.set('lookupData', [].concat(value).reduce((lookupData, v) => {\r\n const found = lookup.find(item => isSameLike(item[valueField], v));\r\n if (found) {\r\n lookupData.push(found);\r\n }\r\n return lookupData;\r\n }, []));\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n }\r\n fetchLovConfig() {\r\n const lovCode = this.get('lovCode');\r\n if (lovCode) {\r\n this.pending.add(lovCodeStore.fetchConfig(lovCode, this));\r\n }\r\n }\r\n isValid() {\r\n return this.valid;\r\n }\r\n getValidationMessage() {\r\n return this.validator.validationMessage;\r\n }\r\n getValidityState() {\r\n return this.validator.validity;\r\n }\r\n getValidationErrorValues() {\r\n return this.validator.validationResults;\r\n }\r\n ready() {\r\n const options = this.getOptions();\r\n return Promise.all([this.pending.ready(), options && options.ready()]);\r\n }\r\n findDataSetField() {\r\n const { dataSet, name, record } = this;\r\n if (record && dataSet && name) {\r\n return dataSet.getField(name);\r\n }\r\n }\r\n checkDynamicProp(propsName, newProp) {\r\n // if (propsName in this.lastDynamicProps) {\r\n const oldProp = this.lastDynamicProps[propsName];\r\n if (oldProp !== newProp) {\r\n defer(action(() => {\r\n if (propsName in this.validator.props || propsName === 'validator') {\r\n this.validator.reset();\r\n // this.checkValidity();\r\n }\r\n this.handlePropChange(propsName, newProp, oldProp);\r\n }));\r\n }\r\n // }\r\n this.lastDynamicProps[propsName] = newProp;\r\n }\r\n handlePropChange(propsName, newProp, oldProp) {\r\n if (propsName === 'bind' && this.type !== FieldType.intl) {\r\n const { record } = this;\r\n if (record && !this.dirty) {\r\n if (newProp) {\r\n record.init(newProp, ObjectChainValue.get(record.data, oldProp || this.name));\r\n }\r\n if (oldProp) {\r\n record.init(oldProp, undefined);\r\n }\r\n }\r\n return;\r\n }\r\n if ([\r\n 'type',\r\n 'lookupUrl',\r\n 'lookupCode',\r\n 'lookupAxiosConfig',\r\n 'lovCode',\r\n 'lovQueryAxiosConfig',\r\n 'lovPara',\r\n 'cascadeMap',\r\n 'lovQueryUrl',\r\n ].includes(propsName)) {\r\n this.fetchLookup();\r\n }\r\n if (['lovCode', 'lovDefineAxiosConfig', 'lovDefineUrl'].includes(propsName)) {\r\n this.fetchLovConfig();\r\n }\r\n }\r\n executeDynamicProps(dynamicProps) {\r\n const { dataSet, name, record } = this;\r\n if (this.isDynamicPropsComputing) {\r\n warning(false, `Cycle dynamicProps execution of field<${name}>.`);\r\n }\r\n else if (dataSet && record) {\r\n this.isDynamicPropsComputing = true;\r\n const props = dynamicProps({ dataSet, record, name });\r\n this.isDynamicPropsComputing = false;\r\n return props;\r\n }\r\n }\r\n}\r\nField.defaultProps = {\r\n type: FieldType.auto,\r\n required: false,\r\n readOnly: false,\r\n group: false,\r\n textField: 'meaning',\r\n valueField: 'value',\r\n trueValue: true,\r\n falseValue: false,\r\n trim: FieldTrim.both,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], Field.prototype, \"props\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Field.prototype, \"lookup\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Field.prototype, \"intlFields\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Field.prototype, \"dirty\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Field.prototype, \"valid\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Field.prototype, \"validationMessage\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Field.prototype, \"set\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Field.prototype, \"reset\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Field.prototype, \"commit\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Field.prototype, \"setLovPara\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Field.prototype, \"checkValidity\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport { action, computed, isArrayLike, isObservableArray, observable, runInAction, set, toJS, } from 'mobx';\r\nimport isNil from 'lodash/isNil';\r\nimport isString from 'lodash/isString';\r\nimport isNumber from 'lodash/isNumber';\r\nimport isPlainObject from 'lodash/isPlainObject';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport DataSet from './DataSet';\r\nimport Field from './Field';\r\nimport { axiosConfigAdapter, checkFieldType, childrenInfoForDelete, findBindFields, generateResponseData, getRecordValue, processIntlField, processToJSON, processValue, } from './utils';\r\nimport * as ObjectChainValue from '../_util/ObjectChainValue';\r\nimport localeContext from '../locale-context';\r\nimport { BooleanValue, DataSetEvents, FieldIgnore, FieldType, RecordStatus } from './enum';\r\nimport isSame from '../_util/isSame';\r\n/**\r\n * 记录ID生成器\r\n */\r\nconst IDGen = (function* (start) {\r\n while (true) {\r\n yield ++start;\r\n }\r\n})(1000);\r\nexport default class Record {\r\n constructor(data = {}, dataSet) {\r\n this.dataSetSnapshot = {};\r\n this.cascadeRecordsMap = {};\r\n runInAction(() => {\r\n const initData = toJS(data);\r\n this.fields = observable.map();\r\n this.status = RecordStatus.add;\r\n this.selectable = true;\r\n this.isSelected = false;\r\n this.isCurrent = false;\r\n this.isCached = false;\r\n this.id = IDGen.next().value;\r\n this.data = initData;\r\n if (dataSet) {\r\n this.dataSet = dataSet;\r\n const { fields } = dataSet;\r\n if (fields) {\r\n this.initFields(fields);\r\n }\r\n }\r\n const d = this.processData(initData);\r\n this.pristineData = d;\r\n this.data = d;\r\n });\r\n }\r\n get key() {\r\n if (this.status !== RecordStatus.add) {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { primaryKey } = dataSet.props;\r\n if (primaryKey) {\r\n const key = this.get(primaryKey);\r\n if (isString(key) || isNumber(key)) {\r\n return key;\r\n }\r\n }\r\n }\r\n }\r\n return this.id;\r\n }\r\n get index() {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n return dataSet.indexOf(this);\r\n }\r\n return -1;\r\n }\r\n get isRemoved() {\r\n return this.status === RecordStatus.delete;\r\n }\r\n get isIndeterminate() {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { checkField } = dataSet.props;\r\n if (checkField) {\r\n const field = this.getField(checkField);\r\n const trueValue = field ? field.get(BooleanValue.trueValue) : true;\r\n const { children } = this;\r\n if (children) {\r\n let checkedLength = 0;\r\n return (children.some(record => {\r\n if (record.isIndeterminate) {\r\n return true;\r\n }\r\n if (record.get(checkField) === trueValue) {\r\n checkedLength += 1;\r\n }\r\n return false;\r\n }) ||\r\n (checkedLength > 0 && checkedLength !== children.length));\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n get isExpanded() {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { expandField } = dataSet.props;\r\n if (expandField) {\r\n const expanded = this.get(expandField);\r\n const field = this.getField(expandField);\r\n return expanded === (field ? field.get(BooleanValue.trueValue) : true);\r\n }\r\n }\r\n return false;\r\n }\r\n set isExpanded(expand) {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { expandField } = dataSet.props;\r\n if (expandField) {\r\n const field = this.getField(expandField);\r\n this.set(expandField, field\r\n ? expand\r\n ? field.get(BooleanValue.trueValue)\r\n : field.get(BooleanValue.falseValue)\r\n : expand);\r\n }\r\n }\r\n }\r\n get previousRecord() {\r\n const { parent, dataSet } = this;\r\n let children;\r\n if (parent) {\r\n children = parent.children;\r\n }\r\n else if (dataSet) {\r\n children = dataSet.treeData;\r\n }\r\n if (children) {\r\n return children[children.indexOf(this) - 1];\r\n }\r\n return undefined;\r\n }\r\n get nextRecord() {\r\n const { parent, dataSet } = this;\r\n let children;\r\n if (parent) {\r\n children = parent.children;\r\n }\r\n else if (dataSet) {\r\n children = dataSet.treeData;\r\n }\r\n if (children) {\r\n return children[children.indexOf(this) + 1];\r\n }\r\n return undefined;\r\n }\r\n get children() {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { parentField, idField } = dataSet.props;\r\n if (parentField && idField) {\r\n const children = dataSet.records.filter(record => {\r\n const childParentId = record.get(parentField);\r\n const id = this.get(idField);\r\n return !isNil(childParentId) && !isNil(id) && childParentId === id;\r\n });\r\n return children.length > 0 ? children : undefined;\r\n }\r\n }\r\n return undefined;\r\n }\r\n get parent() {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { parentField, idField } = dataSet.props;\r\n if (parentField && idField) {\r\n return dataSet.records.find(record => {\r\n const parentId = this.get(parentField);\r\n const id = record.get(idField);\r\n return !isNil(parentId) && !isNil(id) && parentId === id;\r\n });\r\n }\r\n }\r\n return undefined;\r\n }\r\n get level() {\r\n const { parent } = this;\r\n if (parent) {\r\n return parent.level + 1;\r\n }\r\n return 0;\r\n }\r\n get dirty() {\r\n const { fields, status } = this;\r\n return status === RecordStatus.update || [...fields.values()].some(({ dirty }) => dirty);\r\n }\r\n get cascadeParent() {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n const { parent } = dataSet;\r\n if (parent) {\r\n const { children } = parent;\r\n const name = Object.keys(children).find(key => children[key] === dataSet);\r\n if (name) {\r\n return parent.find(record => (record.getCascadeRecords(name) || []).indexOf(this) !== -1);\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n toData() {\r\n const json = this.normalizeData();\r\n this.normalizeCascadeData(json, true);\r\n return json;\r\n }\r\n toJSONData(noCascade, isCascadeSelect) {\r\n const { status } = this;\r\n let dirty = status !== RecordStatus.sync;\r\n const json = this.normalizeData(true);\r\n if (!noCascade && this.normalizeCascadeData(json, false, isCascadeSelect)) {\r\n dirty = true;\r\n }\r\n return {\r\n ...json,\r\n __id: this.id,\r\n [getConfig('statusKey')]: getConfig('status')[status === RecordStatus.sync ? RecordStatus.update : status],\r\n __dirty: dirty,\r\n };\r\n }\r\n validate(all, noCascade) {\r\n const { dataSetSnapshot, isCurrent, dataSet, status, fields } = this;\r\n return Promise.all([\r\n ...[...fields.values()].map(field => all || status !== RecordStatus.sync ? field.checkValidity() : true),\r\n ...(noCascade\r\n ? []\r\n : Object.keys(dataSetSnapshot).map(key => (isCurrent && dataSet\r\n ? dataSet.children[key]\r\n : new DataSet().restore(dataSetSnapshot[key])).validate(all))),\r\n ]).then(results => results.every(result => result));\r\n }\r\n getField(fieldName) {\r\n if (fieldName) {\r\n return this.fields.get(fieldName);\r\n }\r\n }\r\n getCascadeRecords(fieldName) {\r\n const { dataSet } = this;\r\n if (fieldName && dataSet) {\r\n const childDataSet = dataSet.children[fieldName];\r\n if (childDataSet) {\r\n if (dataSet.current === this) {\r\n return childDataSet.slice();\r\n }\r\n const snapshot = this.dataSetSnapshot[fieldName];\r\n if (snapshot) {\r\n return snapshot.records.slice();\r\n }\r\n const cascadeRecords = this.cascadeRecordsMap[fieldName];\r\n if (cascadeRecords) {\r\n return cascadeRecords;\r\n }\r\n const data = this.get(fieldName);\r\n if (isObservableArray(data)) {\r\n const records = dataSet.processData(data);\r\n this.cascadeRecordsMap[fieldName] = records;\r\n return records;\r\n }\r\n }\r\n }\r\n }\r\n get(fieldName) {\r\n return getRecordValue.call(this, this.data, (child, checkField) => child.get(checkField), fieldName);\r\n }\r\n set(item, value) {\r\n if (isString(item)) {\r\n let fieldName = item;\r\n const oldName = fieldName;\r\n const field = this.getField(fieldName) || this.addField(fieldName);\r\n checkFieldType(value, field);\r\n const bind = field.get('bind');\r\n if (bind) {\r\n fieldName = bind;\r\n }\r\n const oldValue = toJS(this.get(fieldName));\r\n const newValue = processValue(value, field);\r\n if (!isSame(newValue, oldValue)) {\r\n const { fields } = this;\r\n ObjectChainValue.set(this.data, fieldName, newValue, fields);\r\n const pristineValue = this.getPristineValue(fieldName);\r\n if (isSame(pristineValue, newValue)) {\r\n if (this.status === RecordStatus.update && [...fields.values()].every(f => !f.dirty)) {\r\n this.status = RecordStatus.sync;\r\n }\r\n }\r\n else if (this.status === RecordStatus.sync) {\r\n this.status = RecordStatus.update;\r\n }\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n dataSet.fireEvent(DataSetEvents.update, {\r\n dataSet,\r\n record: this,\r\n name: oldName,\r\n value: newValue,\r\n oldValue,\r\n });\r\n const { checkField } = dataSet.props;\r\n if (checkField && (checkField === fieldName || checkField === oldName)) {\r\n const { children } = this;\r\n if (children) {\r\n children.forEach(record => record.set(fieldName, value));\r\n }\r\n }\r\n }\r\n }\r\n findBindFields(field, this.fields).forEach(oneField => {\r\n // oneField.dirty = field.dirty,\r\n oneField.validator.reset();\r\n oneField.checkValidity();\r\n });\r\n }\r\n else if (isPlainObject(item)) {\r\n Object.keys(item).forEach(key => this.set(key, item[key]));\r\n }\r\n return this;\r\n }\r\n getPristineValue(fieldName) {\r\n return getRecordValue.call(this, this.pristineData, (child, checkField) => child.getPristineValue(checkField), fieldName);\r\n }\r\n init(item, value) {\r\n const { fields, pristineData, data } = this;\r\n if (isString(item)) {\r\n let fieldName = item;\r\n const field = this.getField(fieldName) || this.addField(fieldName);\r\n const bind = field.get('bind');\r\n if (bind) {\r\n fieldName = bind;\r\n }\r\n ObjectChainValue.set(pristineData, fieldName, value, fields);\r\n ObjectChainValue.set(data, fieldName, value, fields);\r\n field.commit();\r\n }\r\n else if (isPlainObject(item)) {\r\n Object.keys(item).forEach(key => this.init(key, item[key]));\r\n }\r\n return this;\r\n }\r\n clone() {\r\n const { dataSet } = this;\r\n const cloneData = this.toData();\r\n if (dataSet) {\r\n const { primaryKey } = dataSet.props;\r\n if (primaryKey) {\r\n delete cloneData[primaryKey];\r\n }\r\n return new Record(cloneData, dataSet);\r\n }\r\n return new Record(cloneData);\r\n }\r\n ready() {\r\n return Promise.all([...this.fields.values()].map(field => field.ready()));\r\n }\r\n async tls(name) {\r\n const tlsKey = getConfig('tlsKey');\r\n const { dataSet } = this;\r\n if (dataSet && name) {\r\n const tlsData = this.get(tlsKey) || {};\r\n if (!(name in tlsData)) {\r\n const { axios, lang } = dataSet;\r\n const { primaryKey } = dataSet.props;\r\n const newConfig = axiosConfigAdapter('tls', dataSet, {}, primaryKey && { key: this.get(primaryKey) }, { name, record: this });\r\n if (newConfig.url && this.status !== RecordStatus.add) {\r\n const result = await axios(newConfig);\r\n if (result) {\r\n const dataKey = getConfig('dataKey');\r\n this.commitTls(generateResponseData(result, dataKey)[0], name);\r\n }\r\n }\r\n else {\r\n this.commitTls([...this.fields.entries()].reduce((data, [key, field]) => {\r\n if (field.type === FieldType.intl) {\r\n data[key] = {\r\n [lang]: this.get(key),\r\n };\r\n }\r\n return data;\r\n }, {}), name);\r\n }\r\n }\r\n }\r\n }\r\n reset() {\r\n const { status, fields, dataSet, dirty } = this;\r\n [...fields.values()].forEach(field => field.commit());\r\n if (status === RecordStatus.update || status === RecordStatus.delete) {\r\n this.status = RecordStatus.sync;\r\n }\r\n if (status === RecordStatus.delete || dirty) {\r\n this.data = toJS(this.pristineData);\r\n this.memo = undefined;\r\n if (dataSet && !dataSet.resetInBatch) {\r\n dataSet.fireEvent(DataSetEvents.reset, { records: [this], dataSet });\r\n }\r\n }\r\n return this;\r\n }\r\n save() {\r\n this.memo = toJS(this.data);\r\n return this;\r\n }\r\n restore() {\r\n const { memo } = this;\r\n if (memo) {\r\n this.set(memo);\r\n this.memo = undefined;\r\n }\r\n return this;\r\n }\r\n clear() {\r\n return this.set([...this.fields.keys()].reduce((obj, key) => {\r\n obj[key] = null;\r\n return obj;\r\n }, {}));\r\n }\r\n commit(data, dataSet) {\r\n const { dataSetSnapshot, fields, status } = this;\r\n if (dataSet) {\r\n const { records } = dataSet;\r\n if (status === RecordStatus.delete) {\r\n const index = records.indexOf(this);\r\n if (index !== -1) {\r\n dataSet.totalCount -= 1;\r\n records.splice(index, 1);\r\n }\r\n return this;\r\n }\r\n if (status === RecordStatus.add) {\r\n const index = records.indexOf(this);\r\n if (index !== -1) {\r\n dataSet.totalCount += 1;\r\n }\r\n }\r\n if (data) {\r\n const newData = this.processData(data);\r\n this.pristineData = newData;\r\n Object.keys(newData).forEach(key => {\r\n const newValue = newData[key];\r\n if (this.get(key) !== newValue) {\r\n set(this.data, key, newData[key]);\r\n }\r\n });\r\n const snapShorts = Object.keys(dataSetSnapshot);\r\n if (snapShorts.length) {\r\n const isCurrent = dataSet.current === this;\r\n const ds = new DataSet();\r\n snapShorts.forEach(key => (dataSetSnapshot[key] = (isCurrent\r\n ? dataSet.children[key]\r\n : ds.restore(dataSetSnapshot[key]))\r\n .commitData(data[key] || [])\r\n .snapshot()));\r\n }\r\n }\r\n }\r\n [...fields.values()].forEach(field => field.commit());\r\n this.status = RecordStatus.sync;\r\n return this;\r\n }\r\n commitTls(data = {}, name) {\r\n const { dataSet } = this;\r\n const lang = dataSet ? dataSet.lang : localeContext.locale.lang;\r\n const tlsKey = getConfig('tlsKey');\r\n const values = {};\r\n if (!(name in data)) {\r\n data[name] = {};\r\n }\r\n Object.keys(data).forEach(key => {\r\n const value = data[key];\r\n const field = this.getField(key);\r\n if (field && field.dirty) {\r\n values[`${tlsKey}.${key}.${lang}`] = this.get(key);\r\n }\r\n this.init(`${tlsKey}.${key}`, value);\r\n });\r\n this.set(values);\r\n }\r\n initFields(fields) {\r\n [...fields.keys()].forEach(key => this.addField(key));\r\n }\r\n addField(name, fieldProps = {}) {\r\n const { dataSet } = this;\r\n return processIntlField(name, fieldProps, (langName, langProps) => {\r\n const field = new Field({ ...langProps, name: langName }, dataSet, this);\r\n this.fields.set(langName, field);\r\n return field;\r\n }, dataSet);\r\n }\r\n processData(data = {}) {\r\n const { fields } = this;\r\n [...fields.entries()].forEach(([fieldName, field]) => {\r\n let value = ObjectChainValue.get(data, fieldName);\r\n const bind = field.get('bind');\r\n const type = field.get('type');\r\n const transformResponse = field.get('transformResponse');\r\n if (bind) {\r\n fieldName = bind;\r\n const bindValue = ObjectChainValue.get(data, fieldName);\r\n if (isNil(value) && !isNil(bindValue)) {\r\n value = bindValue;\r\n }\r\n }\r\n if (value === undefined && type === FieldType.boolean) {\r\n value = false;\r\n }\r\n if (transformResponse) {\r\n value = transformResponse(value);\r\n }\r\n value = processValue(value, field);\r\n if (value === null) {\r\n value = undefined;\r\n }\r\n ObjectChainValue.set(data, fieldName, value, fields);\r\n });\r\n return data;\r\n }\r\n normalizeData(needIgnore) {\r\n const { fields } = this;\r\n const json = toJS(this.data);\r\n [...fields.keys()].forEach(key => {\r\n let value = ObjectChainValue.get(json, key);\r\n const field = this.getField(key);\r\n if (field) {\r\n const ignore = field.get('ignore');\r\n if (needIgnore &&\r\n (ignore === FieldIgnore.always || (ignore === FieldIgnore.clean && !field.dirty))) {\r\n delete json[key];\r\n return;\r\n }\r\n const bind = field.get('bind');\r\n const multiple = field.get('multiple');\r\n const type = field.get('type');\r\n const transformRequest = field.get('transformRequest');\r\n if (bind) {\r\n value = this.get(bind);\r\n }\r\n if (type === FieldType.object) {\r\n return;\r\n }\r\n if (isString(multiple) && isArrayLike(value)) {\r\n value = value.map(processToJSON).join(multiple);\r\n }\r\n if (transformRequest) {\r\n value = transformRequest(value);\r\n }\r\n }\r\n if (value !== undefined) {\r\n ObjectChainValue.set(json, key, processToJSON(value), fields);\r\n }\r\n else {\r\n ObjectChainValue.remove(json, key);\r\n }\r\n });\r\n return json;\r\n }\r\n normalizeCascadeData(json, all, isSelect) {\r\n const { dataSetSnapshot, dataSet, isCurrent, status, fields } = this;\r\n const isDelete = status === RecordStatus.delete;\r\n if (dataSet) {\r\n let dirty = false;\r\n const { children } = dataSet;\r\n if (isDelete) {\r\n childrenInfoForDelete(json, children);\r\n }\r\n else {\r\n const keys = Object.keys(children);\r\n if (keys) {\r\n keys.forEach(name => {\r\n const snapshot = dataSetSnapshot[name];\r\n const child = isCurrent ? children[name] : snapshot && new DataSet().restore(snapshot);\r\n if (child) {\r\n const jsonArray = all ? child.toData() : child.toJSONData(isSelect);\r\n if (jsonArray.length > 0) {\r\n dirty = true;\r\n }\r\n ObjectChainValue.set(json, name, jsonArray, fields);\r\n }\r\n });\r\n }\r\n }\r\n return dirty;\r\n }\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"fields\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"pristineData\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"data\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"status\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"selectable\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"isSelected\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"isCurrent\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"isCached\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Record.prototype, \"editing\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"key\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"index\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"isRemoved\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"isIndeterminate\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"isExpanded\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"previousRecord\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"nextRecord\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"children\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"parent\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"level\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"dirty\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Record.prototype, \"cascadeParent\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"set\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"init\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"tls\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"reset\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"save\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"restore\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"clear\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"commit\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"commitTls\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Record.prototype, \"addField\", null);\r\n","export default class DataSetSnapshot {\r\n constructor({ records, originalData, totalCount, currentPage, pageSize, cachedSelected, }) {\r\n this.records = records;\r\n this.originalData = originalData;\r\n this.totalCount = totalCount;\r\n this.currentPage = currentPage;\r\n this.pageSize = pageSize;\r\n this.cachedSelected = cachedSelected;\r\n }\r\n}\r\n","import EventManager, { preventDefault, stopEvent, stopPropagation } from 'choerodon-ui/lib/_util/EventManager';\r\nexport default EventManager;\r\nexport { preventDefault, stopPropagation, stopEvent, };\r\n","import isNumber from 'lodash/isNumber';\r\nimport isString from 'lodash/isString';\r\nexport function pxToRem(num) {\r\n if (num !== undefined && num !== null) {\r\n if (num === 0) {\r\n return '0';\r\n }\r\n if (isNumber(num)) {\r\n return `${num / 100}rem`;\r\n }\r\n return num;\r\n }\r\n}\r\nexport function toPx(num) {\r\n if (num !== undefined && num !== null) {\r\n if (isNumber(num)) {\r\n return num;\r\n }\r\n if (isString(num) && num !== 'auto' && !num.endsWith('%')) {\r\n return parseFloat(num) * (num.endsWith('rem') ? 100 : 1);\r\n }\r\n }\r\n}\r\n","import WeakMap from 'core-js/library/fn/weak-map';\r\nimport createDefaultSetter from './createDefaultSetter';\r\nlet mapStore;\r\nfunction bind(fn, context) {\r\n if (fn.bind) {\r\n return fn.bind(context);\r\n }\r\n return function __autobind__(...args) {\r\n return fn.apply(context, args);\r\n };\r\n}\r\nfunction getBoundSuper(obj, fn) {\r\n if (typeof WeakMap === 'undefined') {\r\n throw new Error(`Using @autobind on ${fn.name}() requires WeakMap support due to its use of super.${fn.name}()\n See https://github.com/jayphelps/core-decorators.js/issues/20`);\r\n }\r\n if (!mapStore) {\r\n mapStore = new WeakMap();\r\n }\r\n if (mapStore.has(obj) === false) {\r\n mapStore.set(obj, new WeakMap());\r\n }\r\n const superStore = mapStore.get(obj);\r\n if (superStore.has(fn) === false) {\r\n superStore.set(fn, bind(fn, obj));\r\n }\r\n return superStore.get(fn);\r\n}\r\n/**\r\n * 绑定方法的this指向当前对象实例.\r\n *\r\n * @private\r\n * @param {Function} target 方法对象\r\n * @param {string} key 方法名.\r\n * @param {Object} descriptor 方法描述对象.\r\n * @returns {Object} 方法描述对象.\r\n */\r\nexport default function autobind(target, key, descriptor) {\r\n const { constructor } = target;\r\n const { value: fn, configurable, enumerable } = descriptor;\r\n return {\r\n configurable,\r\n enumerable,\r\n get() {\r\n // Class.prototype.key lookup\r\n // Someone accesses the property directly on the prototype on which it is\r\n // actually defined on, i.e. Class.prototype.hasOwnProperty(key)\r\n if (this === target) {\r\n return fn;\r\n }\r\n // Class.prototype.key lookup\r\n // Someone accesses the property directly on a prototype but it was found\r\n // up the chain, not defined directly on it\r\n // i.e. Class.prototype.hasOwnProperty(key) == false && key in Class.prototype\r\n if (this.constructor !== constructor &&\r\n Object.getPrototypeOf(this).constructor === constructor) {\r\n return fn;\r\n }\r\n // Autobound method calling super.sameMethod() which is also autobound and so on.\r\n if (this.constructor !== constructor && key in this.constructor.prototype) {\r\n return getBoundSuper(this, fn);\r\n }\r\n const boundFn = bind(fn, this);\r\n Object.defineProperty(this, key, {\r\n configurable: true,\r\n writable: true,\r\n // NOT enumerable when it's a bound method\r\n enumerable: false,\r\n value: boundFn,\r\n });\r\n return boundFn;\r\n },\r\n set: createDefaultSetter(key),\r\n };\r\n}\r\n","export default function createDefaultSetter(key) {\r\n return function set(newValue) {\r\n Object.defineProperty(this, key, {\r\n configurable: true,\r\n writable: true,\r\n // IS enumerable when reassigned by the outside word\r\n enumerable: true,\r\n value: newValue,\r\n });\r\n return newValue;\r\n };\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport { Component, } from 'react';\r\nimport { findDOMNode } from 'react-dom';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { action, observable, runInAction } from 'mobx';\r\nimport omit from 'lodash/omit';\r\nimport omitBy from 'lodash/omitBy';\r\nimport defer from 'lodash/defer';\r\nimport merge from 'lodash/merge';\r\nimport noop from 'lodash/noop';\r\nimport isUndefined from 'lodash/isUndefined';\r\nimport classes from 'component-classes';\r\nimport { getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport autobind from '../_util/autobind';\r\nimport { Size } from './enum';\r\nimport normalizeLanguage from '../_util/normalizeLanguage';\r\nimport localeContext from '../locale-context';\r\n/* eslint-disable react/no-unused-prop-types */\r\nexport default class ViewComponent extends Component {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.setObservableProps(props, context);\r\n }\r\n get prefixCls() {\r\n const { suffixCls, prefixCls } = this.props;\r\n return getProPrefixCls(suffixCls, prefixCls);\r\n }\r\n get lang() {\r\n const { lang } = this.props;\r\n if (lang) {\r\n return lang;\r\n }\r\n return localeContext.locale.lang;\r\n }\r\n getMergedClassNames(...props) {\r\n return classNames(this.getClassName(), this.getWrapperClassNames(), ...props);\r\n }\r\n getMergedProps(props = {}) {\r\n return {\r\n ...merge(this.getWrapperProps(props), this.getOtherProps()),\r\n className: this.getMergedClassNames(),\r\n };\r\n }\r\n getObservableProps(_props, _context) {\r\n return {};\r\n }\r\n setObservableProps(props, context) {\r\n this.observableProps = this.getObservableProps(props, context);\r\n }\r\n updateObservableProps(props, context) {\r\n Object.assign(this.observableProps, omitBy(this.getObservableProps(props, context), isUndefined), true);\r\n }\r\n getOtherProps() {\r\n const { tabIndex, lang, style = {} } = this.props;\r\n let otherProps = omit(this.props, [\r\n 'prefixCls',\r\n 'suffixCls',\r\n 'className',\r\n 'elementClassName',\r\n 'style',\r\n 'size',\r\n 'autoFocus',\r\n 'onFocus',\r\n 'onBlur',\r\n 'children',\r\n 'dataSet',\r\n ]);\r\n if (this.isDisabled()) {\r\n otherProps = omit(otherProps, [\r\n 'onClick',\r\n 'onMouseUp',\r\n 'onMouseDown',\r\n 'onMouseEnter',\r\n 'onMouseLeave',\r\n 'onMouseOver',\r\n 'onMouseOut',\r\n 'onKeyDown',\r\n 'onKeyUp',\r\n 'onKeyPress',\r\n 'onContextMenu',\r\n ]);\r\n if (tabIndex !== undefined) {\r\n otherProps.tabIndex = -1;\r\n }\r\n }\r\n else {\r\n otherProps.onFocus = this.handleFocus;\r\n otherProps.onBlur = this.handleBlur;\r\n }\r\n otherProps.ref = this.elementReference;\r\n otherProps.disabled = this.isDisabled();\r\n otherProps.className = this.getClassName();\r\n if ('height' in style) {\r\n otherProps.style = { height: style.height };\r\n }\r\n otherProps.lang = normalizeLanguage(lang);\r\n return otherProps;\r\n }\r\n getClassName(...props) {\r\n const { prefixCls, props: { elementClassName }, } = this;\r\n return classNames(prefixCls, elementClassName, ...props);\r\n }\r\n getWrapperProps(props = {}) {\r\n const { style, hidden } = this.props;\r\n const wrapperProps = {\r\n ref: this.wrapperReference,\r\n className: this.getWrapperClassNames(),\r\n hidden,\r\n ...props,\r\n };\r\n if (style) {\r\n wrapperProps.style = omit(style, 'height');\r\n }\r\n return wrapperProps;\r\n }\r\n getWrapperClassNames(...args) {\r\n const { prefixCls, props: { className, size }, } = this;\r\n return classNames(`${prefixCls}-wrapper`, className, {\r\n [`${prefixCls}-sm`]: size === 'small',\r\n [`${prefixCls}-lg`]: size === 'large',\r\n [`${prefixCls}-disabled`]: this.isDisabled(),\r\n [`${prefixCls}-focused`]: this.isFocus,\r\n }, ...args);\r\n }\r\n isDisabled() {\r\n const { disabled } = this.props;\r\n return disabled;\r\n }\r\n handleFocus(e) {\r\n runInAction(() => {\r\n this.isFocused = true;\r\n this.isFocus = true;\r\n const { props: { onFocus = noop }, prefixCls, } = this;\r\n onFocus(e);\r\n const element = this.wrapper || findDOMNode(this);\r\n if (element) {\r\n classes(element).add(`${prefixCls}-focused`);\r\n }\r\n });\r\n }\r\n handleBlur(e) {\r\n if (!e.isDefaultPrevented()) {\r\n runInAction(() => {\r\n this.isFocused = false;\r\n this.isFocus = false;\r\n const { props: { onBlur = noop }, prefixCls, } = this;\r\n onBlur(e);\r\n const element = this.wrapper || findDOMNode(this);\r\n if (element) {\r\n classes(element).remove(`${prefixCls}-focused`);\r\n }\r\n });\r\n }\r\n }\r\n focus() {\r\n if (this.element) {\r\n this.element.focus();\r\n }\r\n }\r\n blur() {\r\n if (this.element) {\r\n this.element.blur();\r\n }\r\n }\r\n elementReference(node) {\r\n this.element = node;\r\n }\r\n wrapperReference(node) {\r\n this.wrapper = node;\r\n }\r\n componentWillReceiveProps(nextProps, nextContext) {\r\n this.updateObservableProps(nextProps, nextContext);\r\n }\r\n componentWillMount() {\r\n const { tabIndex, autoFocus } = this.props;\r\n if (!this.isDisabled() && autoFocus && (tabIndex === undefined || tabIndex > -1)) {\r\n defer(() => this.focus());\r\n }\r\n }\r\n}\r\nViewComponent.propTypes = {\r\n /**\r\n * 组件id\r\n */\r\n id: PropTypes.string,\r\n /**\r\n * 组件大小<未实现>\r\n * 可选值 `default` `small` `big`\r\n */\r\n size: PropTypes.oneOf([Size.small, Size.default, Size.large]),\r\n /**\r\n * 样式后缀\r\n */\r\n suffixCls: PropTypes.string,\r\n /**\r\n * 样式前缀\r\n */\r\n prefixCls: PropTypes.string,\r\n /**\r\n * 悬浮提示,建议用ToolTip组件\r\n */\r\n title: PropTypes.string,\r\n /**\r\n * 是否禁用\r\n */\r\n disabled: PropTypes.bool,\r\n /**\r\n * 是否隐藏\r\n */\r\n hidden: PropTypes.bool,\r\n /**\r\n * 自动获取焦点,多个组件同时设置该参数时,以节点树的顺序最末的组件获取焦点\r\n */\r\n autoFocus: PropTypes.bool,\r\n /**\r\n * 内链样式\r\n */\r\n style: PropTypes.object,\r\n /**\r\n * 自定义样式名\r\n */\r\n className: PropTypes.string,\r\n /**\r\n * 键盘Tab键焦点序号,设为-1时不会获得焦点,设为0时为节点树的顺序。\r\n */\r\n tabIndex: PropTypes.number,\r\n /**\r\n * 语言\r\n */\r\n lang: PropTypes.string,\r\n /**\r\n * 拼写校验\r\n */\r\n spellCheck: PropTypes.bool,\r\n /**\r\n * 获取焦点回调\r\n */\r\n onFocus: PropTypes.func,\r\n /**\r\n * 失去焦点回调\r\n */\r\n onBlur: PropTypes.func,\r\n /**\r\n * 单击回调\r\n */\r\n onClick: PropTypes.func,\r\n /**\r\n * 双击回调\r\n */\r\n onDoubleClick: PropTypes.func,\r\n /**\r\n * 鼠标抬起回调\r\n */\r\n onMouseUp: PropTypes.func,\r\n /**\r\n * 鼠标点下回调\r\n */\r\n onMouseDown: PropTypes.func,\r\n /**\r\n * 鼠标移动回调\r\n */\r\n onMouseMove: PropTypes.func,\r\n /**\r\n * 鼠标进入回调\r\n */\r\n onMouseEnter: PropTypes.func,\r\n /**\r\n * 鼠标离开回调\r\n */\r\n onMouseLeave: PropTypes.func,\r\n /**\r\n * 鼠标进入回调,与onMouseEnter区别在于鼠标进入子节点时会触发onMouseOut\r\n */\r\n onMouseOver: PropTypes.func,\r\n /**\r\n * 鼠标离开回调,与onMouseLeave区别在于子节点的onMouseout会冒泡触发本回调\r\n */\r\n onMouseOut: PropTypes.func,\r\n /**\r\n * 鼠标右击后的回调\r\n */\r\n onContextMenu: PropTypes.func,\r\n /**\r\n * 键盘按下时的回调\r\n */\r\n onKeyDown: PropTypes.func,\r\n /**\r\n * 键盘抬起时的回调\r\n */\r\n onKeyUp: PropTypes.func,\r\n /**\r\n * 键盘敲击后的回调\r\n */\r\n onKeyPress: PropTypes.func,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], ViewComponent.prototype, \"isFocused\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], ViewComponent.prototype, \"observableProps\", void 0);\r\ntslib_1.__decorate([\r\n action\r\n], ViewComponent.prototype, \"setObservableProps\", null);\r\ntslib_1.__decorate([\r\n action\r\n], ViewComponent.prototype, \"updateObservableProps\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ViewComponent.prototype, \"handleFocus\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ViewComponent.prototype, \"handleBlur\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ViewComponent.prototype, \"elementReference\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], ViewComponent.prototype, \"wrapperReference\", null);\r\n","import Icon from 'choerodon-ui/lib/icon';\r\nexport default Icon;\r\n","import { spy, observable, computed, getDependencyTree, Reaction, runInAction, transaction, configure } from 'mobx';\nimport React, { useState, useRef, useMemo, useEffect, useCallback, useDebugValue, memo, forwardRef } from 'react';\n\nif (!useState) {\r\n throw new Error(\"mobx-react-lite requires React with Hooks support\");\r\n}\r\nif (!spy) {\r\n throw new Error(\"mobx-react-lite requires mobx at least version 4 to be available\");\r\n}\n\nfunction useObservable(initialValue) {\r\n var observableRef = useRef(null);\r\n if (!observableRef.current) {\r\n observableRef.current = observable(initialValue);\r\n }\r\n return observableRef.current;\r\n}\n\nfunction useComputed(func, inputs) {\r\n if (inputs === void 0) { inputs = []; }\r\n var computed$1 = useMemo(function () { return computed(func); }, inputs);\r\n return computed$1.get();\r\n}\n\nvar doNothingDisposer = function () {\r\n // empty\r\n};\r\n/**\r\n * Adds an observable effect (reaction, autorun, or anything else that returns a disposer) that will be registered upon component creation and disposed upon unmounting.\r\n * Returns the generated disposer for early disposal.\r\n *\r\n * @export\r\n * @template D\r\n * @param {() => D} disposerGenerator A function that returns the disposer of the wanted effect.\r\n * @param {ReadonlyArray<any>} [inputs=[]] If you want the effect to be automatically re-created when some variable(s) are changed then pass them in this array.\r\n * @returns {D}\r\n */\r\nfunction useDisposable(disposerGenerator, inputs) {\r\n if (inputs === void 0) { inputs = []; }\r\n var disposerRef = useRef(null);\r\n var earlyDisposedRef = useRef(false);\r\n useEffect(function () {\r\n return lazyCreateDisposer(false);\r\n }, inputs);\r\n function lazyCreateDisposer(earlyDisposal) {\r\n // ensure that we won't create a new disposer if it was early disposed\r\n if (earlyDisposedRef.current) {\r\n return doNothingDisposer;\r\n }\r\n if (!disposerRef.current) {\r\n var newDisposer = disposerGenerator();\r\n if (typeof newDisposer !== \"function\") {\r\n var error = new Error(\"generated disposer must be a function\");\r\n {\r\n // tslint:disable-next-line:no-console\r\n console.error(error);\r\n return doNothingDisposer;\r\n }\r\n }\r\n disposerRef.current = newDisposer;\r\n }\r\n return function () {\r\n if (disposerRef.current) {\r\n disposerRef.current();\r\n disposerRef.current = null;\r\n }\r\n if (earlyDisposal) {\r\n earlyDisposedRef.current = true;\r\n }\r\n };\r\n }\r\n return lazyCreateDisposer(true);\r\n}\n\nvar globalIsUsingStaticRendering = false;\r\nfunction useStaticRendering(enable) {\r\n globalIsUsingStaticRendering = enable;\r\n}\r\nfunction isUsingStaticRendering() {\r\n return globalIsUsingStaticRendering;\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\n\nfunction printDebugValue(v) {\r\n if (!v.current) {\r\n return \"<unknown>\";\r\n }\r\n return getDependencyTree(v.current);\r\n}\n\nvar EMPTY_ARRAY = [];\r\nfunction useUnmount(fn) {\r\n useEffect(function () { return fn; }, EMPTY_ARRAY);\r\n}\r\nfunction useForceUpdate() {\r\n var _a = __read(useState(0), 2), setTick = _a[1];\r\n var update = useCallback(function () {\r\n setTick(function (tick) { return tick + 1; });\r\n }, []);\r\n return update;\r\n}\r\nfunction isPlainObject(value) {\r\n if (!value || typeof value !== \"object\") {\r\n return false;\r\n }\r\n var proto = Object.getPrototypeOf(value);\r\n return !proto || proto === Object.prototype;\r\n}\n\nvar EMPTY_OBJECT = {};\r\nfunction useObserver(fn, baseComponentName, options) {\r\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\r\n if (options === void 0) { options = EMPTY_OBJECT; }\r\n if (isUsingStaticRendering()) {\r\n return fn();\r\n }\r\n var wantedForceUpdateHook = options.useForceUpdate || useForceUpdate;\r\n var forceUpdate = wantedForceUpdateHook();\r\n var reaction = useRef(null);\r\n if (!reaction.current) {\r\n reaction.current = new Reaction(\"observer(\" + baseComponentName + \")\", function () {\r\n forceUpdate();\r\n });\r\n }\r\n var dispose = function () {\r\n if (reaction.current && !reaction.current.isDisposed) {\r\n reaction.current.dispose();\r\n reaction.current = null;\r\n }\r\n };\r\n useDebugValue(reaction, printDebugValue);\r\n useUnmount(function () {\r\n dispose();\r\n });\r\n // render the original component, but have the\r\n // reaction track the observables, so that rendering\r\n // can be invalidated (see above) once a dependency changes\r\n var rendering;\r\n var exception;\r\n reaction.current.track(function () {\r\n try {\r\n rendering = fn();\r\n }\r\n catch (e) {\r\n exception = e;\r\n }\r\n });\r\n if (exception) {\r\n dispose();\r\n throw exception; // re-throw any exceptions catched during rendering\r\n }\r\n return rendering;\r\n}\n\n// n.b. base case is not used for actual typings or exported in the typing files\r\nfunction observer(baseComponent, options) {\r\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\r\n if (isUsingStaticRendering()) {\r\n return baseComponent;\r\n }\r\n var realOptions = __assign({ forwardRef: false }, options);\r\n var baseComponentName = baseComponent.displayName || baseComponent.name;\r\n var wrappedComponent = function (props, ref) {\r\n return useObserver(function () { return baseComponent(props, ref); }, baseComponentName);\r\n };\r\n wrappedComponent.displayName = baseComponentName;\r\n // memo; we are not intested in deep updates\r\n // in props; we assume that if deep objects are changed,\r\n // this is in observables, which would have been tracked anyway\r\n var memoComponent;\r\n if (realOptions.forwardRef) {\r\n // we have to use forwardRef here because:\r\n // 1. it cannot go before memo, only after it\r\n // 2. forwardRef converts the function into an actual component, so we can't let the baseComponent do it\r\n // since it wouldn't be a callable function anymore\r\n memoComponent = memo(forwardRef(wrappedComponent));\r\n }\r\n else {\r\n memoComponent = memo(wrappedComponent);\r\n }\r\n copyStaticProperties(baseComponent, memoComponent);\r\n memoComponent.displayName = baseComponentName;\r\n return memoComponent;\r\n}\r\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\r\nvar hoistBlackList = {\r\n $$typeof: true,\r\n render: true,\r\n compare: true,\r\n type: true\r\n};\r\nfunction copyStaticProperties(base, target) {\r\n Object.keys(base).forEach(function (key) {\r\n if (base.hasOwnProperty(key) && !hoistBlackList[key]) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\r\n }\r\n });\r\n}\n\nfunction ObserverComponent(_a) {\r\n var children = _a.children, render = _a.render;\r\n var component = children || render;\r\n if (typeof component !== \"function\") {\r\n return null;\r\n }\r\n return useObserver(component);\r\n}\r\nObserverComponent.propTypes = {\r\n children: ObserverPropsCheck,\r\n render: ObserverPropsCheck\r\n};\r\nObserverComponent.displayName = \"Observer\";\r\nfunction ObserverPropsCheck(props, key, componentName, location, propFullName) {\r\n var extraKey = key === \"children\" ? \"render\" : \"children\";\r\n var hasProp = typeof props[key] === \"function\";\r\n var hasExtraProp = typeof props[extraKey] === \"function\";\r\n if (hasProp && hasExtraProp) {\r\n return new Error(\"MobX Observer: Do not use children and render in the same time in`\" + componentName);\r\n }\r\n if (hasProp || hasExtraProp) {\r\n return null;\r\n }\r\n return new Error(\"Invalid prop `\" +\r\n propFullName +\r\n \"` of type `\" +\r\n typeof props[key] +\r\n \"` supplied to\" +\r\n \" `\" +\r\n componentName +\r\n \"`, expected `function`.\");\r\n}\n\nfunction useAsObservableSourceInternal(current, usedByLocalStore) {\r\n if (usedByLocalStore && current === undefined) {\r\n return undefined;\r\n }\r\n var _a = __read(React.useState(function () { return observable(current, {}, { deep: false }); }), 1), res = _a[0];\r\n runInAction(function () {\r\n Object.assign(res, current);\r\n });\r\n return res;\r\n}\r\nfunction useAsObservableSource(current) {\r\n return useAsObservableSourceInternal(current, false);\r\n}\n\nfunction useLocalStore(initializer, current) {\r\n var source = useAsObservableSourceInternal(current, true);\r\n return React.useState(function () {\r\n var local = observable(initializer(source));\r\n if (isPlainObject(local)) {\r\n runInAction(function () {\r\n Object.keys(local).forEach(function (key) {\r\n var value = local[key];\r\n if (typeof value === \"function\") {\r\n // @ts-ignore No idea why ts2536 is popping out here\r\n local[key] = wrapInTransaction(value, local);\r\n }\r\n });\r\n });\r\n }\r\n return local;\r\n })[0];\r\n}\r\n// tslint:disable-next-line: ban-types\r\nfunction wrapInTransaction(fn, context) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return transaction(function () { return fn.apply(context, args); });\r\n };\r\n}\n\nvar optimizeScheduler = function (reactionScheduler) {\r\n if (typeof reactionScheduler === \"function\") {\r\n configure({ reactionScheduler: reactionScheduler });\r\n }\r\n};\n\nexport { ObserverComponent as Observer, isUsingStaticRendering, observer, optimizeScheduler, useAsObservableSource, useComputed, useDisposable, useForceUpdate, useLocalStore, useObservable, useObserver, useStaticRendering };\n","import{unstable_batchedUpdates as e}from\"react-dom\";import{isUsingStaticRendering as r,observer as t,Observer as o}from\"mobx-react-lite\";export{Observer,useObserver,useAsObservableSource,useLocalStore,isUsingStaticRendering,useStaticRendering}from\"mobx-react-lite\";import n,{PureComponent as i,Component as a,forwardRef as c,memo as s,createElement as u}from\"react\";import{createAtom as f,_allowStateChanges as p,Reaction as l,$mobx as b,isObservableArray as y,isObservableObject as d,isObservableMap as h,untracked as m,observable as v,configure as O}from\"mobx\";var g=0,w={};function j(e){return w[e]||(w[e]=function(e){if(\"function\"==typeof Symbol)return Symbol(e);var r=\"__$mobx-react \"+e+\" (\"+g+\")\";return g++,r}(e)),w[e]}function x(e,r){if(P(e,r))return!0;if(\"object\"!=typeof e||null===e||\"object\"!=typeof r||null===r)return!1;var t=Object.keys(e),o=Object.keys(r);if(t.length!==o.length)return!1;for(var n=0;n<t.length;n++)if(!hasOwnProperty.call(r,t[n])||!P(e[t[n]],r[t[n]]))return!1;return!0}function P(e,r){return e===r?0!==e||1/e==1/r:e!=e&&r!=r}var E={$$typeof:1,render:1,compare:1,type:1,childContextTypes:1,contextType:1,contextTypes:1,defaultProps:1,getDefaultProps:1,getDerivedStateFromError:1,getDerivedStateFromProps:1,mixins:1,propTypes:1};function S(e,r,t){Object.hasOwnProperty.call(e,r)?e[r]=t:Object.defineProperty(e,r,{enumerable:!1,configurable:!0,writable:!0,value:t})}var R=j(\"patchMixins\"),k=j(\"patchedDefinition\");function A(e,r){for(var t=this,o=[],n=arguments.length-2;n-- >0;)o[n]=arguments[n+2];r.locks++;try{var i;return null!=e&&(i=e.apply(this,o)),i}finally{r.locks--,0===r.locks&&r.methods.forEach(function(e){e.apply(t,o)})}}function C(e,r){return function(){for(var t=[],o=arguments.length;o--;)t[o]=arguments[o];A.call.apply(A,[this,e,r].concat(t))}}function U(e,r,t){var o=function(e,r){var t=e[R]=e[R]||{},o=t[r]=t[r]||{};return o.locks=o.locks||0,o.methods=o.methods||[],o}(e,r);o.methods.indexOf(t)<0&&o.methods.push(t);var n=Object.getOwnPropertyDescriptor(e,r);if(!n||!n[k]){var i=function e(r,t,o,n,i){var a,c=C(i,n);return(a={})[k]=!0,a.get=function(){return c},a.set=function(i){if(this===r)c=C(i,n);else{var a=e(this,t,o,n,i);Object.defineProperty(this,t,a)}},a.configurable=!0,a.enumerable=o,a}(e,r,n?n.enumerable:void 0,o,e[r]);Object.defineProperty(e,r,i)}}var M=b||\"$mobx\",$=j(\"isUnmounted\"),_=j(\"skipRender\"),T=j(\"isForcingUpdate\");function N(e,t){return r()&&console.warn(\"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\"),this.state!==t||!x(this.props,e)}function D(e,r){var t=j(\"reactProp_\"+r+\"_valueHolder\"),o=j(\"reactProp_\"+r+\"_atomHolder\");function n(){return this[o]||S(this,o,f(\"reactive \"+r)),this[o]}Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get:function(){return n.call(this).reportObserved(),this[t]},set:function(e){this[T]||x(this[t],e)?S(this,t,e):(S(this,t,e),S(this,_,!0),n.call(this).reportChanged(),S(this,_,!1))}})}var I=\"function\"==typeof Symbol&&Symbol.for,q=I?Symbol.for(\"react.forward_ref\"):\"function\"==typeof c&&c(function(){}).$$typeof,F=I?Symbol.for(\"react.memo\"):\"function\"==typeof s&&s(function(){}).$$typeof;function W(e){if(!0===e.isMobxInjector&&console.warn(\"Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'\"),F&&e.$$typeof===F)throw new Error(\"Mobx observer: You are trying to use 'observer' on function component wrapped to either another observer or 'React.memo'. The observer already applies 'React.memo' for you.\");if(q&&e.$$typeof===q){var s=e.render;if(\"function\"!=typeof s)throw new Error(\"render property of ForwardRef was not a function\");return c(function(){var e=arguments;return n.createElement(o,null,function(){return s.apply(void 0,e)})})}return\"function\"!=typeof e||e.prototype&&e.prototype.render||e.isReactClass||Object.prototype.isPrototypeOf.call(a,e)?function(e){var t=e.prototype;if(t.componentWillReact)throw new Error(\"The componentWillReact life-cycle event is no longer supported\");if(e.__proto__!==i)if(t.shouldComponentUpdate){if(t.shouldComponentUpdate!==N)throw new Error(\"It is not allowed to use shouldComponentUpdate in observer based components.\")}else t.shouldComponentUpdate=N;D(t,\"props\"),D(t,\"state\");var o=t.render;return t.render=function(){return function(e){var t=this;if(!0===r())return e.call(this);S(this,_,!1),S(this,T,!1);var o=this.displayName||this.name||this.constructor&&(this.constructor.displayName||this.constructor.name)||\"<component>\",n=e.bind(this),i=!1,c=new l(o+\".render()\",function(){if(!i&&(i=!0,!0!==t[$])){var e=!0;try{S(t,T,!0),t[_]||a.prototype.forceUpdate.call(t),e=!1}finally{S(t,T,!1),e&&c.dispose()}}});function s(){i=!1;var e=void 0,r=void 0;if(c.track(function(){try{r=p(!1,n)}catch(r){e=r}}),e)throw e;return r}return c.reactComponent=this,s[M]=c,this.render=s,s.call(this)}.call(this,o)},U(t,\"componentWillUnmount\",function(){!0!==r()&&(this.render[M]&&this.render[M].dispose(),this[$]=!0)}),e}(e):t(e)}var L=n.createContext({});function X(e){var r=e.children,t=function(e,r){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===r.indexOf(o)&&(t[o]=e[o]);return t}(e,[\"children\"]),o=n.useContext(L),i=n.useRef(Object.assign({},o,t)).current;if(\"production\"!==process.env.NODE_ENV&&!x(i,Object.assign({},i,t)))throw new Error(\"MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.\");return n.createElement(L.Provider,{value:i},r)}function H(e,r,t,o){var i,a,c,s=n.forwardRef(function(t,o){var i=Object.assign({},t),a=n.useContext(L);return Object.assign(i,e(a||{},i)||{}),o&&(i.ref=o),u(r,i)});return o&&(s=W(s)),s.isMobxInjector=!0,i=r,a=s,c=Object.getOwnPropertyNames(Object.getPrototypeOf(i)),Object.getOwnPropertyNames(i).forEach(function(e){E[e]||-1!==c.indexOf(e)||Object.defineProperty(a,e,Object.getOwnPropertyDescriptor(i,e))}),s.wrappedComponent=r,s.displayName=function(e,r){var t=e.displayName||e.name||e.constructor&&e.constructor.name||\"Component\";return r?\"inject-with-\"+r+\"(\"+t+\")\":\"inject(\"+t+\")\"}(r,t),s}function Y(){for(var e,r=[],t=arguments.length;t--;)r[t]=arguments[t];return\"function\"==typeof arguments[0]?(e=arguments[0],function(r){return H(e,r,e.name,!0)}):function(e){return H(function(e){return function(r,t){return e.forEach(function(e){if(!(e in t)){if(!(e in r))throw new Error(\"MobX injector: Store '\"+e+\"' is not available! Make sure it is provided by some Provider\");t[e]=r[e]}}),t}}(r),e,r.join(\"-\"),!1)}}X.displayName=\"MobXProvider\";var V=j(\"disposeOnUnmountProto\"),z=j(\"disposeOnUnmountInst\");function B(){var e=this;(this[V]||[]).concat(this[z]||[]).forEach(function(r){var t=\"string\"==typeof r?e[r]:r;null!=t&&(Array.isArray(t)?t.map(function(e){return e()}):t())})}function G(e,r){if(Array.isArray(r))return r.map(function(r){return G(e,r)});var t=Object.getPrototypeOf(e).constructor||Object.getPrototypeOf(e.constructor),o=Object.getPrototypeOf(e.constructor);if(t!==a&&t!==i&&o!==a&&o!==i)throw new Error(\"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\");if(\"string\"!=typeof r&&\"function\"!=typeof r&&!Array.isArray(r))throw new Error(\"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\");var n=!!e[V]||!!e[z];return(\"string\"==typeof r?e[V]||(e[V]=[]):e[z]||(e[z]=[])).push(r),n||U(e,\"componentWillUnmount\",B),\"string\"!=typeof r?r:void 0}function J(e){function r(r,t,o,n,i,a){for(var c=[],s=arguments.length-6;s-- >0;)c[s]=arguments[s+6];return m(function(){return n=n||\"<<anonymous>>\",a=a||o,null==t[o]?r?new Error(\"The \"+i+\" `\"+a+\"` is marked as required in `\"+n+\"`, but its value is `\"+(null===t[o]?\"null\":\"undefined\")+\"`.\"):null:e.apply(void 0,[t,o,n,i,a].concat(c))})}var t=r.bind(null,!1);return t.isRequired=r.bind(null,!0),t}function K(e){var r=typeof e;return Array.isArray(e)?\"array\":e instanceof RegExp?\"object\":function(e,r){return\"symbol\"===e||\"Symbol\"===r[\"@@toStringTag\"]||\"function\"==typeof Symbol&&r instanceof Symbol}(r,e)?\"symbol\":r}function Q(e,r){return J(function(t,o,n,i,a){return m(function(){if(e&&K(t[o])===r.toLowerCase())return null;var i;switch(r){case\"Array\":i=y;break;case\"Object\":i=d;break;case\"Map\":i=h;break;default:throw new Error(\"Unexpected mobxType: \"+r)}var c=t[o];if(!i(c)){var s=function(e){var r=K(e);if(\"object\"===r){if(e instanceof Date)return\"date\";if(e instanceof RegExp)return\"regexp\"}return r}(c),u=e?\" or javascript `\"+r.toLowerCase()+\"`\":\"\";return new Error(\"Invalid prop `\"+a+\"` of type `\"+s+\"` supplied to `\"+n+\"`, expected `mobx.Observable\"+r+\"`\"+u+\".\")}return null})})}function Z(e,r){return J(function(t,o,n,i,a){for(var c=[],s=arguments.length-5;s-- >0;)c[s]=arguments[s+5];return m(function(){if(\"function\"!=typeof r)return new Error(\"Property `\"+a+\"` of component `\"+n+\"` has invalid PropType notation.\");var s=Q(e,\"Array\")(t,o,n);if(s instanceof Error)return s;for(var u=t[o],f=0;f<u.length;f++)if((s=r.apply(void 0,[u,f,n,i,a+\"[\"+f+\"]\"].concat(c)))instanceof Error)return s;return null})})}var ee={observableArray:Q(!1,\"Array\"),observableArrayOf:Z.bind(null,!1),observableMap:Q(!1,\"Map\"),observableObject:Q(!1,\"Object\"),arrayOrObservableArray:Q(!0,\"Array\"),arrayOrObservableArrayOf:Z.bind(null,!0),objectOrObservableObject:Q(!0,\"Object\")};if(!a)throw new Error(\"mobx-react requires React to be available\");if(!v)throw new Error(\"mobx-react requires mobx to be available\");\"function\"==typeof e&&O({reactionScheduler:e});export{W as observer,X as Provider,L as MobXProviderContext,Y as inject,G as disposeOnUnmount,ee as PropTypes};\n//# sourceMappingURL=mobx-react.module.js.map\n","import React from 'react';\r\nexport default React.createContext({});\r\n","import * as tslib_1 from \"tslib\";\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport { computed } from 'mobx';\r\nimport ViewComponent from '../core/ViewComponent';\r\nexport default class DataSetComponent extends ViewComponent {\r\n get dataSet() {\r\n return this.observableProps.dataSet;\r\n }\r\n get lang() {\r\n const { dataSet } = this;\r\n if (dataSet && dataSet.lang) {\r\n return dataSet.lang;\r\n }\r\n return super.lang;\r\n }\r\n getObservableProps(props, _context) {\r\n return {\r\n dataSet: props.dataSet,\r\n };\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['dataSet']);\r\n }\r\n}\r\nDataSetComponent.propTypes = {\r\n dataSet: PropTypes.object,\r\n ...ViewComponent.propTypes,\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], DataSetComponent.prototype, \"dataSet\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSetComponent.prototype, \"lang\", null);\r\n","import React from 'react';\r\nconst PopupInner = (props) => (<div {...props}/>);\r\nexport default PopupInner;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport shallowEqual from 'lodash/isEqual';\r\nimport noop from 'lodash/noop';\r\nimport Align from 'choerodon-ui/lib/align';\r\nimport { getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport Animate from '../animate';\r\nimport ViewComponent from '../core/ViewComponent';\r\nimport PopupInner from './PopupInner';\r\nimport autobind from '../_util/autobind';\r\nlet popupContainer;\r\nfunction getContainer() {\r\n if (!popupContainer && typeof window !== 'undefined') {\r\n const doc = window.document;\r\n popupContainer = doc.createElement('div');\r\n popupContainer.className = getProPrefixCls('popup-container');\r\n doc.body.appendChild(popupContainer);\r\n }\r\n return popupContainer;\r\n}\r\n/**\r\n * 记录ID生成器\r\n */\r\nconst PopupKeyGen = (function* (start) {\r\n while (true) {\r\n yield `popup-key-${start++}`;\r\n }\r\n})(1);\r\nexport default class Popup extends ViewComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.contentRendered = false;\r\n this.popupKey = PopupKeyGen.next().value;\r\n this.saveRef = align => (this.align = align);\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'align',\r\n 'transitionName',\r\n 'getRootDomNode',\r\n 'getClassNameFromAlign',\r\n 'getStyleFromAlign',\r\n 'onAlign',\r\n 'onAnimateAppear',\r\n 'onAnimateEnter',\r\n 'onAnimateLeave',\r\n 'onAnimateEnd',\r\n ]);\r\n return otherProps;\r\n }\r\n render() {\r\n const { hidden, align, transitionName, getRootDomNode, children, onAnimateAppear = noop, onAnimateEnter = noop, onAnimateLeave = noop, onAnimateEnd = noop, } = this.props;\r\n if (!hidden) {\r\n this.contentRendered = true;\r\n }\r\n const container = getContainer();\r\n return container && this.contentRendered\r\n ? createPortal(<Animate component=\"\" exclusive transitionAppear transitionName={transitionName} hiddenProp=\"hidden\" onAppear={onAnimateAppear} onEnter={onAnimateEnter} onLeave={onAnimateLeave} onEnd={onAnimateEnd}>\n <Align ref={this.saveRef} key=\"align\" childrenProps={{ hidden: 'hidden' }} align={align} onAlign={this.onAlign} target={getRootDomNode} hidden={hidden} monitorWindowResize>\n <PopupInner {...omit(this.getMergedProps(), ['ref'])}>{children}</PopupInner>\n </Align>\n </Animate>, container, this.popupKey)\r\n : null;\r\n }\r\n onAlign(source, align, target) {\r\n const { getClassNameFromAlign = noop, getStyleFromAlign = noop, onAlign = noop } = this.props;\r\n const currentAlignClassName = getClassNameFromAlign(align);\r\n if (this.currentAlignClassName !== currentAlignClassName) {\r\n this.currentAlignClassName = currentAlignClassName;\r\n source.className = this.getMergedClassNames(currentAlignClassName);\r\n }\r\n const currentAlignStyle = getStyleFromAlign(target, align);\r\n if (!shallowEqual(this.currentAlignStyle, currentAlignStyle)) {\r\n this.currentAlignStyle = currentAlignStyle;\r\n Object.assign(source.style, currentAlignStyle);\r\n }\r\n onAlign(source, align, target);\r\n }\r\n forceAlign() {\r\n if (this.align) {\r\n this.align.forceAlign();\r\n }\r\n }\r\n}\r\nPopup.displayName = 'Popup';\r\nPopup.propTypes = {\r\n align: PropTypes.object,\r\n onAlign: PropTypes.func,\r\n getRootDomNode: PropTypes.func,\r\n transitionName: PropTypes.string,\r\n onAnimateAppear: PropTypes.func,\r\n onAnimateEnter: PropTypes.func,\r\n onAnimateLeave: PropTypes.func,\r\n onAnimateEnd: PropTypes.func,\r\n getStyleFromAlign: PropTypes.func,\r\n getClassNameFromAlign: PropTypes.func,\r\n ...ViewComponent.propTypes,\r\n};\r\nPopup.defaultProps = {\r\n suffixCls: 'popup',\r\n transitionName: 'zoom',\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], Popup.prototype, \"onAlign\", null);\r\n","import Animate from 'choerodon-ui/lib/animate';\r\nexport default Animate;\r\n","export var Action;\r\n(function (Action) {\r\n Action[\"click\"] = \"click\";\r\n Action[\"focus\"] = \"focus\";\r\n Action[\"hover\"] = \"hover\";\r\n Action[\"contextMenu\"] = \"contextMenu\";\r\n})(Action || (Action = {}));\r\nexport var ShowAction;\r\n(function (ShowAction) {\r\n ShowAction[\"click\"] = \"click\";\r\n ShowAction[\"focus\"] = \"focus\";\r\n ShowAction[\"mouseEnter\"] = \"mouseEnter\";\r\n ShowAction[\"contextMenu\"] = \"contextMenu\";\r\n})(ShowAction || (ShowAction = {}));\r\nexport var HideAction;\r\n(function (HideAction) {\r\n HideAction[\"click\"] = \"click\";\r\n HideAction[\"blur\"] = \"blur\";\r\n HideAction[\"mouseLeave\"] = \"mouseLeave\";\r\n})(HideAction || (HideAction = {}));\r\n","import TaskRunner from 'choerodon-ui/lib/_util/TaskRunner';\r\nexport default TaskRunner;\r\n","import { Children, cloneElement, PureComponent } from 'react';\r\nexport default class TriggerChild extends PureComponent {\r\n constructor(props, context) {\r\n super(props, context);\r\n const createChains = eventName => e => {\r\n const { [`on${eventName}`]: handle, children } = this.props;\r\n const child = Children.only(children);\r\n if (handle) {\r\n handle(eventName, child, e);\r\n }\r\n else if (child) {\r\n const { [`on${eventName}`]: childHandle } = child.props;\r\n if (childHandle) {\r\n childHandle(e);\r\n }\r\n }\r\n };\r\n this.handleContextMenu = createChains('ContextMenu');\r\n this.handleClick = createChains('Click');\r\n this.handleMouseDown = createChains('MouseDown');\r\n this.handleMouseEnter = createChains('MouseEnter');\r\n this.handleMouseLeave = createChains('MouseLeave');\r\n this.handleFocus = createChains('Focus');\r\n this.handleBlur = createChains('Blur');\r\n }\r\n render() {\r\n const { children } = this.props;\r\n return cloneElement(Children.only(children), {\r\n onContextMenu: this.handleContextMenu,\r\n onClick: this.handleClick,\r\n onMouseDown: this.handleMouseDown,\r\n onMouseEnter: this.handleMouseEnter,\r\n onMouseLeave: this.handleMouseLeave,\r\n onFocus: this.handleFocus,\r\n onBlur: this.handleBlur,\r\n });\r\n }\r\n}\r\nTriggerChild.displayName = 'TriggerChild';\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Children, Component, isValidElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { findDOMNode } from 'react-dom';\r\nimport classNames from 'classnames';\r\nimport raf from 'raf';\r\nimport { action as mobxAction, observable, runInAction } from 'mobx';\r\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react';\r\nimport noop from 'lodash/noop';\r\nimport Popup from './Popup';\r\nimport autobind from '../_util/autobind';\r\nimport TaskRunner from '../_util/TaskRunner';\r\nimport EventManager from '../_util/EventManager';\r\nimport { Action, HideAction, ShowAction } from './enum';\r\nimport TriggerChild from './TriggerChild';\r\nfunction isPointsEq(a1, a2) {\r\n return a1[0] === a2[0] && a1[1] === a2[1];\r\n}\r\nfunction getPopupClassNameFromAlign(builtinPlacements, prefixCls, align) {\r\n const { points } = align;\r\n const found = Object.keys(builtinPlacements).find(placement => ({}.hasOwnProperty.call(builtinPlacements, placement) &&\r\n isPointsEq(builtinPlacements[placement].points, points)));\r\n return found ? `${prefixCls}-popup-placement-${found}` : '';\r\n}\r\nfunction getAlignFromPlacement(builtinPlacements, placementStr, align) {\r\n const baseAlign = builtinPlacements[placementStr] || {};\r\n return {\r\n ...baseAlign,\r\n ...align,\r\n };\r\n}\r\nfunction contains(root, n) {\r\n let node = n;\r\n if (root) {\r\n while (node) {\r\n if (node === root || (root.contains && root.contains(node))) {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n }\r\n return false;\r\n}\r\nlet Trigger = class Trigger extends Component {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.popupTask = new TaskRunner();\r\n this.documentEvent = new EventManager(typeof window !== 'undefined' && document);\r\n this.focusTime = 0;\r\n this.preClickTime = 0;\r\n this.animateFrameId = 0;\r\n this.saveRef = node => (this.popup = node);\r\n runInAction(() => {\r\n this.popupHidden = 'popupHidden' in props ? props.popupHidden : props.defaultPopupHidden;\r\n });\r\n }\r\n render() {\r\n const { children } = this.props;\r\n const popup = this.getPopup();\r\n const newChildren = Children.map(children, child => {\r\n if (isValidElement(child)) {\r\n const newChildProps = {};\r\n if (this.isContextMenuToShow()) {\r\n newChildProps.onContextMenu = this.handleEvent;\r\n }\r\n if (this.isClickToHide() || this.isClickToShow()) {\r\n newChildProps.onClick = this.handleEvent;\r\n newChildProps.onMouseDown = this.handleEvent;\r\n }\r\n if (this.isMouseEnterToShow()) {\r\n newChildProps.onMouseEnter = this.handleEvent;\r\n }\r\n if (this.isMouseLeaveToHide()) {\r\n newChildProps.onMouseLeave = this.handleEvent;\r\n }\r\n if (this.isFocusToShow() || this.isBlurToHide()) {\r\n newChildProps.onFocus = this.handleEvent;\r\n newChildProps.onBlur = this.handleEvent;\r\n }\r\n return <TriggerChild {...newChildProps}>{child}</TriggerChild>;\r\n }\r\n return child;\r\n });\r\n return [newChildren, popup];\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n const { popupHidden } = nextProps;\r\n if (popupHidden !== this.popupHidden && popupHidden !== undefined) {\r\n this.popupHidden = popupHidden;\r\n }\r\n }\r\n componentDidUpdate() {\r\n const { popupHidden } = this;\r\n this.documentEvent.clear();\r\n if (!popupHidden) {\r\n this.documentEvent.addEventListener('scroll', this.handleDocumentScroll, true);\r\n if ((this.isClickToHide() || this.isContextMenuToShow()) && !this.isBlurToHide()) {\r\n this.documentEvent.addEventListener('mousedown', this.handleDocumentMouseDown);\r\n }\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.popupTask.cancel();\r\n this.documentEvent.clear();\r\n }\r\n handleEvent(eventName, child, e) {\r\n const { [`on${eventName}`]: handle } = this.props;\r\n const { [`on${eventName}`]: childHandle } = child.props;\r\n if (childHandle) {\r\n childHandle(e);\r\n }\r\n if (!e.isDefaultPrevented()) {\r\n if (handle) {\r\n handle(e);\r\n }\r\n if (!e.isDefaultPrevented()) {\r\n this[`handle${eventName}`].call(this, e);\r\n }\r\n }\r\n }\r\n handleContextMenu(e) {\r\n e.preventDefault();\r\n this.setPopupHidden(false);\r\n }\r\n handleFocus() {\r\n if (this.isFocusToShow()) {\r\n const { focusDelay } = this.props;\r\n this.focusTime = Date.now();\r\n this.delaySetPopupHidden(false, focusDelay);\r\n }\r\n }\r\n handleBlur() {\r\n if (this.isBlurToHide()) {\r\n const { blurDelay } = this.props;\r\n this.delaySetPopupHidden(true, blurDelay);\r\n }\r\n }\r\n handleDocumentMouseDown(e) {\r\n if (this.popup) {\r\n const { target } = e;\r\n if (!contains(findDOMNode(this), target) && !contains(findDOMNode(this.popup), target)) {\r\n this.setPopupHidden(true);\r\n }\r\n }\r\n }\r\n handleDocumentScroll({ target }) {\r\n if (this.popup && target !== document && !contains(findDOMNode(this.popup), target)) {\r\n if (this.animateFrameId) {\r\n raf.cancel(this.animateFrameId);\r\n }\r\n this.animateFrameId = raf(this.forcePopupAlign);\r\n }\r\n }\r\n handleMouseDown() {\r\n this.preClickTime = Date.now();\r\n }\r\n handleClick(e) {\r\n const { popupHidden } = this;\r\n if (this.focusTime) {\r\n if (Math.abs(this.preClickTime - this.focusTime) < 20) {\r\n return;\r\n }\r\n this.focusTime = 0;\r\n }\r\n this.preClickTime = 0;\r\n if ((this.isClickToHide() && !popupHidden) || (popupHidden && this.isClickToShow())) {\r\n e.preventDefault();\r\n this.setPopupHidden(!popupHidden);\r\n }\r\n }\r\n handleMouseEnter() {\r\n const { mouseEnterDelay } = this.props;\r\n this.delaySetPopupHidden(false, mouseEnterDelay);\r\n }\r\n handleMouseLeave() {\r\n const { mouseLeaveDelay } = this.props;\r\n this.delaySetPopupHidden(true, mouseLeaveDelay);\r\n }\r\n handlePopupMouseEnter() {\r\n this.popupTask.cancel();\r\n }\r\n handlePopupMouseLeave() {\r\n const { mouseLeaveDelay } = this.props;\r\n this.delaySetPopupHidden(true, mouseLeaveDelay);\r\n }\r\n getPopup() {\r\n const { prefixCls, popupCls, popupStyle, onPopupAnimateAppear, onPopupAnimateEnter, onPopupAnimateLeave, onPopupAnimateEnd, onPopupAlign, popupContent, getPopupStyleFromAlign, getRootDomNode = this.getRootDomNode, transitionName, } = this.props;\r\n const visible = !this.popupHidden && popupContent;\r\n const mouseProps = {};\r\n if (this.isMouseEnterToShow()) {\r\n mouseProps.onMouseEnter = this.handlePopupMouseEnter;\r\n }\r\n if (this.isMouseLeaveToHide()) {\r\n mouseProps.onMouseLeave = this.handlePopupMouseLeave;\r\n }\r\n return (<Popup key=\"popup\" ref={this.saveRef} transitionName={transitionName} className={classNames(`${prefixCls}-popup`, popupCls)} style={popupStyle} hidden={!visible} align={this.getPopupAlign()} onAlign={onPopupAlign} onMouseDown={this.handlePopupMouseDown} getRootDomNode={getRootDomNode} onAnimateAppear={onPopupAnimateAppear} onAnimateEnter={onPopupAnimateEnter} onAnimateLeave={onPopupAnimateLeave} onAnimateEnd={onPopupAnimateEnd} getStyleFromAlign={getPopupStyleFromAlign} getClassNameFromAlign={this.getPopupClassNameFromAlign} {...mouseProps}>\n {popupContent}\n </Popup>);\r\n }\r\n getPopupAlign() {\r\n const { popupPlacement, popupAlign, builtinPlacements } = this.props;\r\n if (popupPlacement && builtinPlacements) {\r\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\r\n }\r\n return popupAlign;\r\n }\r\n handlePopupMouseDown(e) {\r\n e.preventDefault();\r\n }\r\n getRootDomNode() {\r\n return findDOMNode(this);\r\n }\r\n getPopupClassNameFromAlign(align) {\r\n const className = [];\r\n const { popupPlacement, builtinPlacements, prefixCls, getPopupClassNameFromAlign: getCls, } = this.props;\r\n if (popupPlacement && builtinPlacements) {\r\n className.push(getPopupClassNameFromAlign(builtinPlacements, prefixCls, align));\r\n }\r\n if (getCls) {\r\n const cls = getCls(align);\r\n if (cls) {\r\n className.push(cls);\r\n }\r\n }\r\n return className.join(' ');\r\n }\r\n forcePopupAlign() {\r\n if (!this.popupHidden && this.popup) {\r\n this.popup.forceAlign();\r\n }\r\n }\r\n setPopupHidden(hidden) {\r\n this.popupTask.cancel();\r\n if (this.popupHidden !== hidden) {\r\n const { popupHidden, onPopupHiddenChange = noop } = this.props;\r\n if (popupHidden === undefined) {\r\n this.popupHidden = hidden;\r\n }\r\n onPopupHiddenChange(hidden);\r\n }\r\n }\r\n delaySetPopupHidden(popupHidden, delay) {\r\n this.popupTask.cancel();\r\n if (delay) {\r\n this.popupTask.delay(delay, () => {\r\n this.setPopupHidden(popupHidden);\r\n });\r\n }\r\n else {\r\n this.setPopupHidden(popupHidden);\r\n }\r\n }\r\n isClickToShow() {\r\n const { action = [], showAction = [] } = this.props;\r\n return action.indexOf(Action.click) !== -1 || showAction.indexOf(ShowAction.click) !== -1;\r\n }\r\n isContextMenuToShow() {\r\n const { action = [], showAction = [] } = this.props;\r\n return (action.indexOf(Action.contextMenu) !== -1 || showAction.indexOf(ShowAction.contextMenu) !== -1);\r\n }\r\n isClickToHide() {\r\n const { action = [], hideAction = [] } = this.props;\r\n return action.indexOf(Action.click) !== -1 || hideAction.indexOf(HideAction.click) !== -1;\r\n }\r\n isMouseEnterToShow() {\r\n const { action = [], showAction = [] } = this.props;\r\n return action.indexOf(Action.hover) !== -1 || showAction.indexOf(ShowAction.mouseEnter) !== -1;\r\n }\r\n isMouseLeaveToHide() {\r\n const { action = [], hideAction = [] } = this.props;\r\n return action.indexOf(Action.hover) !== -1 || hideAction.indexOf(HideAction.mouseLeave) !== -1;\r\n }\r\n isFocusToShow() {\r\n const { action = [], showAction = [] } = this.props;\r\n return action.indexOf(Action.focus) !== -1 || showAction.indexOf(ShowAction.focus) !== -1;\r\n }\r\n isBlurToHide() {\r\n const { action = [], hideAction = [] } = this.props;\r\n return action.indexOf(Action.focus) !== -1 || hideAction.indexOf(HideAction.blur) !== -1;\r\n }\r\n};\r\nTrigger.displayName = 'Trigger';\r\nTrigger.propTypes = {\r\n action: MobxPropTypes.arrayOrObservableArrayOf(PropTypes.oneOf([Action.hover, Action.contextMenu, Action.focus, Action.click])),\r\n showAction: MobxPropTypes.arrayOrObservableArrayOf(PropTypes.oneOf([\r\n ShowAction.mouseEnter,\r\n ShowAction.contextMenu,\r\n ShowAction.focus,\r\n ShowAction.click,\r\n ])),\r\n hideAction: MobxPropTypes.arrayOrObservableArrayOf(PropTypes.oneOf([HideAction.blur, HideAction.mouseLeave, HideAction.click])),\r\n popupContent: PropTypes.node,\r\n popupCls: PropTypes.string,\r\n popupStyle: PropTypes.object,\r\n popupHidden: PropTypes.bool,\r\n popupPlacement: PropTypes.string,\r\n popupAlign: PropTypes.object,\r\n builtinPlacements: PropTypes.any,\r\n onPopupAnimateAppear: PropTypes.func,\r\n onPopupAnimateEnter: PropTypes.func,\r\n onPopupAnimateLeave: PropTypes.func,\r\n onPopupAnimateEnd: PropTypes.func,\r\n onPopupAlign: PropTypes.func,\r\n onPopupHiddenChange: PropTypes.func,\r\n getPopupStyleFromAlign: PropTypes.func,\r\n focusDelay: PropTypes.number,\r\n blurDelay: PropTypes.number,\r\n mouseEnterDelay: PropTypes.number,\r\n mouseLeaveDelay: PropTypes.number,\r\n transitionName: PropTypes.string,\r\n defaultPopupHidden: PropTypes.bool,\r\n};\r\nTrigger.defaultProps = {\r\n focusDelay: 150,\r\n blurDelay: 0,\r\n mouseEnterDelay: 100,\r\n mouseLeaveDelay: 100,\r\n transitionName: 'slide-up',\r\n defaultPopupHidden: true,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], Trigger.prototype, \"popupHidden\", void 0);\r\ntslib_1.__decorate([\r\n mobxAction\r\n], Trigger.prototype, \"componentWillReceiveProps\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"handleEvent\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"handleDocumentMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"handleDocumentScroll\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"handlePopupMouseEnter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"handlePopupMouseLeave\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"handlePopupMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"getRootDomNode\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"getPopupClassNameFromAlign\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Trigger.prototype, \"forcePopupAlign\", null);\r\ntslib_1.__decorate([\r\n mobxAction\r\n], Trigger.prototype, \"setPopupHidden\", null);\r\nTrigger = tslib_1.__decorate([\r\n observer\r\n], Trigger);\r\nexport default Trigger;\r\n","const rcAutoAdjustOverflow = {\r\n adjustX: 1,\r\n adjustY: 1,\r\n};\r\nconst targetOffset = [0, 0];\r\nconst OFFSET_UNIT = 10;\r\nexport const rcPlacements = {\r\n left: {\r\n points: ['cr', 'cl'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [-OFFSET_UNIT, 0],\r\n targetOffset,\r\n },\r\n right: {\r\n points: ['cl', 'cr'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [OFFSET_UNIT, 0],\r\n targetOffset,\r\n },\r\n top: {\r\n points: ['bc', 'tc'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [0, -OFFSET_UNIT],\r\n targetOffset,\r\n },\r\n bottom: {\r\n points: ['tc', 'bc'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [0, OFFSET_UNIT],\r\n targetOffset,\r\n },\r\n topLeft: {\r\n points: ['bl', 'tl'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [0, -OFFSET_UNIT],\r\n targetOffset,\r\n },\r\n leftTop: {\r\n points: ['tr', 'tl'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [-OFFSET_UNIT, 0],\r\n targetOffset,\r\n },\r\n topRight: {\r\n points: ['br', 'tr'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [0, -OFFSET_UNIT],\r\n targetOffset,\r\n },\r\n rightTop: {\r\n points: ['tl', 'tr'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [OFFSET_UNIT, 0],\r\n targetOffset,\r\n },\r\n bottomRight: {\r\n points: ['tr', 'br'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [0, OFFSET_UNIT],\r\n targetOffset,\r\n },\r\n rightBottom: {\r\n points: ['bl', 'br'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [OFFSET_UNIT, 0],\r\n targetOffset,\r\n },\r\n bottomLeft: {\r\n points: ['tl', 'bl'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [0, OFFSET_UNIT],\r\n targetOffset,\r\n },\r\n leftBottom: {\r\n points: ['br', 'bl'],\r\n overflow: rcAutoAdjustOverflow,\r\n offset: [-OFFSET_UNIT, 0],\r\n targetOffset,\r\n },\r\n};\r\nconst autoAdjustOverflowEnabled = {\r\n adjustX: 1,\r\n adjustY: 1,\r\n};\r\nconst autoAdjustOverflowDisabled = {\r\n adjustX: 0,\r\n adjustY: 0,\r\n};\r\nexport function getOverflowOptions(autoAdjustOverflow) {\r\n if (typeof autoAdjustOverflow === 'boolean') {\r\n return autoAdjustOverflow ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled;\r\n }\r\n return {\r\n ...autoAdjustOverflowDisabled,\r\n ...autoAdjustOverflow,\r\n };\r\n}\r\nexport default function getPlacements(config = {}) {\r\n const { arrowWidth = 5, horizontalArrowShift = 16, verticalArrowShift = 12, autoAdjustOverflow = true } = config;\r\n const placementMap = {\r\n left: {\r\n points: ['cr', 'cl'],\r\n offset: [-4, 0],\r\n },\r\n right: {\r\n points: ['cl', 'cr'],\r\n offset: [4, 0],\r\n },\r\n top: {\r\n points: ['bc', 'tc'],\r\n offset: [0, -4],\r\n },\r\n bottom: {\r\n points: ['tc', 'bc'],\r\n offset: [0, 4],\r\n },\r\n topLeft: {\r\n points: ['bl', 'tc'],\r\n offset: [-(horizontalArrowShift + arrowWidth), -4],\r\n },\r\n leftTop: {\r\n points: ['tr', 'cl'],\r\n offset: [-4, -(verticalArrowShift + arrowWidth)],\r\n },\r\n topRight: {\r\n points: ['br', 'tc'],\r\n offset: [horizontalArrowShift + arrowWidth, -4],\r\n },\r\n rightTop: {\r\n points: ['tl', 'cr'],\r\n offset: [4, -(verticalArrowShift + arrowWidth)],\r\n },\r\n bottomRight: {\r\n points: ['tr', 'bc'],\r\n offset: [horizontalArrowShift + arrowWidth, 4],\r\n },\r\n rightBottom: {\r\n points: ['bl', 'cr'],\r\n offset: [4, verticalArrowShift + arrowWidth],\r\n },\r\n bottomLeft: {\r\n points: ['tl', 'bc'],\r\n offset: [-(horizontalArrowShift + arrowWidth), 4],\r\n },\r\n leftBottom: {\r\n points: ['br', 'cl'],\r\n offset: [-4, verticalArrowShift + arrowWidth],\r\n },\r\n };\r\n Object.keys(placementMap).forEach(key => {\r\n placementMap[key] = config.arrowPointAtCenter ? {\r\n ...placementMap[key],\r\n overflow: getOverflowOptions(autoAdjustOverflow),\r\n targetOffset,\r\n } : {\r\n ...rcPlacements[key],\r\n overflow: getOverflowOptions(autoAdjustOverflow),\r\n };\r\n });\r\n return placementMap;\r\n}\r\n","import React, { Children, Component, isValidElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport Trigger from '../trigger/Trigger';\r\nimport { Action } from '../trigger/enum';\r\nimport getPlacements from './placements';\r\nexport default class Tooltip extends Component {\r\n get prefixCls() {\r\n const { suffixCls, prefixCls } = this.props;\r\n return getProPrefixCls(suffixCls, prefixCls);\r\n }\r\n get popupContent() {\r\n const { title } = this.props;\r\n if (!title) {\r\n return null;\r\n }\r\n const { prefixCls, props: { overlay, theme }, } = this;\r\n let content = '';\r\n if (typeof overlay === 'function') {\r\n content = overlay();\r\n }\r\n else if (overlay) {\r\n content = overlay;\r\n }\r\n else {\r\n content = title || '';\r\n }\r\n const arrowCls = `${prefixCls}-popup-arrow`;\r\n const contentCls = `${prefixCls}-popup-inner`;\r\n return (<div>\n <div className={`${arrowCls} ${arrowCls}-${theme}`} key=\"arrow\"/>\n <div className={`${contentCls} ${contentCls}-${theme}`} key=\"content\">\n {content}\n </div>\n </div>);\r\n }\r\n get placements() {\r\n const { builtinPlacements, arrowPointAtCenter, autoAdjustOverflow } = this.props;\r\n return (builtinPlacements ||\r\n getPlacements({\r\n arrowPointAtCenter,\r\n verticalArrowShift: 8,\r\n autoAdjustOverflow,\r\n }));\r\n }\r\n render() {\r\n const { prefixCls, popupContent, props: { children, placement, onHiddenChange, trigger, defaultHidden, hidden, ...restProps }, } = this;\r\n const child = Children.map(children, node => {\r\n if (node && !isValidElement(node)) {\r\n return <span key={`text-${node}`}>{node}</span>;\r\n }\r\n return node;\r\n });\r\n const extraProps = { ...restProps };\r\n if ('hidden' in this.props) {\r\n extraProps.popupHidden = hidden;\r\n }\r\n return (<Trigger prefixCls={prefixCls} action={trigger} builtinPlacements={this.placements} popupPlacement={placement} popupContent={popupContent} onPopupHiddenChange={onHiddenChange} defaultPopupHidden={defaultHidden} {...extraProps}>\n {child}\n </Trigger>);\r\n }\r\n}\r\nTooltip.displayName = 'Tooltip';\r\nTooltip.propTypes = {\r\n title: PropTypes.any,\r\n arrowPointAtCenter: PropTypes.bool,\r\n autoAdjustOverflow: PropTypes.bool,\r\n defaultHidden: PropTypes.bool,\r\n mouseEnterDelay: PropTypes.number,\r\n mouseLeaveDelay: PropTypes.number,\r\n placement: PropTypes.oneOf([\r\n 'top',\r\n 'topLeft',\r\n 'topRight',\r\n 'bottom',\r\n 'bottomLeft',\r\n 'bottomRight',\r\n 'left',\r\n 'leftTop',\r\n 'leftBottom',\r\n 'right',\r\n 'rightTop',\r\n 'rightBottom',\r\n ]),\r\n trigger: PropTypes.arrayOf(PropTypes.oneOf([Action.click, Action.hover, Action.contextMenu, Action.focus])),\r\n hidden: PropTypes.bool,\r\n onHiddenChange: PropTypes.func,\r\n suffixCls: PropTypes.string,\r\n transitionName: PropTypes.string,\r\n theme: PropTypes.oneOf(['light', 'dark']),\r\n};\r\nTooltip.defaultProps = {\r\n suffixCls: 'tooltip',\r\n placement: 'bottom',\r\n transitionName: 'zoom-big-fast',\r\n mouseEnterDelay: 100,\r\n mouseLeaveDelay: 100,\r\n arrowPointAtCenter: false,\r\n autoAdjustOverflow: true,\r\n theme: 'dark',\r\n defaultHidden: true,\r\n trigger: [Action.hover],\r\n};\r\n","import Tooltip from './Tooltip';\r\nexport default Tooltip;\r\n","export var ShowHelp;\r\n(function (ShowHelp) {\r\n ShowHelp[\"tooltip\"] = \"tooltip\";\r\n ShowHelp[\"newLine\"] = \"newLine\";\r\n ShowHelp[\"none\"] = \"none\";\r\n})(ShowHelp || (ShowHelp = {}));\r\n","import isNumber from 'lodash/isNumber';\r\nimport { LabelLayout } from './enum';\r\nexport const defaultLabelWidth = 100;\r\nexport const defaultLabelLayout = LabelLayout.horizontal;\r\nexport const defaultColumns = 1;\r\nexport const FIELD_SUFFIX = 'field';\r\nexport function normalizeLabelWidth(labelWidth, columns) {\r\n if (isNumber(labelWidth)) {\r\n return new Array(columns).fill(labelWidth);\r\n }\r\n const labelWidths = new Array(columns).fill(defaultLabelWidth);\r\n labelWidth.slice(0, columns).forEach((width, index) => (labelWidths[index] = width));\r\n return labelWidths;\r\n}\r\nexport function getProperty(props, key, dataSet, record) {\r\n if (props[key]) {\r\n return props[key];\r\n }\r\n const { name } = props;\r\n const field = record ? record.getField(name) : dataSet && dataSet.getField(name);\r\n if (field) {\r\n const fieldProperty = field.get(key);\r\n if (fieldProperty) {\r\n return fieldProperty;\r\n }\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\nimport Icon from '../icon';\r\nimport { stopEvent, stopPropagation } from '../_util/EventManager';\r\nexport default class CloseButton extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.handleClick = (e) => {\r\n stopEvent(e);\r\n const { onClose, value, index } = this.props;\r\n onClose(e, value, index);\r\n };\r\n }\r\n render() {\r\n return (<Icon type=\"cancel\" onClick={this.handleClick} onFocus={stopPropagation} onMouseDown={stopEvent} tabIndex={-1}/>);\r\n }\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport Map from 'core-js/library/fn/map';\r\nimport React, { cloneElement, isValidElement, } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action, computed, isArrayLike, observable, runInAction, toJS } from 'mobx';\r\nimport classNames from 'classnames';\r\nimport omit from 'lodash/omit';\r\nimport isNumber from 'lodash/isNumber';\r\nimport isString from 'lodash/isString';\r\nimport isNil from 'lodash/isNil';\r\nimport defaultTo from 'lodash/defaultTo';\r\nimport { isMoment } from 'moment';\r\nimport { observer } from 'mobx-react';\r\nimport noop from 'lodash/noop';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport { getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport autobind from '../_util/autobind';\r\nimport Validator from '../validator/Validator';\r\nimport FormContext from '../form/FormContext';\r\nimport DataSetComponent from '../data-set/DataSetComponent';\r\nimport Icon from '../icon';\r\nimport Tooltip from '../tooltip';\r\nimport isEmpty from '../_util/isEmpty';\r\nimport { FieldTrim, FieldType } from '../data-set/enum';\r\nimport { ShowHelp } from './enum';\r\nimport { FIELD_SUFFIX } from '../form/utils';\r\nimport { LabelLayout } from '../form/enum';\r\nimport Animate from '../animate';\r\nimport CloseButton from './CloseButton';\r\nimport { fromRangeValue, getDateFormatByField, toMultipleValue, toRangeValue } from './utils';\r\nimport isSame from '../_util/isSame';\r\nimport formatString from '../formatter/formatString';\r\nconst map = {};\r\nexport function getFieldsById(id) {\r\n if (!map[id]) {\r\n map[id] = [];\r\n }\r\n return map[id];\r\n}\r\nexport class FormField extends DataSetComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.emptyValue = null;\r\n }\r\n get validator() {\r\n const { field } = this;\r\n if (field) {\r\n return field.validator;\r\n }\r\n return new Validator(undefined, this);\r\n }\r\n get name() {\r\n return this.observableProps.name;\r\n }\r\n get value() {\r\n return this.observableProps.value;\r\n }\r\n set value(value) {\r\n runInAction(() => {\r\n this.observableProps.value = value;\r\n });\r\n }\r\n get labelLayout() {\r\n return this.props.labelLayout || this.context.labelLayout;\r\n }\r\n get hasFloatLabel() {\r\n const { labelLayout } = this;\r\n return labelLayout === LabelLayout.float;\r\n }\r\n get isControlled() {\r\n return this.props.value !== undefined;\r\n }\r\n get pristine() {\r\n return this.props.pristine || this.context.pristine;\r\n }\r\n get defaultValidationMessages() {\r\n return {};\r\n }\r\n get editable() {\r\n return !this.isReadOnly();\r\n }\r\n get dataSet() {\r\n const { record } = this;\r\n if (record) {\r\n return record.dataSet;\r\n }\r\n return this.observableProps.dataSet;\r\n }\r\n get record() {\r\n const { record, dataSet, dataIndex } = this.observableProps;\r\n if (record) {\r\n return record;\r\n }\r\n if (dataSet) {\r\n if (isNumber(dataIndex)) {\r\n return dataSet.get(dataIndex);\r\n }\r\n return dataSet.current;\r\n }\r\n return undefined;\r\n }\r\n get field() {\r\n const { record, dataSet, name } = this;\r\n const { displayName } = this.constructor;\r\n warning(dataSet && displayName !== 'Output' ? !!name : true, `${displayName} with binding DataSet need property name.`);\r\n if (name) {\r\n const recordField = record ? record.getField(name) : undefined;\r\n const dsField = dataSet ? dataSet.getField(name) : undefined;\r\n if (recordField) {\r\n return recordField;\r\n }\r\n return dsField;\r\n }\r\n return undefined;\r\n }\r\n get isValid() {\r\n return this.pristine || (this.field ? this.field.valid : this.validator.validity.valid);\r\n }\r\n get multiple() {\r\n return this.getProp('multiple');\r\n }\r\n get trim() {\r\n return this.getProp('trim');\r\n }\r\n get format() {\r\n return this.getProp('format');\r\n }\r\n get range() {\r\n return this.getProp('range');\r\n }\r\n defaultRenderer({ text, repeat, maxTagTextLength }) {\r\n return repeat !== undefined &&\r\n maxTagTextLength &&\r\n isString(text) &&\r\n text.length > maxTagTextLength\r\n ? `${text.slice(0, maxTagTextLength)}...`\r\n : text;\r\n }\r\n /**\r\n * 判断是否应该显示验证信息, 作为属性传给Tooltip\r\n *\r\n * @readonly\r\n * @type {(undefined | boolean)}\r\n * @memberof FormField\r\n */\r\n isValidationMessageHidden(message) {\r\n const { hidden, noValidate } = this.props;\r\n if (hidden || this.pristine || (!this.record && noValidate) || !message) {\r\n return true;\r\n }\r\n }\r\n isEmpty() {\r\n const value = this.getValue();\r\n return isArrayLike(value) ? !value.length : isEmpty(value);\r\n }\r\n getObservableProps(props, context) {\r\n return {\r\n name: props.name,\r\n record: 'record' in props ? props.record : context.record,\r\n dataSet: 'dataSet' in props ? props.dataSet : context.dataSet,\r\n dataIndex: defaultTo(props.dataIndex, context.dataIndex),\r\n value: this.observableProps || 'value' in props ? props.value : props.defaultValue,\r\n };\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'record',\r\n 'defaultValue',\r\n 'dataIndex',\r\n 'onEnterDown',\r\n 'onClear',\r\n 'readOnly',\r\n 'validator',\r\n 'validationRenderer',\r\n 'help',\r\n 'showHelp',\r\n 'renderer',\r\n 'maxTagPlaceholder',\r\n 'maxTagCount',\r\n 'maxTagTextLength',\r\n 'rowIndex',\r\n 'colIndex',\r\n 'labelLayout',\r\n 'labelWidth',\r\n 'pristine',\r\n 'range',\r\n 'trim',\r\n ]);\r\n otherProps.onChange = !this.isDisabled() && !this.isReadOnly() ? this.handleChange : noop;\r\n otherProps.onKeyDown = this.handleKeyDown;\r\n return otherProps;\r\n }\r\n getWrapperClassNames(...args) {\r\n const { prefixCls } = this;\r\n return super.getWrapperClassNames({\r\n [`${prefixCls}-invalid`]: !this.isValid,\r\n [`${prefixCls}-float-label`]: this.hasFloatLabel,\r\n [`${prefixCls}-required`]: this.getProp('required'),\r\n }, ...args);\r\n }\r\n renderWrapper() {\r\n return undefined;\r\n }\r\n renderHelpMessage() {\r\n const { showHelp } = this.props;\r\n const help = this.getProp('help');\r\n if (showHelp === ShowHelp.newLine && help) {\r\n return (<div key=\"help\" className={`${getProPrefixCls(FIELD_SUFFIX)}-help`}>\n {help}\n </div>);\r\n }\r\n }\r\n getLabel() {\r\n return this.getProp('label');\r\n }\r\n renderFloatLabel() {\r\n if (this.hasFloatLabel) {\r\n const label = this.getLabel();\r\n if (label) {\r\n const prefixCls = getProPrefixCls(FIELD_SUFFIX);\r\n const required = this.getProp('required');\r\n const classString = classNames(`${prefixCls}-label`, {\r\n [`${prefixCls}-required`]: required,\r\n });\r\n return (<div className={`${prefixCls}-label-wrapper`}>\n <div className={classString}>{label}</div>\n </div>);\r\n }\r\n }\r\n }\r\n componentDidMount() {\r\n this.addToForm(this.props, this.context);\r\n }\r\n componentWillReceiveProps(nextProps, nextContext) {\r\n super.componentWillReceiveProps(nextProps, nextContext);\r\n this.removeFromForm(this.props, this.context);\r\n this.addToForm(nextProps, nextContext);\r\n if (!this.record && this.props.value !== nextProps.value) {\r\n this.validate(nextProps.value);\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.removeFromForm(this.props, this.context);\r\n }\r\n addToForm(props, context) {\r\n const { form } = props;\r\n const { formNode } = context;\r\n if (form) {\r\n let fields = map[form];\r\n if (!fields) {\r\n fields = [];\r\n map[form] = fields;\r\n }\r\n fields.push(this);\r\n }\r\n else if (formNode) {\r\n formNode.addField(this);\r\n }\r\n }\r\n removeFromForm(props, context) {\r\n const { form } = props;\r\n const { formNode } = context;\r\n if (form) {\r\n const fields = map[form];\r\n if (fields) {\r\n const index = fields.indexOf(this);\r\n if (index !== -1) {\r\n fields.splice(index, 1);\r\n }\r\n }\r\n }\r\n else if (formNode) {\r\n formNode.removeField(this);\r\n }\r\n }\r\n renderValidationMessage(validationResult) {\r\n const validationMessage = this.getValidationMessage(validationResult);\r\n if (validationMessage) {\r\n return (<div className={getProPrefixCls('validation-message')}>\n {this.context.labelLayout !== LabelLayout.float && <Icon type=\"error\"/>}\n <span>{validationMessage}</span>\n </div>);\r\n }\r\n }\r\n getValidatorProps() {\r\n const { name, range, multiple, defaultValidationMessages } = this;\r\n const type = this.getFieldType();\r\n const required = this.getProp('required');\r\n const customValidator = this.getProp('validator');\r\n const label = this.getProp('label');\r\n return {\r\n type,\r\n required,\r\n customValidator,\r\n name,\r\n label,\r\n range,\r\n multiple,\r\n defaultValidationMessages,\r\n form: this.context.formNode,\r\n };\r\n }\r\n getValidationMessage(validationResult = this.validator.currentValidationResult) {\r\n const { validator, props: { validationRenderer }, } = this;\r\n if (validationResult) {\r\n if (validationRenderer) {\r\n const validationMessage = validationRenderer(validationResult, validator.props);\r\n if (validationMessage) {\r\n return validationMessage;\r\n }\r\n }\r\n return validationResult.validationMessage;\r\n }\r\n }\r\n handleFocus(e) {\r\n super.handleFocus(e);\r\n if (this.range) {\r\n this.beginRange();\r\n }\r\n }\r\n handleBlur(e) {\r\n super.handleBlur(e);\r\n if (this.range) {\r\n this.endRange();\r\n }\r\n }\r\n handleChange(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n handleKeyDown(e) {\r\n const { onKeyDown = noop, onEnterDown = noop } = this.props;\r\n onKeyDown(e);\r\n if (!e.isDefaultPrevented()) {\r\n switch (e.keyCode) {\r\n case KeyCode.ENTER:\r\n this.handleEnterDown(e);\r\n onEnterDown(e);\r\n break;\r\n case KeyCode.ESC:\r\n this.blur();\r\n break;\r\n default:\r\n }\r\n }\r\n }\r\n handleEnterDown(e) {\r\n if (this.multiple) {\r\n if (this.range) {\r\n this.endRange();\r\n e.preventDefault();\r\n }\r\n else {\r\n const { value } = e.target;\r\n if (value !== '') {\r\n this.syncValueOnBlur(value);\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n else {\r\n this.blur();\r\n }\r\n }\r\n syncValueOnBlur(value) {\r\n this.prepareSetValue(value);\r\n }\r\n handleMutipleValueRemove(e, value, index) {\r\n this.removeValue(value, index);\r\n e.stopPropagation();\r\n }\r\n getDateFormat() {\r\n return getDateFormatByField(this.field, this.getFieldType());\r\n }\r\n processValue(value) {\r\n if (!isNil(value)) {\r\n if (isMoment(value)) {\r\n return value.format(this.getDateFormat());\r\n }\r\n return value.toString();\r\n }\r\n return '';\r\n }\r\n isReadOnly() {\r\n return (this.getProp('readOnly') ||\r\n this.pristine ||\r\n (this.isControlled && !this.props.onChange));\r\n }\r\n getDataSetValue() {\r\n const { record, pristine, name } = this;\r\n if (record) {\r\n return pristine ? record.getPristineValue(name) : record.get(name);\r\n }\r\n }\r\n getTextNode() {\r\n const text = this.isFocused && this.editable\r\n ? this.processValue(this.getValue())\r\n : this.processRenderer(this.getValue());\r\n return text;\r\n }\r\n getText(value) {\r\n return this.processValue(value);\r\n }\r\n processText(value) {\r\n return value;\r\n }\r\n processRenderer(value, repeat) {\r\n const { record, dataSet, props: { renderer = this.defaultRenderer, name, maxTagTextLength }, } = this;\r\n const text = this.processText(this.getText(value));\r\n return renderer\r\n ? renderer({\r\n value,\r\n text,\r\n record,\r\n dataSet,\r\n name,\r\n repeat,\r\n maxTagTextLength,\r\n })\r\n : text;\r\n }\r\n processRangeValue(value, repeat) {\r\n if (repeat === undefined) {\r\n value = this.rangeValue;\r\n }\r\n if (value === undefined && !this.multiple) {\r\n value = toRangeValue(this.getValue(), this.range);\r\n }\r\n return (value || []).map(item => this.processRenderer(item, repeat));\r\n }\r\n getOldValue() {\r\n return this.getValue();\r\n }\r\n getValue() {\r\n const { name } = this;\r\n if (this.dataSet && name) {\r\n return this.getDataSetValue();\r\n }\r\n return this.value;\r\n }\r\n getValues() {\r\n return toMultipleValue(this.getValue(), this.range);\r\n }\r\n addValue(...values) {\r\n if (this.multiple) {\r\n const oldValues = this.getValues();\r\n if (values.length) {\r\n this.setValue([...oldValues, ...values]);\r\n }\r\n else if (!oldValues.length) {\r\n this.setValue(this.emptyValue);\r\n }\r\n }\r\n else {\r\n this.setValue(values.pop());\r\n }\r\n }\r\n isLowerRange(_value1, _value2) {\r\n return false;\r\n }\r\n prepareSetValue(...value) {\r\n const { rangeTarget, range, rangeValue } = this;\r\n const values = value.filter(item => !isEmpty(item));\r\n if (range) {\r\n if (rangeTarget !== undefined && rangeValue) {\r\n const [start, end] = rangeValue;\r\n const newValue = values.pop();\r\n rangeValue[rangeTarget] = newValue;\r\n if (rangeTarget === 0 && newValue && end && this.isLowerRange(end, newValue)) {\r\n rangeValue[rangeTarget] = end;\r\n rangeValue[1] = newValue;\r\n }\r\n if (rangeTarget === 1 && newValue && start && this.isLowerRange(newValue, start)) {\r\n rangeValue[rangeTarget] = start;\r\n rangeValue[0] = newValue;\r\n }\r\n }\r\n }\r\n else {\r\n this.addValue(...values);\r\n }\r\n }\r\n removeValues(values, index = 0) {\r\n let repeat;\r\n this.setValue(values.reduce((oldValues, value) => {\r\n repeat = 0;\r\n return oldValues.filter(v => {\r\n if (this.getValueKey(v) === this.getValueKey(value)) {\r\n if (index === -1 || repeat === index) {\r\n this.afterRemoveValue(value, repeat++);\r\n return false;\r\n }\r\n repeat++;\r\n }\r\n return true;\r\n });\r\n }, this.getValues()));\r\n }\r\n removeValue(value, index = 0) {\r\n this.removeValues([value], index);\r\n }\r\n afterRemoveValue(_value, _repeat) { }\r\n beginRange() {\r\n this.setRangeTarget(0);\r\n this.rangeValue = this.multiple\r\n ? [undefined, undefined]\r\n : toRangeValue(this.getValue(), this.range);\r\n }\r\n endRange() {\r\n if (this.rangeValue) {\r\n const values = this.rangeValue.slice();\r\n // if (this.multiple) {\r\n this.rangeValue = undefined;\r\n // }\r\n if (!values.every(isNil)) {\r\n this.addValue(fromRangeValue(values, this.range));\r\n }\r\n }\r\n }\r\n setRangeTarget(target) {\r\n this.rangeTarget = target;\r\n }\r\n setValue(value) {\r\n if (!this.isReadOnly()) {\r\n if (this.multiple || this.range\r\n ? isArrayLike(value) && !value.length\r\n : isNil(value) || value === '') {\r\n value = this.emptyValue;\r\n }\r\n const { name, dataSet, trim, format, observableProps: { dataIndex }, } = this;\r\n const { onChange = noop } = this.props;\r\n const { formNode } = this.context;\r\n const old = this.getOldValue();\r\n if (dataSet && name) {\r\n (this.record || dataSet.create({}, dataIndex)).set(name, value);\r\n }\r\n else {\r\n value = formatString(value, {\r\n trim,\r\n format,\r\n });\r\n this.validate(value);\r\n }\r\n if (!isSame(old, value)) {\r\n onChange(value, toJS(old), formNode);\r\n }\r\n this.value = value;\r\n }\r\n }\r\n renderRangeValue(readOnly, value, repeat) {\r\n const rangeValue = this.processRangeValue(value, repeat);\r\n if (readOnly) {\r\n if (rangeValue.length) {\r\n return (<>\n {rangeValue[0]}~{rangeValue[1]}\n </>);\r\n }\r\n }\r\n }\r\n getValueKey(v) {\r\n if (isArrayLike(v)) {\r\n return v.join(',');\r\n }\r\n return v;\r\n }\r\n renderMultipleValues(readOnly) {\r\n const values = this.getValues();\r\n const valueLength = values.length;\r\n const { prefixCls, range, props: { maxTagCount = valueLength, maxTagPlaceholder }, } = this;\r\n const { validationResults } = this.validator;\r\n const repeats = new Map();\r\n const blockClassName = classNames({\r\n [`${prefixCls}-multiple-block-disabled`]: this.isDisabled(),\r\n }, `${prefixCls}-multiple-block`);\r\n const tags = values.slice(0, maxTagCount).map(v => {\r\n const key = this.getValueKey(v);\r\n const repeat = repeats.get(key) || 0;\r\n const text = range ? this.renderRangeValue(true, v, repeat) : this.processRenderer(v, repeat);\r\n repeats.set(key, repeat + 1);\r\n if (!isNil(text)) {\r\n const validationResult = validationResults.find(error => error.value === v);\r\n const className = classNames({\r\n [`${prefixCls}-multiple-block-invalid`]: validationResult,\r\n }, blockClassName);\r\n const validationMessage = validationResult && this.renderValidationMessage(validationResult);\r\n const closeBtn = !this.isDisabled() && !this.isReadOnly() && (<CloseButton onClose={this.handleMutipleValueRemove} value={v} index={repeat}/>);\r\n const inner = readOnly ? (<span className={className}>{text}</span>) : (<li className={className}>\n <div>{text}</div>\n {closeBtn}\n </li>);\r\n return (<Tooltip key={`${key}-${repeat}`} title={validationMessage} theme=\"light\" placement=\"bottomLeft\" hidden={this.isValidationMessageHidden(validationMessage)}>\n {inner}\n </Tooltip>);\r\n }\r\n return undefined;\r\n });\r\n if (valueLength > maxTagCount) {\r\n let content = `+ ${valueLength - maxTagCount} ...`;\r\n if (maxTagPlaceholder) {\r\n const omittedValues = values.slice(maxTagCount, valueLength);\r\n content =\r\n typeof maxTagPlaceholder === 'function'\r\n ? maxTagPlaceholder(omittedValues)\r\n : maxTagPlaceholder;\r\n }\r\n tags.push(<li key=\"maxTagPlaceholder\" className={blockClassName}>\n <div>{content}</div>\n </li>);\r\n }\r\n return tags;\r\n }\r\n clear() {\r\n const { onClear = noop } = this.props;\r\n this.setValue(this.emptyValue);\r\n this.rangeValue = this.isFocused ? [undefined, undefined] : undefined;\r\n onClear();\r\n }\r\n async checkValidity() {\r\n const { name } = this;\r\n const valid = await this.validate();\r\n const { onInvalid = noop } = this.props;\r\n if (!valid) {\r\n const { validationResults, validity } = this.validator;\r\n onInvalid(validationResults, validity, name);\r\n }\r\n return valid;\r\n }\r\n async validate(value) {\r\n let invalid = false;\r\n if (!this.props.noValidate) {\r\n if (value === undefined) {\r\n value = this.multiple ? this.getValues() : this.getValue();\r\n }\r\n const { validator } = this;\r\n validator.reset();\r\n invalid = !(await validator.checkValidity(value));\r\n }\r\n return !invalid;\r\n }\r\n isDisabled() {\r\n const { disabled } = this.context;\r\n const { field, record } = this;\r\n if (disabled) {\r\n return disabled;\r\n }\r\n if (field) {\r\n const cascadeMap = field.get('cascadeMap');\r\n if (cascadeMap &&\r\n (!record || Object.keys(cascadeMap).some(cascade => !record.get(cascadeMap[cascade])))) {\r\n return true;\r\n }\r\n }\r\n return super.isDisabled();\r\n }\r\n reset() {\r\n if (!this.isControlled && !this.dataSet) {\r\n this.setValue(this.props.defaultValue);\r\n }\r\n this.validator.reset();\r\n }\r\n getFieldType() {\r\n const { field } = this;\r\n return (field && field.get('type')) || FieldType.string;\r\n }\r\n getProp(propName) {\r\n const { field } = this;\r\n return defaultTo(field && field.get(propName), this.props[propName]);\r\n }\r\n render() {\r\n const validationMessage = this.renderValidationMessage();\r\n const wrapper = this.renderWrapper();\r\n const help = this.renderHelpMessage();\r\n return this.hasFloatLabel ? ([\r\n isValidElement(wrapper) && cloneElement(wrapper, { key: 'wrapper' }),\r\n <Animate transitionName=\"show-error\" component=\"\" transitionAppear key=\"validation-message\">\n {validationMessage}\n </Animate>,\r\n help,\r\n ]) : (<Tooltip title={!!(this.multiple && this.getValues().length) ||\r\n this.isValidationMessageHidden(validationMessage)\r\n ? null\r\n : validationMessage} theme=\"light\" placement=\"bottomLeft\">\n {wrapper}\n {help}\n </Tooltip>);\r\n }\r\n}\r\nFormField.contextType = FormContext;\r\nFormField.propTypes = {\r\n type: PropTypes.string,\r\n /**\r\n * 字段名\r\n */\r\n name: PropTypes.string,\r\n /**\r\n * <受控>当前值\r\n */\r\n value: PropTypes.any,\r\n /**\r\n * 默认值\r\n */\r\n defaultValue: PropTypes.any,\r\n /**\r\n * 是否必输\r\n */\r\n required: PropTypes.bool,\r\n /**\r\n * 是否只读\r\n */\r\n readOnly: PropTypes.bool,\r\n /**\r\n * 对照表单id\r\n */\r\n form: PropTypes.string,\r\n /**\r\n * 对照record在DataSet中的index\r\n * @default dataSet.currentIndex\r\n */\r\n dataIndex: PropTypes.number,\r\n /**\r\n * 是否是多值\r\n * @default false\r\n */\r\n multiple: PropTypes.bool,\r\n /**\r\n * 表单下控件跨越的行数\r\n */\r\n rowSpan: PropTypes.number,\r\n /**\r\n * 表单下控件跨越的列数\r\n */\r\n colSpan: PropTypes.number,\r\n /**\r\n * 校验器\r\n * (value: any, name?: string, form?: ReactInstance) => string | boolean | Promise<string | boolean>\r\n */\r\n validator: PropTypes.func,\r\n /**\r\n * 校验失败回调\r\n * (validationMessage: ReactNode, validity: Validity, name?: string) => void\r\n */\r\n onInvalid: PropTypes.func,\r\n /**\r\n * 额外信息,常用作提示\r\n */\r\n help: PropTypes.string,\r\n /**\r\n * 显示提示信息的方式\r\n */\r\n showHelp: PropTypes.oneOf([ShowHelp.tooltip, ShowHelp.newLine, ShowHelp.none]),\r\n /**\r\n * 渲染器\r\n */\r\n renderer: PropTypes.func,\r\n /**\r\n * 校验信息渲染器\r\n */\r\n validationRenderer: PropTypes.func,\r\n /**\r\n * 多值标签超出最大数量时的占位描述\r\n */\r\n maxTagPlaceholder: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\r\n /**\r\n * 多值标签最大数量\r\n */\r\n maxTagCount: PropTypes.number,\r\n /**\r\n * 多值标签文案最大长度\r\n */\r\n maxTagTextLength: PropTypes.number,\r\n /**\r\n * 显示原始值\r\n */\r\n pristine: PropTypes.bool,\r\n /**\r\n * 字符串值是否去掉首尾空格\r\n * 可选值: both left right none\r\n * @default: both\r\n */\r\n trim: PropTypes.oneOf([FieldTrim.both, FieldTrim.left, FieldTrim.right, FieldTrim.none]),\r\n /**\r\n * 值变化回调\r\n * (value: any, oldValue: any, form?: ReactInstance) => void\r\n */\r\n onChange: PropTypes.func,\r\n /**\r\n * 输入回调\r\n */\r\n onInput: PropTypes.func,\r\n /**\r\n * 键盘回车回调\r\n */\r\n onEnterDown: PropTypes.func,\r\n ...DataSetComponent.propTypes,\r\n};\r\nFormField.defaultProps = {\r\n readOnly: false,\r\n noValidate: false,\r\n showHelp: 'newLine',\r\n trim: FieldTrim.both,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], FormField.prototype, \"rangeTarget\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], FormField.prototype, \"rangeValue\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"validator\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"name\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"value\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"defaultValidationMessages\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"editable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"dataSet\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"record\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"field\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"isValid\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"multiple\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"trim\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"format\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], FormField.prototype, \"range\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FormField.prototype, \"defaultRenderer\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FormField.prototype, \"handleFocus\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FormField.prototype, \"handleBlur\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FormField.prototype, \"handleChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FormField.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FormField.prototype, \"handleMutipleValueRemove\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FormField.prototype, \"prepareSetValue\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FormField.prototype, \"beginRange\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FormField.prototype, \"endRange\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FormField.prototype, \"setRangeTarget\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FormField.prototype, \"setValue\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FormField.prototype, \"clear\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FormField.prototype, \"reset\", null);\r\nlet ObserverFormField = class ObserverFormField extends FormField {\r\n};\r\nObserverFormField.defaultProps = FormField.defaultProps;\r\nObserverFormField = tslib_1.__decorate([\r\n observer\r\n], ObserverFormField);\r\nexport default ObserverFormField;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport isNumber from 'lodash/isNumber';\r\nimport C7NProgress from 'choerodon-ui/lib/progress';\r\nimport { FormField } from '../field/FormField';\r\nlet Progress = class Progress extends FormField {\r\n getValue() {\r\n const value = super.getValue();\r\n if (isNumber(value)) {\r\n return value;\r\n }\r\n return this.props.percent;\r\n }\r\n render() {\r\n return (<C7NProgress {...omit(this.props, ['dataSet', 'showHelp', 'renderer'])} percent={this.getValue()}/>);\r\n }\r\n};\r\nProgress.displayName = 'Progress';\r\nProgress = tslib_1.__decorate([\r\n observer\r\n], Progress);\r\nexport default Progress;\r\n","export var ButtonColor;\r\n(function (ButtonColor) {\r\n ButtonColor[\"default\"] = \"default\";\r\n ButtonColor[\"primary\"] = \"primary\";\r\n ButtonColor[\"gray\"] = \"gray\";\r\n ButtonColor[\"blue\"] = \"blue\";\r\n ButtonColor[\"red\"] = \"red\";\r\n ButtonColor[\"green\"] = \"green\";\r\n ButtonColor[\"yellow\"] = \"yellow\";\r\n ButtonColor[\"purple\"] = \"purple\";\r\n ButtonColor[\"dark\"] = \"dark\";\r\n})(ButtonColor || (ButtonColor = {}));\r\nexport var FuncType;\r\n(function (FuncType) {\r\n FuncType[\"flat\"] = \"flat\";\r\n FuncType[\"raised\"] = \"raised\";\r\n})(FuncType || (FuncType = {}));\r\nexport var ButtonType;\r\n(function (ButtonType) {\r\n ButtonType[\"button\"] = \"button\";\r\n ButtonType[\"submit\"] = \"submit\";\r\n ButtonType[\"reset\"] = \"reset\";\r\n})(ButtonType || (ButtonType = {}));\r\nexport var ButtonWaitType;\r\n(function (ButtonWaitType) {\r\n ButtonWaitType[\"throttle\"] = \"throttle\";\r\n ButtonWaitType[\"debounce\"] = \"debounce\";\r\n})(ButtonWaitType || (ButtonWaitType = {}));\r\n","import Progress from './Progress';\r\nexport default Progress;\r\n","import Ripple from 'choerodon-ui/lib/ripple';\r\nexport default Ripple;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Children } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport debounce from 'lodash/debounce';\r\nimport isString from 'lodash/isString';\r\nimport { computed, runInAction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport { ProgressType } from 'choerodon-ui/lib/progress/enum';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport Icon from '../icon';\r\nimport FormContext from '../form/FormContext';\r\nimport Progress from '../progress';\r\nimport Ripple from '../ripple';\r\nimport { ButtonColor, ButtonType, ButtonWaitType, FuncType } from './enum';\r\nimport { DataSetStatus } from '../data-set/enum';\r\nimport { Size } from '../core/enum';\r\nimport DataSetComponent from '../data-set/DataSetComponent';\r\nimport autobind from '../_util/autobind';\r\nlet Button = class Button extends DataSetComponent {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.handleClickWait = this.getHandleClick(props);\r\n }\r\n get loading() {\r\n const { type, dataSet, loading } = this.observableProps;\r\n return (loading ||\r\n (type === ButtonType.submit && !!dataSet && dataSet.status === DataSetStatus.submitting));\r\n }\r\n set loading(loading) {\r\n runInAction(() => {\r\n this.observableProps.loading = loading;\r\n });\r\n }\r\n getObservableProps(props, context) {\r\n return {\r\n dataSet: 'dataSet' in props ? props.dataSet : context.dataSet,\r\n loading: props.loading,\r\n type: props.type,\r\n };\r\n }\r\n componentWillReceiveProps(nextProps, nextContext) {\r\n super.componentWillReceiveProps(nextProps, nextContext);\r\n const { wait, waitType } = this.props;\r\n if (wait !== nextProps.wait || waitType !== nextProps.waitType) {\r\n this.handleClickWait = this.getHandleClick(nextProps);\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.handleClickWait.cancel();\r\n }\r\n getHandleClick(props) {\r\n const { wait, waitType } = props;\r\n if (wait && waitType) {\r\n const options = { leading: true, trailing: true };\r\n if (waitType === ButtonWaitType.throttle) {\r\n options.trailing = false;\r\n options.maxWait = wait;\r\n }\r\n else if (waitType === ButtonWaitType.debounce) {\r\n options.leading = false;\r\n }\r\n return debounce(this.handleClick, wait, options);\r\n }\r\n return debounce(this.handleClick, 0);\r\n }\r\n handleClickIfBubble(e) {\r\n const { wait, waitType } = this.props;\r\n if (wait && waitType) {\r\n e.stopPropagation();\r\n this.handleClickWait(e);\r\n }\r\n else {\r\n this.handleClick(e);\r\n }\r\n }\r\n async handleClick(e) {\r\n const { onClick } = this.props;\r\n if (onClick) {\r\n const afterClick = onClick(e);\r\n if (afterClick && afterClick instanceof Promise) {\r\n try {\r\n this.loading = true;\r\n await afterClick;\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n }\r\n }\r\n }\r\n isDisabled() {\r\n const { disabled } = this.context;\r\n return disabled || super.isDisabled() || this.loading;\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'icon',\r\n 'funcType',\r\n 'color',\r\n 'loading',\r\n 'wait',\r\n 'waitType',\r\n ]);\r\n if (!this.isDisabled()) {\r\n otherProps.onClick = this.handleClickIfBubble;\r\n }\r\n return otherProps;\r\n }\r\n getClassName(...props) {\r\n const { prefixCls, props: { color, funcType = getConfig('buttonFuncType') || FuncType.raised, children, icon }, } = this;\r\n const childrenCount = Children.count(children);\r\n return super.getClassName({\r\n [`${prefixCls}-${funcType}`]: funcType,\r\n [`${prefixCls}-${color}`]: color,\r\n [`${prefixCls}-icon-only`]: icon\r\n ? childrenCount === 0 || children === false\r\n : childrenCount === 1 && children.type === Icon,\r\n }, ...props);\r\n }\r\n render() {\r\n const { children, icon, href } = this.props;\r\n const buttonIcon = this.loading ? (<Progress key=\"loading\" type={ProgressType.loading} size={Size.small}/>) : (icon && <Icon type={icon}/>);\r\n const hasString = Children.toArray(children).some(child => isString(child));\r\n const Cmp = href ? 'a' : 'button';\r\n const props = this.getMergedProps();\r\n return (<Ripple disabled={this.isDisabled()}>\n <Cmp {...(href ? omit(props, ['type']) : props)}>\n {buttonIcon}\n {hasString ? <span>{children}</span> : children}\n </Cmp>\n </Ripple>);\r\n }\r\n};\r\nButton.displayName = 'Button';\r\nButton.contextType = FormContext;\r\nButton.propTypes = {\r\n /**\r\n * 按钮展现模式\r\n * 可选值:'flat' | 'raised'\r\n * @default raised\r\n */\r\n funcType: PropTypes.oneOf([FuncType.flat, FuncType.raised]),\r\n /**\r\n * 按钮颜色风格\r\n * 可选值:'default' | 'primary' | 'gray' | 'blue' | 'red' | 'green' | 'yellow' | 'purple' | 'dark'\r\n * @default 'default'\r\n */\r\n color: PropTypes.oneOf([\r\n ButtonColor.default,\r\n ButtonColor.primary,\r\n ButtonColor.gray,\r\n ButtonColor.blue,\r\n ButtonColor.red,\r\n ButtonColor.green,\r\n ButtonColor.yellow,\r\n ButtonColor.purple,\r\n ButtonColor.dark,\r\n ]),\r\n /**\r\n * 按钮类型\r\n * 可选值:'button' | 'submit' | 'reset'\r\n * @default 'button'\r\n */\r\n type: PropTypes.oneOf([ButtonType.button, ButtonType.submit, ButtonType.reset]),\r\n /**\r\n * 按钮是否是加载状态\r\n */\r\n loading: PropTypes.bool,\r\n /**\r\n * 点击跳转的地址,指定此属性 button 的行为和 a 链接一致\r\n */\r\n href: PropTypes.string,\r\n /**\r\n * 相当于 a 链接的 target 属性,href 存在时生效\r\n */\r\n target: PropTypes.string,\r\n /**\r\n * 点击等待时间\r\n */\r\n wait: PropTypes.number,\r\n /**\r\n * 点击间隔类型,可选值:throttle | debounce\r\n * @default throttle\r\n */\r\n waitType: PropTypes.oneOf([ButtonWaitType.throttle, ButtonWaitType.debounce]),\r\n ...DataSetComponent.propTypes,\r\n};\r\nButton.defaultProps = {\r\n suffixCls: 'btn',\r\n type: ButtonType.button,\r\n color: ButtonColor.default,\r\n loading: false,\r\n waitType: ButtonWaitType.throttle,\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], Button.prototype, \"loading\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Button.prototype, \"handleClickIfBubble\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Button.prototype, \"handleClick\", null);\r\nButton = tslib_1.__decorate([\r\n observer\r\n], Button);\r\nexport default Button;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport C7NSpin from 'choerodon-ui/lib/spin';\r\nimport { DataSetStatus } from '../data-set/enum';\r\nimport DataSetComponent from '../data-set/DataSetComponent';\r\nlet Spin = class Spin extends DataSetComponent {\r\n render() {\r\n const { dataSet, ...otherProps } = this.props;\r\n const props = {};\r\n if (dataSet) {\r\n props.spinning = dataSet.status !== DataSetStatus.ready;\r\n }\r\n return <C7NSpin {...otherProps} {...props}/>;\r\n }\r\n};\r\nSpin.displayName = 'Spin';\r\nSpin = tslib_1.__decorate([\r\n observer\r\n], Spin);\r\nexport default Spin;\r\n","import React, { Component } from 'react';\r\nimport Spin from '../spin';\r\nimport exception from './exception';\r\nconst asyncComponent = (importComponent) => {\r\n class AsyncComponent extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.state = {};\r\n }\r\n componentDidMount() {\r\n importComponent().then(({ default: component }) => {\r\n this.setState({ component });\r\n }, exception);\r\n }\r\n render() {\r\n const { component: Cmp } = this.state;\r\n return Cmp\r\n ? <Cmp {...this.props}/>\r\n : <Spin />;\r\n }\r\n }\r\n return AsyncComponent;\r\n};\r\nexport default asyncComponent;\r\n","export default class DataSetRequestError extends Error {\r\n constructor(error) {\r\n super(error.message);\r\n this.name = error.name;\r\n this.stack = error.stack;\r\n }\r\n}\r\n","import { isValidElement } from 'react';\r\nimport { isArrayLike } from 'mobx';\r\nimport isNil from 'lodash/isNil';\r\nimport isBoolean from 'lodash/isBoolean';\r\nimport isNumber from 'lodash/isNumber';\r\nimport isString from 'lodash/isString';\r\nexport const suffixCls = 'modal';\r\nexport function normalizeProps(props) {\r\n if (isString(props) ||\r\n isValidElement(props) ||\r\n isBoolean(props) ||\r\n isNil(props) ||\r\n isNumber(props) ||\r\n isArrayLike(props)) {\r\n return {\r\n children: props,\r\n };\r\n }\r\n return props;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, isValidElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport defer from 'lodash/defer';\r\nimport noop from 'lodash/noop';\r\nimport classNames from 'classnames';\r\nimport classes from 'component-classes';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport ViewComponent from '../core/ViewComponent';\r\nimport Icon from '../icon';\r\nimport autobind from '../_util/autobind';\r\nimport Button from '../button/Button';\r\nimport EventManager from '../_util/EventManager';\r\nimport isEmpty from '../_util/isEmpty';\r\nimport { ButtonColor, FuncType } from '../button/enum';\r\nimport asyncComponent from '../_util/AsyncComponent';\r\nimport message from '../message';\r\nimport exception from '../_util/exception';\r\nimport { $l } from '../locale-context';\r\nimport DataSetRequestError from '../data-set/DataSetRequestError';\r\nimport { suffixCls } from './utils';\r\nexport default class Modal extends ViewComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.moveEvent = new EventManager(typeof window === 'undefined' ? undefined : document);\r\n this.okCancelEvent = new EventManager();\r\n this.saveCancelRef = node => (this.cancelButton = node);\r\n this.handleKeyDown = e => {\r\n const { cancelButton } = this;\r\n if (cancelButton && !cancelButton.isDisabled() && e.keyCode === KeyCode.ESC) {\r\n cancelButton.handleClickWait(e);\r\n }\r\n };\r\n this.registerOk = ok => {\r\n this.okCancelEvent.removeEventListener('ok');\r\n this.okCancelEvent.addEventListener('ok', ok);\r\n };\r\n this.registerCancel = cancel => {\r\n this.okCancelEvent.removeEventListener('cancel');\r\n this.okCancelEvent.addEventListener('cancel', cancel);\r\n };\r\n this.getDefaultFooter = (okBtn, cancelBtn) => {\r\n const { okCancel, okFirst = getConfig('modalOkFirst'), drawer } = this.props;\r\n const buttons = [okBtn];\r\n if (okCancel) {\r\n if (okFirst || drawer) {\r\n buttons.push(cancelBtn);\r\n }\r\n else {\r\n buttons.unshift(cancelBtn);\r\n }\r\n }\r\n return <div>{buttons}</div>;\r\n };\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'closable',\r\n 'movable',\r\n 'maskClosable',\r\n 'keyboardClosable',\r\n 'fullScreen',\r\n 'title',\r\n 'footer',\r\n 'close',\r\n 'update',\r\n 'okText',\r\n 'cancelText',\r\n 'okCancel',\r\n 'onClose',\r\n 'onOk',\r\n 'onCancel',\r\n 'destroyOnClose',\r\n 'drawer',\r\n 'afterClose',\r\n 'okProps',\r\n 'cancelProps',\r\n 'border',\r\n 'okFirst',\r\n ]);\r\n if (this.props.keyboardClosable) {\r\n otherProps.autoFocus = true;\r\n otherProps.tabIndex = -1;\r\n otherProps.onKeyDown = this.handleKeyDown;\r\n }\r\n return otherProps;\r\n }\r\n getClassName() {\r\n const { prefixCls, props: { style = {}, fullScreen, drawer, border = getConfig('modalSectionBorder') }, } = this;\r\n return super.getClassName({\r\n [`${prefixCls}-center`]: !drawer && !('left' in style || 'right' in style) && !this.offset,\r\n [`${prefixCls}-fullscreen`]: fullScreen,\r\n [`${prefixCls}-drawer`]: drawer,\r\n [`${prefixCls}-border`]: border,\r\n });\r\n }\r\n render() {\r\n const { prefixCls } = this;\r\n const header = this.getHeader();\r\n const body = this.getBody();\r\n const footer = this.getFooter();\r\n return (<div {...this.getMergedProps()}>\n <div className={`${prefixCls}-content`}>\n {header}\n {body}\n {footer}\n </div>\n </div>);\r\n }\r\n componentWillUpdate({ hidden }) {\r\n if (hidden === false && hidden !== this.props.hidden) {\r\n defer(() => this.focus());\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.moveEvent.clear();\r\n this.okCancelEvent.clear();\r\n }\r\n handleHeaderMouseDown(downEvent) {\r\n const { element } = this;\r\n if (element) {\r\n const { prefixCls } = this;\r\n const { clientX, clientY } = downEvent;\r\n const { offsetLeft, offsetTop } = element;\r\n this.moveEvent\r\n .addEventListener('mousemove', (moveEvent) => {\r\n const { clientX: moveX, clientY: moveY } = moveEvent;\r\n classes(element).remove(`${prefixCls}-center`);\r\n const left = pxToRem(Math.max(offsetLeft + moveX - clientX, 0));\r\n const top = pxToRem(Math.max(offsetTop + moveY - clientY, 0));\r\n this.offset = [left, top];\r\n Object.assign(element.style, {\r\n left,\r\n top,\r\n });\r\n })\r\n .addEventListener('mouseup', () => {\r\n this.moveEvent.clear();\r\n });\r\n }\r\n }\r\n async handleOk() {\r\n const { onOk = noop } = this.props;\r\n const promise = Promise.all([onOk(), this.okCancelEvent.fireEvent('ok')]);\r\n try {\r\n const [ret1, ret2] = await promise;\r\n if (ret1 !== false && ret2) {\r\n this.close();\r\n }\r\n }\r\n catch (e) {\r\n if (!(e instanceof DataSetRequestError)) {\r\n message.error(exception(e));\r\n }\r\n throw e;\r\n }\r\n }\r\n async handleCancel() {\r\n const { onCancel = noop } = this.props;\r\n const promise = Promise.all([onCancel(), this.okCancelEvent.fireEvent('cancel')]);\r\n try {\r\n const [ret1, ret2] = await promise;\r\n if (ret1 !== false && ret2) {\r\n this.close();\r\n }\r\n }\r\n catch (e) {\r\n if (!(e instanceof DataSetRequestError)) {\r\n message.error(exception(e));\r\n }\r\n throw e;\r\n }\r\n }\r\n getTitle() {\r\n const { props: { title }, prefixCls, } = this;\r\n if (title) {\r\n return <div className={`${prefixCls}-title`}>{title}</div>;\r\n }\r\n }\r\n getHeader() {\r\n const { prefixCls, props: { closable, movable, fullScreen, drawer }, } = this;\r\n const title = this.getTitle();\r\n const buttons = this.getHeaderButtons();\r\n if (title || closable || movable) {\r\n const headerProps = {\r\n className: classNames(`${prefixCls}-header`, {\r\n [`${prefixCls}-movable`]: movable && !fullScreen && !drawer,\r\n }),\r\n };\r\n if (movable && !fullScreen && !drawer) {\r\n headerProps.onMouseDown = this.handleHeaderMouseDown;\r\n }\r\n return (<div {...headerProps}>\n {title}\n {buttons}\n </div>);\r\n }\r\n }\r\n getHeaderButtons() {\r\n const { prefixCls } = this;\r\n const closeButton = this.getCloseButton();\r\n if (closeButton) {\r\n return <div className={`${prefixCls}-header-buttons`}>{closeButton}</div>;\r\n }\r\n }\r\n getCloseButton() {\r\n const { prefixCls, props: { closable }, } = this;\r\n if (closable) {\r\n return (<button type=\"button\" className={`${prefixCls}-header-button`} onClick={this.close}>\n <Icon type=\"close\"/>\n </button>);\r\n }\r\n }\r\n renderChildren(children) {\r\n if (children) {\r\n const { prefixCls, props } = this;\r\n const { close = noop, update = noop } = props;\r\n const modal = {\r\n close,\r\n update,\r\n props,\r\n handleOk: this.registerOk,\r\n handleCancel: this.registerCancel,\r\n };\r\n return (<div className={`${prefixCls}-body`}>\n {isValidElement(children) ? cloneElement(children, { modal }) : children}\n </div>);\r\n }\r\n }\r\n getBody() {\r\n const { children } = this.props;\r\n return this.renderChildren(typeof children === 'function'\r\n ? asyncComponent(children)\r\n : children);\r\n }\r\n getFooter() {\r\n const { okProps, cancelProps, drawer, okText = $l('Modal', 'ok'), cancelText = $l('Modal', 'cancel'), footer = this.getDefaultFooter, } = this.props;\r\n const funcType = drawer\r\n ? FuncType.raised\r\n : getConfig('buttonFuncType');\r\n const okBtn = (<Button key=\"ok\" funcType={funcType} color={ButtonColor.primary} onClick={this.handleOk} {...okProps}>\n {okText}\n </Button>);\r\n const cancelBtn = (<Button key=\"cancel\" ref={this.saveCancelRef} funcType={funcType} onClick={this.handleCancel} {...cancelProps}>\n {cancelText}\n </Button>);\r\n if (typeof footer === 'function') {\r\n return this.getWrappedFooter(footer(okBtn, cancelBtn));\r\n }\r\n if (!isEmpty(footer, true)) {\r\n return this.getWrappedFooter(footer);\r\n }\r\n }\r\n getWrappedFooter(footer) {\r\n const { prefixCls } = this;\r\n const { drawer } = this.props;\r\n const className = classNames(`${prefixCls}-footer`, {\r\n [`${prefixCls}-footer-drawer`]: !!drawer,\r\n });\r\n return <div className={className}>{footer}</div>;\r\n }\r\n close() {\r\n const { close = noop } = this.props;\r\n close();\r\n }\r\n}\r\nModal.displayName = 'Modal';\r\nModal.propTypes = {\r\n ...ViewComponent.propTypes,\r\n closable: PropTypes.bool,\r\n movable: PropTypes.bool,\r\n fullScreen: PropTypes.bool,\r\n maskClosable: PropTypes.bool,\r\n keyboardClosable: PropTypes.bool,\r\n footer: PropTypes.oneOfType([PropTypes.func, PropTypes.node, PropTypes.bool]),\r\n destroyOnClose: PropTypes.bool,\r\n okText: PropTypes.node,\r\n cancelText: PropTypes.node,\r\n okProps: PropTypes.object,\r\n cancelProps: PropTypes.object,\r\n onClose: PropTypes.func,\r\n onOk: PropTypes.func,\r\n onCancel: PropTypes.func,\r\n afterClose: PropTypes.func,\r\n okCancel: PropTypes.bool,\r\n drawer: PropTypes.bool,\r\n // title: PropTypes.node,\r\n // 此处原本允许title传入node,但是类型为PropTypes.node时无法正确继承ViewComponent\r\n // 父类中的title指的是HTML元素的title属性,此处title指modal标题,产生歧义,暂时设置为string\r\n // TODO: 添加modalTitle属性替代此处的title\r\n title: PropTypes.string,\r\n okFirst: PropTypes.bool,\r\n};\r\nModal.defaultProps = {\r\n suffixCls,\r\n closable: false,\r\n movable: true,\r\n maskClosable: false,\r\n keyboardClosable: true,\r\n okCancel: true,\r\n destroyOnClose: true,\r\n fullScreen: false,\r\n drawer: false,\r\n autoFocus: true,\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], Modal.prototype, \"handleHeaderMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Modal.prototype, \"handleOk\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Modal.prototype, \"handleCancel\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Modal.prototype, \"close\", null);\r\n","import React from 'react';\r\nimport ViewComponent from '../core/ViewComponent';\r\nexport default class Mask extends ViewComponent {\r\n render() {\r\n return <div {...this.getMergedProps()}/>;\r\n }\r\n}\r\nMask.displayName = 'Mask';\r\nMask.defaultProps = {\r\n suffixCls: 'mask',\r\n};\r\n","import React, { Component } from 'react';\r\nimport { createPortal, render } from 'react-dom';\r\nimport classNames from 'classnames';\r\nimport findLast from 'lodash/findLast.js';\r\nimport noop from 'lodash/noop';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport { getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport Modal from '../modal/Modal';\r\nimport Animate from '../animate';\r\nimport Mask from './Mask';\r\nimport { stopEvent } from '../_util/EventManager';\r\nimport { suffixCls } from '../modal/utils';\r\nconst KeyGen = (function* (id) {\r\n while (true) {\r\n yield `${getProPrefixCls(suffixCls)}-${id}`;\r\n id += 1;\r\n }\r\n})(1);\r\nconst containerInstanses = [];\r\nfunction removeInstanse(instanse) {\r\n const index = containerInstanses.indexOf(instanse);\r\n if (index > -1) {\r\n containerInstanses.splice(index, 1);\r\n }\r\n}\r\nfunction addInstanse(instanse) {\r\n removeInstanse(instanse);\r\n containerInstanses.push(instanse);\r\n}\r\nexport function getKey() {\r\n return KeyGen.next().value;\r\n}\r\nlet root;\r\nlet defaultBodyStyle;\r\nfunction getRoot() {\r\n if (typeof window !== 'undefined') {\r\n const doc = window.document;\r\n if (root) {\r\n if (!root.parentNode) {\r\n doc.body.appendChild(root);\r\n }\r\n }\r\n else {\r\n root = doc.createElement('div');\r\n root.className = `${getProPrefixCls(suffixCls)}-container`;\r\n doc.body.appendChild(root);\r\n }\r\n }\r\n return root;\r\n}\r\n/**\r\n * 判断body是否有滚动条\r\n *\r\n * @returns {boolean}\r\n */\r\nfunction hasScrollBar() {\r\n const { scrollHeight, clientHeight } = document.body;\r\n return scrollHeight > clientHeight;\r\n}\r\nfunction hideBodyScrollBar() {\r\n const { style } = document.body;\r\n if (!defaultBodyStyle) {\r\n defaultBodyStyle = {\r\n overflow: style.overflow,\r\n paddingRight: style.paddingRight,\r\n };\r\n style.overflow = 'hidden';\r\n if (hasScrollBar()) {\r\n style.paddingRight = pxToRem(measureScrollbar()) || null;\r\n }\r\n }\r\n}\r\nfunction showBodyScrollBar() {\r\n const { style } = document.body;\r\n if (defaultBodyStyle) {\r\n const { overflow, paddingRight } = defaultBodyStyle;\r\n defaultBodyStyle = undefined;\r\n style.overflow = overflow;\r\n style.paddingRight = paddingRight;\r\n }\r\n}\r\nexport default class ModalContainer extends Component {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.state = {\r\n modals: [],\r\n };\r\n this.handleAnimationEnd = (modalKey, isEnter) => {\r\n if (!isEnter) {\r\n const { modals } = this.state;\r\n const index = this.findIndex(modalKey);\r\n if (index !== -1) {\r\n const props = modals[index];\r\n modals.splice(index, 1);\r\n if (!props.destroyOnClose) {\r\n modals.unshift(props);\r\n }\r\n if (props.afterClose) {\r\n props.afterClose();\r\n }\r\n this.setState({ modals });\r\n }\r\n }\r\n };\r\n this.handleMaskClick = async () => {\r\n const { modals } = this.state;\r\n const modal = findLast(modals, ({ hidden }) => !hidden);\r\n if (modal) {\r\n const { close = noop, onCancel = noop, maskClosable } = modal;\r\n if (maskClosable) {\r\n const ret = await onCancel();\r\n if (ret !== false) {\r\n close();\r\n }\r\n }\r\n }\r\n };\r\n addInstanse(this);\r\n }\r\n componentWillUpdate(nextProps) {\r\n const { location } = nextProps;\r\n const { location: currentLocation } = this.props;\r\n if (location && currentLocation && location.pathname !== currentLocation.pathname) {\r\n this.clear();\r\n }\r\n addInstanse(this);\r\n }\r\n componentWillUnmount() {\r\n removeInstanse(this);\r\n }\r\n findIndex(modalKey) {\r\n const { modals } = this.state;\r\n return modals.findIndex(({ key }) => key === modalKey);\r\n }\r\n open(props) {\r\n const { modals } = this.state;\r\n if (!props.key) {\r\n props.key = getKey();\r\n warning(!!props.destroyOnClose, `The modal which opened has no key, please provide a key or set the \\`destroyOnClose\\` as true.`);\r\n }\r\n else {\r\n const index = this.findIndex(props.key);\r\n if (index !== -1) {\r\n modals.splice(index, 1);\r\n }\r\n }\r\n modals.push({ ...props, hidden: false });\r\n this.setState({ modals });\r\n }\r\n close(props) {\r\n const { modals } = this.state;\r\n const target = modals.find(({ key }) => key === props.key);\r\n if (target) {\r\n Object.assign(target, props, { hidden: true });\r\n this.setState({ modals });\r\n }\r\n }\r\n update(props) {\r\n const { modals: originModals } = this.state;\r\n const modals = [...originModals];\r\n if (props.key) {\r\n const index = this.findIndex(props.key);\r\n if (index !== -1) {\r\n modals[index] = props;\r\n this.setState({ modals });\r\n }\r\n }\r\n }\r\n clear() {\r\n const { modals } = this.state;\r\n modals.forEach(modal => this.close({ ...modal, destroyOnClose: true }));\r\n }\r\n getOffset(modals, idx) {\r\n const MARGIN_RIGHT_ARRAY = [];\r\n const DEFAULT = 150;\r\n const drawers = modals.filter(modal => modal.drawer && !modal.hidden);\r\n const indexInDrawers = drawers.findIndex(drawer => drawer.key === modals[idx].key);\r\n if (indexInDrawers === -1) {\r\n return 0;\r\n }\r\n for (let i = drawers.length - 1; i >= indexInDrawers; i--) {\r\n if (i === drawers.length - 1) {\r\n MARGIN_RIGHT_ARRAY.push(0);\r\n }\r\n else {\r\n const CURRENT_WIDTH = this.getModalWidth(drawers[i]);\r\n const NEXT_WIDTH = this.getModalWidth(drawers[i + 1]);\r\n const NEXT_MARGIN = MARGIN_RIGHT_ARRAY[drawers.length - i - 2];\r\n if (CURRENT_WIDTH >= NEXT_MARGIN + NEXT_WIDTH + DEFAULT) {\r\n MARGIN_RIGHT_ARRAY.push(0);\r\n }\r\n else {\r\n MARGIN_RIGHT_ARRAY.push(NEXT_MARGIN + NEXT_WIDTH + DEFAULT - CURRENT_WIDTH);\r\n }\r\n }\r\n }\r\n return MARGIN_RIGHT_ARRAY[MARGIN_RIGHT_ARRAY.length - 1];\r\n }\r\n getModalWidth(modal) {\r\n return (modal && modal.style && modal.style.width) || 520;\r\n }\r\n getComponent() {\r\n let hidden = true;\r\n const { modals } = this.state;\r\n const items = modals.map((props, index) => {\r\n const thisHidden = props.hidden;\r\n if (hidden && !thisHidden) {\r\n hidden = false;\r\n }\r\n const newProps = {};\r\n if (props.drawer) {\r\n newProps.style = {\r\n marginRight: this.getOffset(modals, index),\r\n ...props.style,\r\n };\r\n }\r\n if (index === modals.length - 1) {\r\n newProps.className = classNames(props.className, `${getProPrefixCls(suffixCls)}-active`);\r\n }\r\n return (<Animate key={props.key} component=\"div\" transitionAppear transitionName={props.drawer ? 'slide-right' : 'zoom'} hiddenProp=\"hidden\" onEnd={this.handleAnimationEnd}>\n <Modal key={props.key} {...props} {...newProps}/>\n </Animate>);\r\n });\r\n const animationProps = {};\r\n if (typeof window !== 'undefined') {\r\n if (hidden) {\r\n animationProps.onEnd = showBodyScrollBar;\r\n }\r\n else {\r\n hideBodyScrollBar();\r\n }\r\n }\r\n return (<>\n <Animate component=\"\" transitionAppear transitionName=\"fade\" hiddenProp=\"hidden\" {...animationProps}>\n <Mask hidden={hidden} onClick={this.handleMaskClick} onMouseDown={stopEvent}/>\n </Animate>\n {items}\n </>);\r\n }\r\n render() {\r\n const mount = getRoot();\r\n if (mount) {\r\n return createPortal(this.getComponent(), mount);\r\n }\r\n return null;\r\n }\r\n}\r\nModalContainer.displayName = 'ModalContainer';\r\nexport function getContainer(loop) {\r\n const { length } = containerInstanses;\r\n if (length) {\r\n return containerInstanses[length - 1];\r\n }\r\n if (loop !== true) {\r\n render(<ModalContainer />, getRoot());\r\n return getContainer(true);\r\n }\r\n}\r\nexport function open(props) {\r\n const container = getContainer();\r\n async function close(destroy) {\r\n const { onClose = noop } = props;\r\n if ((await onClose()) !== false) {\r\n if (destroy) {\r\n container.close({ ...props, destroyOnClose: true });\r\n }\r\n else {\r\n container.close(props);\r\n }\r\n }\r\n }\r\n function show() {\r\n container.open(props);\r\n }\r\n function update(newProps) {\r\n container.update({ ...props, ...newProps });\r\n }\r\n props = {\r\n close,\r\n update,\r\n ...Modal.defaultProps,\r\n ...props,\r\n };\r\n container.open(props);\r\n return {\r\n close,\r\n open: show,\r\n update,\r\n };\r\n}\r\n","import React from 'react';\r\nimport noop from 'lodash/noop';\r\nimport { getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport { getKey, open } from '../modal-container/ModalContainer';\r\nimport Icon from '../icon';\r\nimport { normalizeProps } from './utils';\r\nexport default function confirm(props) {\r\n const { children, type = 'confirm', onOk = noop, onCancel = noop, iconType, border = false, okCancel = true, title, ...otherProps } = normalizeProps(props);\r\n const prefixCls = getProPrefixCls('confirm');\r\n const titleNode = title && <div className={`${prefixCls}-title`}>{title}</div>;\r\n const contentNode = children && <div className={`${prefixCls}-content`}>{children}</div>;\r\n const iconNode = iconType && (<td className={`${prefixCls}-icon ${prefixCls}-${type}`}>\n <Icon type={iconType}/>\n </td>);\r\n return new Promise(resolve => {\r\n open({\r\n key: getKey(),\r\n border,\r\n destroyOnClose: true,\r\n okCancel,\r\n closable: false,\r\n movable: false,\r\n style: { width: '4.16rem' },\r\n children: (<table className={prefixCls}>\n <tbody>\n <tr>\n {iconNode}\n <td>\n {titleNode}\n {contentNode}\n </td>\n </tr>\n </tbody>\n </table>),\r\n onOk: async () => {\r\n const result = await onOk();\r\n if (result !== false) {\r\n resolve('ok');\r\n }\r\n return result;\r\n },\r\n onCancel: async () => {\r\n const result = await onCancel();\r\n if (result !== false) {\r\n resolve('cancel');\r\n }\r\n return result;\r\n },\r\n ...otherProps,\r\n });\r\n });\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport { computed, observable, runInAction } from 'mobx';\r\nexport default class Transport {\r\n constructor(props = {}, dataSet) {\r\n runInAction(() => {\r\n this.props = props;\r\n this.dataSet = dataSet;\r\n });\r\n }\r\n set create(create) {\r\n runInAction(() => {\r\n this.props.create = create;\r\n });\r\n }\r\n get create() {\r\n return this.props.create;\r\n }\r\n set read(read) {\r\n runInAction(() => {\r\n this.props.read = read;\r\n });\r\n }\r\n get read() {\r\n return this.props.read || this.dataSet.queryUrl;\r\n }\r\n set update(update) {\r\n runInAction(() => {\r\n this.props.update = update;\r\n });\r\n }\r\n get update() {\r\n return this.props.update;\r\n }\r\n set destroy(destroy) {\r\n runInAction(() => {\r\n this.props.destroy = destroy;\r\n });\r\n }\r\n get destroy() {\r\n return this.props.destroy;\r\n }\r\n set validate(validate) {\r\n runInAction(() => {\r\n this.props.validate = validate;\r\n });\r\n }\r\n get validate() {\r\n return this.props.validate || this.dataSet.validateUrl;\r\n }\r\n set submit(submit) {\r\n runInAction(() => {\r\n this.props.submit = submit;\r\n });\r\n }\r\n get submit() {\r\n return this.props.submit || this.dataSet.submitUrl;\r\n }\r\n set exports(exports) {\r\n runInAction(() => {\r\n this.props.exports = exports;\r\n });\r\n }\r\n get exports() {\r\n return this.props.exports || this.dataSet.exportUrl;\r\n }\r\n set tls(tls) {\r\n runInAction(() => {\r\n this.props.tls = tls;\r\n });\r\n }\r\n get tls() {\r\n return this.props.tls || this.dataSet.tlsUrl;\r\n }\r\n set adapter(adapter) {\r\n runInAction(() => {\r\n this.props.adapter = adapter;\r\n });\r\n }\r\n get adapter() {\r\n return this.props.adapter;\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], Transport.prototype, \"props\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"create\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"read\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"update\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"destroy\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"validate\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"submit\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"exports\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"tls\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Transport.prototype, \"adapter\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport { action, computed, get, isArrayLike, observable, runInAction, set, toJS, } from 'mobx';\r\nimport axiosStatic from 'axios';\r\nimport isNumber from 'lodash/isNumber';\r\nimport isArray from 'lodash/isArray';\r\nimport isObject from 'lodash/isObject';\r\nimport isNil from 'lodash/isNil';\r\nimport defer from 'lodash/defer';\r\nimport debounce from 'lodash/debounce';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport localeContext, { $l } from '../locale-context';\r\nimport axios from '../axios';\r\nimport Record from './Record';\r\nimport Field from './Field';\r\nimport { axiosConfigAdapter, checkParentByInsert, doExport, findBindFieldBy, generateJSONData, generateResponseData, getFieldSorter, getOrderFields, prepareForSubmit, prepareSubmitData, processIntlField, sortTree, } from './utils';\r\nimport EventManager from '../_util/EventManager';\r\nimport DataSetSnapshot from './DataSetSnapshot';\r\nimport confirm from '../modal/confirm';\r\nimport { DataSetEvents, DataSetSelection, DataSetStatus, FieldType, RecordStatus, SortOrder, } from './enum';\r\nimport isEmpty from '../_util/isEmpty';\r\nimport * as ObjectChainValue from '../_util/ObjectChainValue';\r\nimport Transport from './Transport';\r\nimport PromiseQueue from '../_util/PromiseQueue';\r\nimport DataSetRequestError from './DataSetRequestError';\r\nimport defaultFeedback from './FeedBack';\r\nexport default class DataSet extends EventManager {\r\n constructor(props) {\r\n super();\r\n this.children = {};\r\n this.pending = new PromiseQueue();\r\n this.originalData = [];\r\n this.resetInBatch = false;\r\n this.inBatchSelection = false;\r\n this.syncChildrenRemote = debounce((remoteKeys, current) => {\r\n const { children } = this;\r\n remoteKeys.forEach(childName => this.syncChild(children[childName], current, childName));\r\n }, 300);\r\n runInAction(() => {\r\n props = { ...DataSet.defaultProps, ...props };\r\n this.props = props;\r\n const { data, fields, queryFields, queryDataSet, autoQuery, autoCreate, pageSize, selection, events, id, name, children, queryParameter = {}, } = props;\r\n this.name = name;\r\n this.records = [];\r\n this.fields = observable.map();\r\n this.totalCount = 0;\r\n this.status = DataSetStatus.ready;\r\n this.currentPage = 1;\r\n this.cachedSelected = [];\r\n this.queryParameter = queryParameter;\r\n this.pageSize = pageSize;\r\n this.selection = selection;\r\n this.processListener();\r\n if (id) {\r\n this.id = id;\r\n }\r\n if (children) {\r\n this.initChildren(children);\r\n }\r\n if (events) {\r\n this.initEvents(events);\r\n }\r\n if (fields) {\r\n this.initFields(fields);\r\n }\r\n this.initQueryDataSet(queryDataSet, queryFields);\r\n if (data) {\r\n const { length } = data;\r\n if (length) {\r\n this.loadData(data, length);\r\n }\r\n }\r\n // ssr do not auto query\r\n if (autoQuery && typeof window !== 'undefined') {\r\n this.query();\r\n }\r\n else if (autoCreate && this.records.length === 0) {\r\n this.create();\r\n }\r\n });\r\n }\r\n get axios() {\r\n return this.props.axios || getConfig('axios') || axios;\r\n }\r\n get dataKey() {\r\n const { dataKey = getConfig('dataKey') } = this.props;\r\n return dataKey;\r\n }\r\n get totalKey() {\r\n return this.props.totalKey || getConfig('totalKey');\r\n }\r\n get lang() {\r\n return get(this.props, 'lang') || localeContext.locale.lang;\r\n }\r\n set lang(lang) {\r\n runInAction(() => {\r\n set(this.props, 'lang', lang);\r\n });\r\n }\r\n get queryDataSet() {\r\n return get(this.props, 'queryDataSet');\r\n }\r\n /**\r\n * 设置查询的DataSet.\r\n * @param {DataSet} ds DataSet.\r\n */\r\n set queryDataSet(ds) {\r\n runInAction(() => {\r\n set(this.props, 'queryDataSet', ds);\r\n if (ds) {\r\n // 初始化时如果直接执行create,mobx会报错,所以使用了defer\r\n ds.pending.add(new Promise(reslove => {\r\n defer(() => {\r\n if (ds.records.length === 0) {\r\n ds.create();\r\n }\r\n else if (!ds.current) {\r\n ds.first();\r\n }\r\n reslove();\r\n });\r\n }));\r\n }\r\n });\r\n }\r\n get queryUrl() {\r\n return get(this.props, 'queryUrl') || (this.name && `/dataset/${this.name}/queries`);\r\n }\r\n /**\r\n * 设置提交的Url.\r\n * @param {String} url 提交的Url.\r\n */\r\n set queryUrl(url) {\r\n runInAction(() => {\r\n set(this.props, 'queryUrl', url);\r\n });\r\n }\r\n get submitUrl() {\r\n return get(this.props, 'submitUrl') || (this.name && `/dataset/${this.name}/mutations`);\r\n }\r\n /**\r\n * 设置查询的Url.\r\n * @param {String} url 查询的Url.\r\n */\r\n set submitUrl(url) {\r\n runInAction(() => {\r\n set(this.props, 'submitUrl', url);\r\n });\r\n }\r\n get tlsUrl() {\r\n return get(this.props, 'tlsUrl') || (this.name && `/dataset/${this.name}/languages`);\r\n }\r\n /**\r\n * 设置多语言的Url.\r\n * @param {String} url 多语言的Url.\r\n */\r\n set tlsUrl(url) {\r\n runInAction(() => {\r\n set(this.props, 'tlsUrl', url);\r\n });\r\n }\r\n get validateUrl() {\r\n return get(this.props, 'validateUrl') || (this.name && `/dataset/${this.name}/validate`);\r\n }\r\n /**\r\n * 设置远程校验查询请求的url.\r\n * @param {String} url 远程校验查询请求的url.\r\n */\r\n set validateUrl(url) {\r\n runInAction(() => {\r\n set(this.props, 'validateUrl', url);\r\n });\r\n }\r\n get exportUrl() {\r\n return get(this.props, 'exportUrl') || (this.name && `/dataset/${this.name}/export`);\r\n }\r\n /**\r\n * 设置导出请求的url.\r\n * @param {String} url 远程校验查询请求的url.\r\n */\r\n set exportUrl(url) {\r\n runInAction(() => {\r\n set(this.props, 'exportUrl', url);\r\n });\r\n }\r\n set transport(transport) {\r\n runInAction(() => {\r\n this.props.transport = transport instanceof Transport ? transport.props : transport;\r\n });\r\n }\r\n get transport() {\r\n return new Transport(this.props.transport, this);\r\n }\r\n get feedback() {\r\n return {\r\n ...getConfig('feedback'),\r\n ...this.props.feedback,\r\n };\r\n }\r\n get data() {\r\n return this.records.filter(record => !record.isRemoved);\r\n }\r\n set data(records) {\r\n this.loadData(records);\r\n }\r\n get dirtyRecords() {\r\n const created = [];\r\n const updated = [];\r\n const destroyed = [];\r\n this.records.forEach(record => {\r\n switch (record.status) {\r\n case RecordStatus.add:\r\n created.push(record);\r\n break;\r\n case RecordStatus.update:\r\n updated.push(record);\r\n break;\r\n case RecordStatus.delete:\r\n destroyed.push(record);\r\n break;\r\n default:\r\n }\r\n });\r\n return [created, updated, destroyed];\r\n }\r\n /**\r\n * 获取新建的记录集\r\n * @return 记录集\r\n */\r\n get created() {\r\n return this.dirtyRecords[0];\r\n }\r\n /**\r\n * 获取变更的记录集\r\n * @return 记录集\r\n */\r\n get updated() {\r\n return this.dirtyRecords[1];\r\n }\r\n /**\r\n * 获取删除的记录集\r\n * @return 记录集\r\n */\r\n get destroyed() {\r\n return this.dirtyRecords[2];\r\n }\r\n /**\r\n * 获取选中的记录集\r\n * @return 记录集\r\n */\r\n get selected() {\r\n return this.currentSelected.concat(this.cachedSelected.filter(record => record.isSelected));\r\n }\r\n get currentSelected() {\r\n return this.records.filter(record => record.isSelected);\r\n }\r\n get totalPage() {\r\n return this.paging ? Math.ceil(this.totalCount / this.pageSize) : 1;\r\n }\r\n get currentIndex() {\r\n const { current, pageSize, currentPage } = this;\r\n if (current) {\r\n const index = this.indexOf(current);\r\n if (index !== -1) {\r\n return index + (currentPage - 1) * pageSize;\r\n }\r\n }\r\n return -1;\r\n }\r\n set currentIndex(index) {\r\n this.locate(index);\r\n }\r\n /**\r\n * 记录数\r\n */\r\n get length() {\r\n return this.data.length;\r\n }\r\n get hasChildren() {\r\n return Object.keys(this.children).length > 0;\r\n }\r\n get treeRecords() {\r\n return sortTree(this.records.filter(record => !record.parent), getOrderFields(this.fields)[0]);\r\n }\r\n get treeData() {\r\n return sortTree(this.filter(record => !record.parent), getOrderFields(this.fields)[0]);\r\n }\r\n get paging() {\r\n const { idField, parentField, paging } = this.props;\r\n return (parentField === undefined || idField === undefined) && paging;\r\n }\r\n set paging(paging) {\r\n runInAction(() => {\r\n this.props.paging = paging;\r\n });\r\n }\r\n /**\r\n * 获取当前索引的记录\r\n * @return record 记录\r\n */\r\n get current() {\r\n return (this.data.find(record => record.isCurrent) ||\r\n this.cachedSelected.find(record => record.isCurrent));\r\n }\r\n /**\r\n * 将记录设定为当前索引\r\n * @param record 记录\r\n */\r\n set current(record) {\r\n const currentRecord = this.current;\r\n if (currentRecord !== record && (!record || !record.isCached)) {\r\n runInAction(() => {\r\n if (currentRecord) {\r\n currentRecord.isCurrent = false;\r\n }\r\n if (record && record.dataSet === this) {\r\n record.isCurrent = true;\r\n }\r\n this.fireEvent(DataSetEvents.indexChange, {\r\n dataSet: this,\r\n record,\r\n previous: currentRecord,\r\n });\r\n });\r\n }\r\n }\r\n get uniqueKeys() {\r\n const { primaryKey } = this.props;\r\n if (primaryKey) {\r\n return [primaryKey];\r\n }\r\n const keys = [];\r\n [...this.fields.entries()].forEach(([key, field]) => {\r\n if (field.get('unique')) {\r\n keys.push(key);\r\n }\r\n });\r\n if (keys.length) {\r\n return keys;\r\n }\r\n return undefined;\r\n }\r\n get cacheSelectionKeys() {\r\n const { cacheSelection, selection } = this.props;\r\n if (cacheSelection && selection === DataSetSelection.multiple) {\r\n return this.uniqueKeys;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * 获取所有记录包括缓存的选择记录\r\n * @param index 索引\r\n * @returns {Record}\r\n */\r\n get all() {\r\n return this.records.concat(this.cachedSelected.slice());\r\n }\r\n processListener() {\r\n this.addEventListener(DataSetEvents.indexChange, this.handleCascade);\r\n }\r\n destroy() {\r\n this.clear();\r\n }\r\n snapshot() {\r\n return new DataSetSnapshot(this);\r\n }\r\n restore(snapshot) {\r\n const previous = this.current;\r\n Object.assign(this, snapshot);\r\n const record = this.current;\r\n if (previous !== record) {\r\n this.fireEvent(DataSetEvents.indexChange, { dataSet: this, record, previous });\r\n }\r\n return this;\r\n }\r\n toData() {\r\n return this.data.map(record => record.toData());\r\n }\r\n toJSONData(isSelected, noCascade) {\r\n const data = [];\r\n (isSelected ? this.selected : this.records).forEach(record => generateJSONData(data, record, isSelected, noCascade));\r\n return data;\r\n }\r\n /**\r\n * 等待选中或者所有记录准备就绪\r\n * @param isSelect 如果为true,则只等待选中的记录\r\n * @returns Promise\r\n */\r\n ready(isSelect) {\r\n return Promise.all([\r\n this.pending.ready(),\r\n ...(isSelect ? this.selected : this.data).map(record => record.ready()),\r\n ...[...this.fields.values()].map(field => field.ready()),\r\n ]);\r\n }\r\n /**\r\n * 查询记录\r\n * @param page 页码\r\n * @return Promise\r\n */\r\n query(page) {\r\n return this.pending.add(this.doQuery(page));\r\n }\r\n async doQuery(page) {\r\n const data = await this.read(page);\r\n this.loadDataFromResponse(data);\r\n return data;\r\n }\r\n /**\r\n * 将数据集中的增删改的记录进行远程提交\r\n * @param isSelect 如果为true,则只提交选中记录\r\n * @param noCascade 如果为true,则不提交级联数据\r\n * @return Promise\r\n */\r\n async submit(isSelect, noCascade) {\r\n await this.ready(isSelect);\r\n if (await this.validate(isSelect, noCascade)) {\r\n return this.pending.add(this.write(isSelect ? this.selected : this.records, isSelect, noCascade));\r\n }\r\n return false;\r\n }\r\n /**\r\n * 导出数据\r\n * @param object columns 导出的列\r\n */\r\n async export(columns = {}) {\r\n if (this.checkReadable(this.parent) && (await this.ready())) {\r\n const data = await this.generateQueryParameter();\r\n data._HAP_EXCEL_EXPORT_COLUMNS = columns;\r\n const { totalCount, totalKey } = this;\r\n const params = { _r: Date.now(), ...this.generateOrderQueryString() };\r\n ObjectChainValue.set(params, totalKey, totalCount);\r\n const newConfig = axiosConfigAdapter('exports', this, data, params);\r\n if (newConfig.url) {\r\n if ((await this.fireEvent(DataSetEvents.export, {\r\n dataSet: this,\r\n params: newConfig.params,\r\n data: newConfig.data,\r\n })) !== false) {\r\n doExport(this.axios.getUri(newConfig), newConfig.data, newConfig.method);\r\n }\r\n }\r\n else {\r\n warning(false, 'Unable to execute the export method of dataset, please check the ');\r\n }\r\n }\r\n }\r\n /**\r\n * 重置更改\r\n */\r\n reset() {\r\n this.resetInBatch = true;\r\n this.records = this.originalData.map(record => record.reset());\r\n this.resetInBatch = false;\r\n if (this.props.autoCreate && this.records.length === 0) {\r\n this.create();\r\n }\r\n this.fireEvent(DataSetEvents.reset, { dataSet: this, records: this.records });\r\n return this;\r\n }\r\n /**\r\n * 定位到指定页码,如果paging为true或`server`,则做远程查询\r\n * @param page 页码\r\n * @return Promise\r\n */\r\n page(page) {\r\n if (page > 0 && this.paging) {\r\n return this.locate((page - 1) * this.pageSize + this.created.length - this.destroyed.length);\r\n }\r\n warning(page > 0, 'Page number is incorrect.');\r\n warning(this.paging, 'Can not paging query util the property<paging> of DataSet is true.');\r\n return Promise.resolve();\r\n }\r\n /**\r\n * 定位记录\r\n * @param index 索引\r\n * @return Promise\r\n */\r\n async locate(index) {\r\n const { paging, pageSize, totalCount } = this;\r\n const { modifiedCheck } = this.props;\r\n let currentRecord = this.findInAllPage(index);\r\n if (currentRecord) {\r\n this.current = currentRecord;\r\n return currentRecord;\r\n }\r\n if (paging === true) {\r\n if (index >= 0 && index < totalCount + this.created.length - this.destroyed.length) {\r\n if (!modifiedCheck ||\r\n !this.isModified() ||\r\n (await confirm($l('DataSet', 'unsaved_data_confirm'))) !== 'cancel') {\r\n await this.query(Math.floor(index / pageSize) + 1);\r\n currentRecord = this.findInAllPage(index);\r\n if (currentRecord) {\r\n this.current = currentRecord;\r\n return currentRecord;\r\n }\r\n }\r\n }\r\n }\r\n warning(false, 'Located index of Record is out of boundary.');\r\n return Promise.resolve(undefined);\r\n }\r\n /**\r\n * 定位到第一条记录\r\n * @return Promise\r\n */\r\n first() {\r\n return this.locate(0);\r\n }\r\n /**\r\n * 定位到最后一条记录\r\n * @return Promise\r\n */\r\n last() {\r\n return this.locate((this.paging ? this.totalCount : this.length) - 1);\r\n }\r\n /**\r\n * 定位到当前记录的上一条记录\r\n * 若当前页中当前记录为第一条记录且有上一页,则会查询上一页并定位到上一页的最后一条记录\r\n * @return Promise\r\n */\r\n pre() {\r\n return this.locate(this.currentIndex - 1);\r\n }\r\n /**\r\n * 定位到当前记录的下一条记录\r\n * 若当前页中当前记录为最后一条记录且有下一页,则会查询下一页并定位到下一页的第一条记录\r\n * @return Promise\r\n */\r\n next() {\r\n return this.locate(this.currentIndex + 1);\r\n }\r\n /**\r\n * 定位到首页\r\n * @return Promise\r\n */\r\n firstPage() {\r\n return this.page(1);\r\n }\r\n /**\r\n * 定位到上一页\r\n * @return Promise\r\n */\r\n prePage() {\r\n return this.page(this.currentPage - 1);\r\n }\r\n /**\r\n * 定位到下一页\r\n * @return Promise\r\n */\r\n nextPage() {\r\n return this.page(this.currentPage + 1);\r\n }\r\n /**\r\n * 定位到尾页\r\n * @return Promise\r\n */\r\n lastPage() {\r\n return this.page(this.totalPage);\r\n }\r\n /**\r\n * 创建一条记录\r\n * @param data 数据对象\r\n * @param dataIndex 记录所在的索引\r\n * @return 新建的记录\r\n */\r\n create(data = {}, dataIndex) {\r\n if (data === null) {\r\n data = {};\r\n }\r\n [...this.fields.entries()].forEach(([name, field]) => {\r\n const defaultValue = field.get('defaultValue');\r\n const value = ObjectChainValue.get(data, name);\r\n if (value === undefined && defaultValue !== undefined) {\r\n ObjectChainValue.set(data, name, toJS(defaultValue));\r\n }\r\n });\r\n const record = new Record(data, this);\r\n if (isNumber(dataIndex)) {\r\n this.splice(dataIndex, 0, record);\r\n }\r\n else {\r\n this.push(record);\r\n }\r\n this.current = record;\r\n this.fireEvent(DataSetEvents.create, { dataSet: this, record });\r\n return record;\r\n }\r\n /**\r\n * 立即删除记录\r\n * @param records 记录或者记录数组,默认当前记录\r\n * @param confirmMessage 提示信息或弹窗的属性\r\n * @return Promise\r\n */\r\n async delete(records, confirmMessage) {\r\n if (records) {\r\n records = [].concat(records);\r\n if (records.length > 0 &&\r\n (await this.fireEvent(DataSetEvents.beforeDelete, { dataSet: this, records })) !== false &&\r\n (await confirm(confirmMessage || $l('DataSet', 'delete_selected_row_confirm'))) !== 'cancel') {\r\n this.remove(records);\r\n return this.pending.add(this.write(this.destroyed));\r\n }\r\n }\r\n }\r\n /**\r\n * 临时删除记录\r\n * @param records 记录或者记录数组\r\n */\r\n remove(records) {\r\n if (records) {\r\n const data = isArrayLike(records) ? records.slice() : [records];\r\n const { current, currentIndex } = this;\r\n data.forEach(record => {\r\n const index = this.indexOf(record);\r\n if (index !== -1) {\r\n this.splice(index, 1);\r\n }\r\n });\r\n if (!this.current) {\r\n const record = this.get(currentIndex) || this.get(this.length - 1);\r\n if (record) {\r\n record.isCurrent = true;\r\n }\r\n if (current !== record) {\r\n this.fireEvent(DataSetEvents.indexChange, { dataSet: this, record, previous: current });\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * 临时删除所有记录\r\n */\r\n removeAll() {\r\n const { current, length } = this;\r\n if (length) {\r\n this.forEach(this.deleteRecord, this);\r\n if (current) {\r\n this.fireEvent(DataSetEvents.indexChange, { dataSet: this, previous: current });\r\n }\r\n }\r\n }\r\n /**\r\n * 删除所有记录\r\n * @param confirmMessage 提示信息或弹窗的属性\r\n */\r\n async deleteAll(confirmMessage) {\r\n if (this.records.length > 0 &&\r\n (await confirm(confirmMessage || $l('DataSet', 'delete_all_row_confirm'))) !== 'cancel') {\r\n this.removeAll();\r\n return this.pending.add(this.write(this.destroyed));\r\n }\r\n }\r\n /**\r\n * 将若干数据记录插入记录堆栈顶部\r\n * @param records 数据集\r\n * @return 堆栈数量\r\n */\r\n push(...records) {\r\n checkParentByInsert(this);\r\n return this.records.push(...this.transferRecords(records));\r\n }\r\n /**\r\n * 将若干数据记录插入记录堆栈底部\r\n * @param records 数据集\r\n * @return 堆栈数量\r\n */\r\n unshift(...records) {\r\n checkParentByInsert(this);\r\n return this.records.unshift(...this.transferRecords(records));\r\n }\r\n /**\r\n * 从记录堆栈顶部获取记录\r\n * @return 记录\r\n */\r\n pop() {\r\n return this.deleteRecord(this.data.pop());\r\n }\r\n /**\r\n * 从记录堆栈底部获取记录\r\n * @return 记录\r\n */\r\n shift() {\r\n return this.deleteRecord(this.data.shift());\r\n }\r\n /**\r\n * 删除指定索引的若干记录,并可插入若干新记录\r\n * @param from 索引开始的位置\r\n * @default 0\r\n * @param deleteCount 删除的数量\r\n * @default 0\r\n * @param records 插入的若干新记录\r\n * @return 被删除的记录集\r\n */\r\n splice(from, deleteCount, ...records) {\r\n if (records.length) {\r\n checkParentByInsert(this);\r\n }\r\n const deleted = this.records.filter((record, index) => {\r\n if (record.status === RecordStatus.delete) {\r\n from += 1;\r\n }\r\n if (index >= from && deleteCount > 0 && record.status !== RecordStatus.delete) {\r\n this.deleteRecord(record);\r\n deleteCount -= 1;\r\n return true;\r\n }\r\n return false;\r\n });\r\n this.records.splice(from, 0, ...this.transferRecords(records));\r\n return deleted;\r\n }\r\n /**\r\n * 截取指定索引范围的记录集,不改变原记录堆栈\r\n * @param start 开始索引\r\n * @default 0\r\n * @param end 结束索引\r\n * @default 记录堆栈长度\r\n * @return 被删除的记录集\r\n */\r\n slice(start = 0, end = this.length) {\r\n return this.data.slice(start, end);\r\n }\r\n /**\r\n * 获取记录所在的索引\r\n * @param record 记录\r\n * @param fromIndex 开始检索的索引\r\n * @return 索引\r\n */\r\n indexOf(record, fromIndex) {\r\n return this.data.indexOf(record, fromIndex);\r\n }\r\n /**\r\n * 根据函数查找记录\r\n * @param fn 查询函数\r\n * @returns 记录\r\n */\r\n find(fn) {\r\n return this.data.find(fn);\r\n }\r\n /**\r\n * 根据函数查找记录所在的索引\r\n * @param fn 查询函数\r\n * @returns 索引\r\n */\r\n findIndex(fn) {\r\n return this.data.findIndex(fn);\r\n }\r\n /**\r\n * 根据函数遍历\r\n * @param fn 遍历函数\r\n * @param thisArg this对象\r\n */\r\n forEach(fn, thisArg) {\r\n this.data.forEach(fn, thisArg);\r\n }\r\n /**\r\n * 根据函数遍历并输出新数组\r\n * @param fn 遍历函数\r\n * @param thisArg this对象\r\n * @returns 输出新数组\r\n */\r\n map(fn, thisArg) {\r\n return this.data.map(fn, thisArg);\r\n }\r\n /**\r\n * 根据函数遍历,当有返回值为true时,输出true\r\n * @param fn 遍历函数\r\n * @param thisArg this对象\r\n * @returns boolean\r\n */\r\n some(fn, thisArg) {\r\n return this.data.some(fn, thisArg);\r\n }\r\n /**\r\n * 根据函数遍历,当有返回值为false时,输出false\r\n * @param fn 遍历函数\r\n * @param thisArg this对象\r\n * @returns boolean\r\n */\r\n every(fn, thisArg) {\r\n return this.data.every(fn, thisArg);\r\n }\r\n /**\r\n * 根据函数过滤并返回记录集\r\n * @param fn 过滤函数\r\n * @param thisArg this对象\r\n * @returns {Record[]}\r\n */\r\n filter(fn, thisArg) {\r\n return this.data.filter(fn, thisArg);\r\n }\r\n /**\r\n * 为数组中的所有元素调用指定的回调函数。 回调函数的返回值是累计结果,并在下次调用回调函数时作为参数提供。\r\n * @param fn 累计函数\r\n * @param initialValue 初始值\r\n * @returns {U}\r\n */\r\n reduce(fn, initialValue) {\r\n return this.data.reduce(fn, initialValue);\r\n }\r\n /**\r\n * 按降序调用数组中所有元素的指定回调函数。 回调函数的返回值是累计结果,并在下次调用回调函数时作为参数提供。\r\n * @param fn 累计函数\r\n * @param initialValue 初始值\r\n * @returns {U}\r\n */\r\n reduceRight(fn, initialValue) {\r\n return this.data.reduceRight(fn, initialValue);\r\n }\r\n /**\r\n * 反转记录的顺序。\r\n */\r\n reverse() {\r\n return (this.records = this.records.reverse());\r\n }\r\n /**\r\n * 服务端排序\r\n * @param fieldName\r\n */\r\n sort(fieldName) {\r\n const field = this.getField(fieldName);\r\n if (field) {\r\n const currents = getOrderFields(this.fields);\r\n currents.forEach(current => {\r\n if (current !== field) {\r\n current.order = undefined;\r\n }\r\n });\r\n if (!field.order || field.order === SortOrder.desc) {\r\n field.order = SortOrder.asc;\r\n }\r\n else {\r\n field.order = SortOrder.desc;\r\n }\r\n if (this.paging) {\r\n this.query();\r\n }\r\n else {\r\n this.records = this.records.sort(getFieldSorter(field));\r\n }\r\n }\r\n }\r\n /**\r\n * 选中记录\r\n * @param recordOrIndex 记录或记录索引\r\n */\r\n select(recordOrIndex) {\r\n const { selection } = this;\r\n if (selection) {\r\n let record = recordOrIndex;\r\n if (isNumber(recordOrIndex)) {\r\n record = this.get(recordOrIndex);\r\n }\r\n if (record && record.selectable && !record.isSelected) {\r\n let previous;\r\n if (selection === DataSetSelection.single) {\r\n this.selected.forEach((selected) => {\r\n selected.isSelected = false;\r\n previous = selected;\r\n });\r\n }\r\n if (record) {\r\n record.isSelected = true;\r\n }\r\n if (!this.inBatchSelection) {\r\n this.fireEvent(DataSetEvents.select, { dataSet: this, record, previous });\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * 取消选中记录\r\n * @param recordOrIndex 记录或记录索引\r\n */\r\n unSelect(recordOrIndex) {\r\n if (this.selection) {\r\n let record = recordOrIndex;\r\n if (isNumber(recordOrIndex)) {\r\n record = this.get(recordOrIndex);\r\n }\r\n if (record && record.selectable && record.isSelected) {\r\n record.isSelected = false;\r\n if (!this.inBatchSelection) {\r\n const cachedIndex = this.cachedSelected.indexOf(record);\r\n if (cachedIndex !== -1) {\r\n this.cachedSelected.splice(cachedIndex, 1);\r\n }\r\n this.fireEvent(DataSetEvents.unSelect, { dataSet: this, record });\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * 全选\r\n */\r\n selectAll(filter) {\r\n const { selection } = this;\r\n if (selection) {\r\n this.inBatchSelection = true;\r\n if (selection === DataSetSelection.single) {\r\n if (!this.currentSelected.length) {\r\n this.select(filter ? this.filter(filter)[0] : 0);\r\n }\r\n }\r\n else {\r\n this.records.forEach(record => {\r\n if (!filter || filter(record) !== false) {\r\n this.select(record);\r\n }\r\n });\r\n }\r\n this.fireEvent(DataSetEvents.selectAll, { dataSet: this });\r\n this.inBatchSelection = false;\r\n }\r\n }\r\n /**\r\n * 取消全选\r\n */\r\n unSelectAll() {\r\n if (this.selection) {\r\n this.inBatchSelection = true;\r\n this.currentSelected.forEach(record => {\r\n this.unSelect(record);\r\n });\r\n this.fireEvent(DataSetEvents.unSelectAll, { dataSet: this });\r\n this.inBatchSelection = false;\r\n }\r\n }\r\n clearCachedSelected() {\r\n this.setCachedSelected([]);\r\n }\r\n setCachedSelected(cachedSelected) {\r\n this.cachedSelected = cachedSelected;\r\n }\r\n /**\r\n * 获取指定索引的记录\r\n * @param index 索引\r\n * @returns {Record}\r\n */\r\n get(index) {\r\n const { data } = this;\r\n return data.length ? data[index] : undefined;\r\n }\r\n /**\r\n * 从树形数据中获取指定索引的根节点记录\r\n * @param index 索引\r\n * @returns {Record}\r\n */\r\n getFromTree(index) {\r\n const { treeData } = this;\r\n return treeData.length ? treeData[index] : undefined;\r\n }\r\n /**\r\n * 判断是否有新增、变更或者删除的记录\r\n * @return true | false\r\n */\r\n isModified() {\r\n return this.records.some(record => record.status !== RecordStatus.sync);\r\n }\r\n /**\r\n * 获取指定分页的记录集\r\n * @param page 如果page为空或者paging为server,则获取当前分页的记录集\r\n * @return 记录集\r\n */\r\n /**\r\n * 根据记录ID查找记录\r\n * @param id 记录ID\r\n * @return 记录\r\n */\r\n findRecordById(id) {\r\n if (id !== undefined) {\r\n return this.records.find(record => String(record.id) === String(id));\r\n }\r\n }\r\n /**\r\n * 校验数据记录是否有效\r\n * @param isSelected 是否只校验选中记录\r\n * @param noCascade 是否级联校验\r\n * @return true | false\r\n */\r\n validate(isSelected, noCascade) {\r\n return Promise.all((isSelected ? this.selected : this.data).map(record => record.validate(noCascade))).then(results => results.every(result => result));\r\n }\r\n /**\r\n * 根据字段名获取字段\r\n * @param fieldName 字段名\r\n * @returns 字段\r\n */\r\n getField(fieldName) {\r\n if (fieldName) {\r\n return this.fields.get(fieldName);\r\n }\r\n }\r\n /**\r\n * 获取分组字段名\r\n * @returns 字段名列表\r\n */\r\n getGroups() {\r\n return [...this.fields.entries()]\r\n .reduce((arr, [name, field]) => {\r\n const group = field.get('group');\r\n if (isNumber(group)) {\r\n arr[group] = name;\r\n }\r\n else if (group === true && !arr[0]) {\r\n arr[0] = name;\r\n }\r\n return arr;\r\n }, [])\r\n .filter(group => group !== undefined);\r\n }\r\n initFields(fields) {\r\n fields.forEach(field => {\r\n const { name } = field;\r\n if (name) {\r\n this.addField(name, field);\r\n }\r\n else {\r\n warning(false, 'DataSet create field failed. Please check if property name is exists on field.');\r\n }\r\n });\r\n }\r\n /*\r\n * 增加新字段\r\n * @param name 字段名\r\n * @param field 字段属性\r\n * @return 新增字段\r\n */\r\n addField(name, fieldProps = {}) {\r\n return processIntlField(name, fieldProps, (langName, langProps) => {\r\n const field = new Field(langProps, this);\r\n this.fields.set(langName, field);\r\n return field;\r\n }, this);\r\n }\r\n commitData(allData, total) {\r\n const { autoQueryAfterSubmit, primaryKey } = this.props;\r\n // 若有响应数据,进行数据回写\r\n if (allData.length) {\r\n const statusKey = getConfig('statusKey');\r\n const status = getConfig('status');\r\n const restCreatedData = [];\r\n const restUpdatedData = [];\r\n allData.forEach(data => {\r\n const dataStatus = data[statusKey];\r\n // 若有数据中含有__id,根据__id回写记录,否则根据主键回写非新增的记录\r\n const record = data.__id\r\n ? this.findRecordById(data.__id)\r\n : primaryKey &&\r\n dataStatus !== status[RecordStatus.add] &&\r\n this.records.find(r => r.get(primaryKey) === data[primaryKey]);\r\n if (record) {\r\n record.commit(data, this);\r\n }\r\n else if (dataStatus === status[RecordStatus.add]) {\r\n restCreatedData.push(data);\r\n }\r\n else if (dataStatus === status[RecordStatus.update]) {\r\n restUpdatedData.push(data);\r\n }\r\n });\r\n const { created, updated, destroyed } = this;\r\n // 没有回写成功的新增数据按顺序回写\r\n if (restCreatedData.length === created.length) {\r\n created.forEach((r, index) => r.commit(restCreatedData[index], this));\r\n }\r\n else if (autoQueryAfterSubmit) {\r\n // 若有新增数据没有回写成功, 必须重新查询来获取主键\r\n this.query();\r\n return this;\r\n }\r\n // 剩下未回写的非新增数据使用原数据进行回写\r\n if (restUpdatedData.length === updated.length) {\r\n updated.forEach((r, index) => r.commit(restUpdatedData[index], this));\r\n }\r\n else {\r\n updated.forEach(r => r.commit(r.toData(), this));\r\n }\r\n destroyed.forEach(r => r.commit(undefined, this));\r\n if (isNumber(total)) {\r\n this.totalCount = total;\r\n }\r\n }\r\n else if (autoQueryAfterSubmit) {\r\n // 无回写数据时自动进行查询\r\n warning(false, `The primary key which generated by database is not exists in each created records,\nbecause of no data \\`${this.dataKey}\\` from the response by \\`submit\\` or \\`delete\\` method.\nThen the query method will be auto invoke.`);\r\n this.query();\r\n }\r\n return this;\r\n }\r\n /**\r\n * 数据集头行级联绑定\r\n * @param ds 头数据集\r\n * @param name 头数据集字段名\r\n */\r\n bind(ds, name) {\r\n if (!name) {\r\n warning(false, 'DataSet: cascade binding need a name');\r\n return;\r\n }\r\n if (ds.children[name]) {\r\n warning(false, `DataSet: duplicate cascade binding of name<${name}>`);\r\n return;\r\n }\r\n ds.children[name] = this;\r\n this.parent = ds;\r\n const { current } = ds;\r\n if (current) {\r\n ds.syncChild(this, current, name);\r\n }\r\n else if (this.length) {\r\n this.loadData([]);\r\n }\r\n }\r\n /**\r\n * 设置查询的参数.\r\n * @param {string} para 参数名.\r\n * @param {any} value 参数值.\r\n */\r\n setQueryParameter(para, value) {\r\n if (isNil(value)) {\r\n delete this.queryParameter[para];\r\n }\r\n else {\r\n this.queryParameter[para] = value;\r\n }\r\n }\r\n loadData(allData = [], total) {\r\n this.storeSelected();\r\n const { paging, pageSize, props: { autoLocateFirst, idField, parentField }, } = this;\r\n allData = paging ? allData.slice(0, pageSize) : allData;\r\n this.fireEvent(DataSetEvents.beforeLoad, { dataSet: this, data: allData });\r\n this.originalData = this.processData(allData);\r\n this.records = this.originalData;\r\n if (total !== undefined && paging === true) {\r\n this.totalCount = total;\r\n }\r\n else {\r\n this.totalCount = allData.length;\r\n }\r\n this.releaseCachedSelected();\r\n const nextRecord = autoLocateFirst && (idField && parentField ? this.getFromTree(0) : this.get(0));\r\n if (nextRecord) {\r\n nextRecord.isCurrent = true;\r\n }\r\n this.fireEvent(DataSetEvents.indexChange, { dataSet: this, record: nextRecord });\r\n this.fireEvent(DataSetEvents.load, { dataSet: this });\r\n return this;\r\n }\r\n processData(allData) {\r\n return allData.map(data => {\r\n const record = data instanceof Record ? ((data.dataSet = this), data) : new Record(data, this);\r\n record.status = RecordStatus.sync;\r\n return record;\r\n });\r\n }\r\n deleteRecord(record) {\r\n if (record) {\r\n record.isSelected = false;\r\n record.isCurrent = false;\r\n const { selected, records } = this;\r\n const selectedIndex = selected.indexOf(record);\r\n if (selectedIndex !== -1) {\r\n selected.splice(selectedIndex, 1);\r\n }\r\n if (record.status === RecordStatus.add) {\r\n const index = records.indexOf(record);\r\n if (index !== -1) {\r\n records.splice(index, 1);\r\n }\r\n }\r\n else if (record.status !== RecordStatus.delete) {\r\n record.status = RecordStatus.delete;\r\n }\r\n }\r\n return record;\r\n }\r\n findInAllPage(index) {\r\n const { paging } = this;\r\n if (paging === true) {\r\n index = this.getIndexInCurrentPage(index);\r\n }\r\n return this.data[index];\r\n }\r\n getIndexInCurrentPage(index = this.currentIndex) {\r\n const { currentPage, pageSize } = this;\r\n return index - (currentPage - 1) * pageSize;\r\n }\r\n transferRecords(data) {\r\n return data.map(record => {\r\n const { dataSet } = record;\r\n if (dataSet === this) {\r\n const { records } = this;\r\n const index = records.indexOf(record);\r\n if (index !== -1) {\r\n records.splice(index, 1);\r\n }\r\n return record;\r\n }\r\n if (dataSet) {\r\n dataSet.remove(record);\r\n record = new Record(record.data, this);\r\n }\r\n record.dataSet = this;\r\n record.status = RecordStatus.add;\r\n return record;\r\n });\r\n }\r\n initChildren(children) {\r\n if (isArray(children)) {\r\n children.forEach(childDs => {\r\n if (childDs instanceof DataSet) {\r\n const { name } = childDs;\r\n if (name) {\r\n childDs.bind(this, name);\r\n }\r\n else {\r\n warning(false, 'cascade DataSet need a name');\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n Object.keys(children).forEach(childName => {\r\n const child = children[childName];\r\n if (child instanceof DataSet) {\r\n child.bind(this, childName);\r\n }\r\n else {\r\n warning(false, `cascade child<${childName}> must be instance of DataSet.`);\r\n }\r\n });\r\n }\r\n }\r\n initQueryDataSet(queryDataSet, queryFields) {\r\n if (queryFields) {\r\n queryDataSet = new DataSet({\r\n fields: queryFields,\r\n });\r\n }\r\n if (queryDataSet) {\r\n this.queryDataSet = queryDataSet;\r\n }\r\n }\r\n initEvents(events) {\r\n Object.keys(events).forEach(event => this.addEventListener(event, events[event]));\r\n }\r\n loadDataFromResponse(resp) {\r\n if (resp) {\r\n const { dataKey, totalKey } = this;\r\n const data = generateResponseData(resp, dataKey);\r\n const total = ObjectChainValue.get(resp, totalKey);\r\n this.loadData(data, total);\r\n }\r\n return this;\r\n }\r\n // private groupData(allData: object[]): object[] {\r\n // return this.getGroups().reverse()\r\n // .reduce((arr, name) => arr.sort(\r\n // (item1, item2) => String(item1[name]).localeCompare(String(item2[name])),\r\n // ), allData);\r\n // }\r\n async write(records, isSelect, noCascade) {\r\n if (records.length) {\r\n const [created, updated, destroyed] = prepareSubmitData(records, isSelect, noCascade);\r\n const axiosConfigs = [];\r\n const submitData = [\r\n ...prepareForSubmit('create', created, axiosConfigs, this),\r\n ...prepareForSubmit('update', updated, axiosConfigs, this),\r\n ...prepareForSubmit('destroy', destroyed, axiosConfigs, this),\r\n ];\r\n prepareForSubmit('submit', submitData, axiosConfigs, this);\r\n if (axiosConfigs.length) {\r\n try {\r\n this.changeSubmitStatus(DataSetStatus.submitting);\r\n const submitEventResult = await this.fireEvent(DataSetEvents.submit, {\r\n dataSet: this,\r\n data: [...created, ...updated, ...destroyed],\r\n });\r\n if (submitEventResult) {\r\n const result = await axiosStatic.all(axiosConfigs.map(config => this.axios(config)));\r\n return this.handleSubmitSuccess(result);\r\n }\r\n }\r\n catch (e) {\r\n this.handleSubmitFail(e);\r\n throw new DataSetRequestError(e);\r\n }\r\n finally {\r\n this.changeSubmitStatus(DataSetStatus.ready);\r\n }\r\n }\r\n }\r\n }\r\n async read(page = 1) {\r\n if (this.checkReadable(this.parent)) {\r\n try {\r\n this.changeStatus(DataSetStatus.loading);\r\n const data = await this.generateQueryParameter();\r\n const newConfig = axiosConfigAdapter('read', this, data, this.generateQueryString(page));\r\n if (newConfig.url) {\r\n const queryEventResult = await this.fireEvent(DataSetEvents.query, {\r\n dataSet: this,\r\n params: newConfig.params,\r\n data: newConfig.data,\r\n });\r\n if (queryEventResult) {\r\n const result = await this.axios(newConfig);\r\n runInAction(() => {\r\n this.currentPage = page;\r\n });\r\n return this.handleLoadSuccess(result);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.handleLoadFail(e);\r\n throw new DataSetRequestError(e);\r\n }\r\n finally {\r\n this.changeStatus(DataSetStatus.ready);\r\n }\r\n }\r\n }\r\n storeSelected() {\r\n if (this.cacheSelectionKeys) {\r\n this.setCachedSelected([\r\n ...this.cachedSelected.filter(record => record.isSelected),\r\n ...this.currentSelected.map(record => {\r\n record.isCurrent = false;\r\n record.isCached = true;\r\n return record;\r\n }),\r\n ]);\r\n }\r\n }\r\n releaseCachedSelected() {\r\n const { cacheSelectionKeys, cachedSelected } = this;\r\n if (cacheSelectionKeys) {\r\n this.data.forEach(record => {\r\n const index = cachedSelected.findIndex(cached => cacheSelectionKeys.every(key => record.get(key) === cached.get(key)));\r\n if (index !== -1) {\r\n record.isSelected = true;\r\n cachedSelected.splice(index, 1);\r\n }\r\n });\r\n }\r\n }\r\n changeStatus(status) {\r\n this.status = status;\r\n }\r\n changeSubmitStatus(status) {\r\n this.status = status;\r\n Object.values(this.children).forEach(ds => {\r\n if (ds instanceof DataSet) {\r\n ds.changeSubmitStatus(status);\r\n }\r\n });\r\n }\r\n handleCascade({ dataSet, record, previous, }) {\r\n if (dataSet.hasChildren) {\r\n dataSet.syncChildren(record, previous);\r\n }\r\n }\r\n handleLoadSuccess(resp) {\r\n const { loadSuccess = defaultFeedback.loadSuccess } = this.feedback;\r\n loadSuccess(resp);\r\n return resp;\r\n }\r\n handleLoadFail(e) {\r\n const { loadFailed = defaultFeedback.loadFailed } = this.feedback;\r\n this.fireEvent(DataSetEvents.loadFailed, { dataSet: this });\r\n loadFailed(e);\r\n }\r\n handleSubmitSuccess(resp) {\r\n const { dataKey, totalKey } = this;\r\n const { submitSuccess = defaultFeedback.submitSuccess } = this.feedback;\r\n const data = [];\r\n let total;\r\n resp.forEach(item => {\r\n data.push(...generateResponseData(item, dataKey));\r\n if (totalKey && isObject(item)) {\r\n const myTotal = ObjectChainValue.get(item, totalKey);\r\n if (!isNil(myTotal)) {\r\n total = myTotal;\r\n }\r\n }\r\n });\r\n const result = dataKey ? { success: true } : data;\r\n if (dataKey) {\r\n ObjectChainValue.set(result, dataKey, data);\r\n if (totalKey) {\r\n ObjectChainValue.set(result, totalKey, total);\r\n }\r\n }\r\n this.fireEvent(DataSetEvents.submitSuccess, { dataSet: this, data: result });\r\n this.commitData(data, total);\r\n submitSuccess(result);\r\n return result;\r\n }\r\n handleSubmitFail(e) {\r\n const { submitFailed = defaultFeedback.submitFailed } = this.feedback;\r\n this.fireEvent(DataSetEvents.submitFailed, { dataSet: this });\r\n submitFailed(e);\r\n this.destroyed.forEach(record => record.reset());\r\n }\r\n syncChildren(current, previous) {\r\n const { children } = this;\r\n const keys = Object.keys(children);\r\n const remoteKeys = [];\r\n keys.forEach(childName => {\r\n const ds = children[childName];\r\n if (previous && ds.status === DataSetStatus.ready && previous.dataSetSnapshot[childName]) {\r\n previous.dataSetSnapshot[childName] = ds.snapshot();\r\n }\r\n if (current) {\r\n const snapshot = current.dataSetSnapshot[childName];\r\n const cascadeRecords = current.cascadeRecordsMap[childName];\r\n if (snapshot instanceof DataSetSnapshot) {\r\n ds.restore(snapshot);\r\n }\r\n else if (cascadeRecords) {\r\n delete current.cascadeRecordsMap[childName];\r\n ds.loadData(cascadeRecords);\r\n }\r\n else if (!this.syncChild(ds, current, childName, true)) {\r\n ds.loadData([]);\r\n remoteKeys.push(childName);\r\n }\r\n }\r\n else {\r\n ds.loadData([]);\r\n }\r\n });\r\n if (current && remoteKeys.length) {\r\n this.syncChildrenRemote(remoteKeys, current);\r\n }\r\n }\r\n syncChild(ds, currentRecord, childName, onlyClient) {\r\n const childRecords = currentRecord.get(childName);\r\n if (currentRecord.status === RecordStatus.add || isArrayLike(childRecords)) {\r\n ds.clearCachedSelected();\r\n ds.loadData(childRecords ? childRecords.slice() : []);\r\n if (currentRecord.status === RecordStatus.add) {\r\n if (ds.length) {\r\n ds.forEach(record => (record.status = RecordStatus.add));\r\n }\r\n else if (ds.props.autoCreate) {\r\n ds.create();\r\n }\r\n }\r\n currentRecord.dataSetSnapshot[childName] = ds.snapshot();\r\n return true;\r\n }\r\n if (!onlyClient) {\r\n const oldSnapshot = ds.snapshot();\r\n ds.read(1).then(resp => {\r\n const { current } = this;\r\n if (current !== currentRecord) {\r\n ds = new DataSet().restore(oldSnapshot);\r\n }\r\n ds.clearCachedSelected();\r\n currentRecord.dataSetSnapshot[childName] = ds.loadDataFromResponse(resp).snapshot();\r\n });\r\n }\r\n return false;\r\n }\r\n checkReadable(parent) {\r\n if (parent) {\r\n const { current } = parent;\r\n if (!current || current.status === RecordStatus.add) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n generatePageQueryString(page) {\r\n const { paging, pageSize } = this;\r\n if (paging === true) {\r\n return { page, pagesize: pageSize };\r\n }\r\n return {};\r\n }\r\n generateOrderQueryString() {\r\n const { fields } = this;\r\n const orderField = getOrderFields(fields)[0];\r\n if (orderField) {\r\n const param = { sortname: orderField.name, sortorder: orderField.order };\r\n if (orderField.type === FieldType.object) {\r\n const bindField = findBindFieldBy(orderField, this.fields, 'valueField');\r\n if (bindField) {\r\n param.sortname = bindField.name;\r\n }\r\n }\r\n return param;\r\n }\r\n return {};\r\n }\r\n generateQueryString(page) {\r\n const order = this.generateOrderQueryString();\r\n const pageQuery = this.generatePageQueryString(page);\r\n const generatePageQuery = getConfig('generatePageQuery');\r\n if (typeof generatePageQuery === 'function') {\r\n return generatePageQuery({\r\n sortName: order.sortname,\r\n sortOrder: order.sortorder,\r\n pageSize: pageQuery.pagesize,\r\n page: pageQuery.page,\r\n });\r\n }\r\n return { ...pageQuery, ...order };\r\n }\r\n async generateQueryParameter() {\r\n const { parent, queryDataSet } = this;\r\n let parentParam = {};\r\n if (parent) {\r\n const { props: { primaryKey }, current, } = parent;\r\n if (current) {\r\n if (primaryKey) {\r\n parentParam[primaryKey] = current.get(primaryKey);\r\n }\r\n else {\r\n parentParam = current.toData();\r\n }\r\n }\r\n }\r\n if (queryDataSet) {\r\n await queryDataSet.ready();\r\n if (!(await queryDataSet.validate())) {\r\n throw new Error($l('DataSet', 'invalid_query_dataset'));\r\n }\r\n }\r\n let data = {};\r\n if (queryDataSet) {\r\n const { current } = queryDataSet;\r\n if (current) {\r\n data = current.toJSONData();\r\n delete data.__dirty;\r\n delete data.__id;\r\n delete data[getConfig('statusKey')];\r\n }\r\n }\r\n data = {\r\n ...data,\r\n ...this.queryParameter,\r\n ...parentParam,\r\n };\r\n return Object.keys(data).reduce((p, key) => {\r\n const value = data[key];\r\n if (!isEmpty(value)) {\r\n p[key] = value;\r\n }\r\n return p;\r\n }, {});\r\n }\r\n}\r\nDataSet.defaultProps = {\r\n autoCreate: false,\r\n autoQuery: false,\r\n autoQueryAfterSubmit: true,\r\n autoLocateFirst: true,\r\n selection: DataSetSelection.multiple,\r\n modifiedCheck: true,\r\n pageSize: 10,\r\n paging: true,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"name\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"records\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"fields\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"props\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"pageSize\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"totalCount\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"status\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"currentPage\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"selection\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DataSet.prototype, \"cachedSelected\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"axios\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"dataKey\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"totalKey\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"lang\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"queryUrl\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"submitUrl\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"tlsUrl\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"validateUrl\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"exportUrl\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"transport\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"feedback\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"data\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"dirtyRecords\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"created\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"updated\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"destroyed\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"selected\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"currentSelected\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"totalPage\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"currentIndex\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"length\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"treeRecords\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"treeData\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"paging\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"current\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"uniqueKeys\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"cacheSelectionKeys\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DataSet.prototype, \"all\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"restore\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"reset\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"remove\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"removeAll\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"deleteAll\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"push\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"unshift\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"pop\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"shift\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"splice\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"reverse\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"sort\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"select\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"unSelect\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"selectAll\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"unSelectAll\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"setCachedSelected\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"addField\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"commitData\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"loadData\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"storeSelected\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"releaseCachedSelected\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"changeStatus\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"changeSubmitStatus\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DataSet.prototype, \"syncChild\", null);\r\n","import DataSet from './DataSet';\r\nexport default DataSet;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Children, createElement, isValidElement, } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport { action as mobxAction, computed, isArrayLike, observable, runInAction } from 'mobx';\r\nimport omit from 'lodash/omit';\r\nimport isNumber from 'lodash/isNumber';\r\nimport isString from 'lodash/isString';\r\nimport noop from 'lodash/noop';\r\nimport defaultTo from 'lodash/defaultTo';\r\nimport Responsive from 'choerodon-ui/lib/responsive/Responsive';\r\nimport { getConfig, getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport axios from '../axios';\r\nimport autobind from '../_util/autobind';\r\nimport { getFieldsById } from '../field/FormField';\r\nimport FormContext from './FormContext';\r\nimport DataSetComponent from '../data-set/DataSetComponent';\r\nimport { LabelAlign, LabelLayout, ResponsiveKeys } from './enum';\r\nimport { defaultColumns, defaultLabelWidth, FIELD_SUFFIX, getProperty, normalizeLabelWidth, } from './utils';\r\n/**\r\n * 表单name生成器\r\n */\r\nconst NameGen = (function* (start) {\r\n while (true) {\r\n start += 1;\r\n yield `form-${start}`;\r\n }\r\n})(0);\r\nconst labelWidthPropTypes = PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.arrayOf(PropTypes.number),\r\n]);\r\nconst labelAlignPropTypes = PropTypes.oneOf([LabelAlign.left, LabelAlign.center, LabelAlign.right]);\r\nconst labelLayoutPropTypes = PropTypes.oneOf([\r\n LabelLayout.horizontal,\r\n LabelLayout.vertical,\r\n LabelLayout.placeholder,\r\n LabelLayout.float,\r\n]);\r\nlet Form = class Form extends DataSetComponent {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.fields = [];\r\n this.name = NameGen.next().value;\r\n runInAction(() => {\r\n this.responsiveItems = [];\r\n });\r\n }\r\n get axios() {\r\n return this.observableProps.axios || getConfig('axios') || axios;\r\n }\r\n get dataSet() {\r\n const { record } = this;\r\n if (record) {\r\n return record.dataSet;\r\n }\r\n return this.observableProps.dataSet;\r\n }\r\n get record() {\r\n const { record, dataSet, dataIndex } = this.observableProps;\r\n if (record) {\r\n return record;\r\n }\r\n if (dataSet) {\r\n if (isNumber(dataIndex)) {\r\n return dataSet.get(dataIndex);\r\n }\r\n return dataSet.current;\r\n }\r\n return undefined;\r\n }\r\n get dataIndex() {\r\n return this.observableProps.dataIndex;\r\n }\r\n get columns() {\r\n const { columns } = this.observableProps;\r\n if (isNumber(columns)) {\r\n return columns;\r\n }\r\n if (columns) {\r\n const responsiveColumns = this.responsiveItems[0];\r\n if (responsiveColumns) {\r\n return responsiveColumns;\r\n }\r\n }\r\n return defaultColumns;\r\n }\r\n get labelWidth() {\r\n const { labelWidth } = this.observableProps;\r\n if (isNumber(labelWidth) || isArrayLike(labelWidth)) {\r\n return labelWidth;\r\n }\r\n if (labelWidth) {\r\n const responsiveWidth = this.responsiveItems[1];\r\n if (responsiveWidth !== undefined) {\r\n return responsiveWidth;\r\n }\r\n }\r\n return defaultLabelWidth;\r\n }\r\n get labelAlign() {\r\n const { labelAlign } = this.observableProps;\r\n const defaultLabelAlign = this.labelLayout === LabelLayout.vertical ? LabelAlign.left : LabelAlign.right;\r\n if (isString(labelAlign)) {\r\n return labelAlign;\r\n }\r\n if (labelAlign) {\r\n const responsiveAlign = this.responsiveItems[2];\r\n if (responsiveAlign) {\r\n return responsiveAlign;\r\n }\r\n }\r\n return defaultLabelAlign;\r\n }\r\n get labelLayout() {\r\n const defaultLabelLayout = getConfig('labelLayout') || LabelLayout.horizontal;\r\n const { labelLayout } = this.observableProps;\r\n if (isString(labelLayout)) {\r\n return labelLayout;\r\n }\r\n if (labelLayout) {\r\n const responsiveLabelLayout = this.responsiveItems[3];\r\n if (responsiveLabelLayout) {\r\n return responsiveLabelLayout;\r\n }\r\n }\r\n return defaultLabelLayout;\r\n }\r\n get pristine() {\r\n return this.observableProps.pristine;\r\n }\r\n isDisabled() {\r\n return super.isDisabled() || this.context.disabled;\r\n }\r\n getObservableProps(props, context) {\r\n return {\r\n dataSet: 'dataSet' in props ? props.dataSet : context.dataSet,\r\n record: 'record' in props ? props.record : context.record,\r\n dataIndex: defaultTo(props.dataIndex, context.dataIndex),\r\n labelLayout: 'labelLayout' in props ? props.labelLayout : context.labelLayout,\r\n labelAlign: 'labelAlign' in props ? props.labelAlign : context.labelAlign,\r\n labelWidth: defaultTo(props.labelWidth, context.labelWidth),\r\n pristine: 'pristine' in props ? props.pristine : context.pristine,\r\n columns: props.columns,\r\n };\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'record',\r\n 'dataIndex',\r\n 'onSuccess',\r\n 'onError',\r\n 'processParams',\r\n 'labelWidth',\r\n 'labelAlign',\r\n 'labelLayout',\r\n 'columns',\r\n 'pristine',\r\n 'axios',\r\n ]);\r\n otherProps.onSubmit = this.handleSubmit;\r\n otherProps.onReset = this.handleReset;\r\n if (!otherProps.name) {\r\n otherProps.name = this.name;\r\n }\r\n return otherProps;\r\n }\r\n getHeader() {\r\n const { props: { header }, prefixCls, } = this;\r\n if (header) {\r\n return (<div key=\"form-header\" className={`${prefixCls}-header`}>\n {header}\n </div>);\r\n }\r\n }\r\n getClassName(...props) {\r\n const { prefixCls, labelLayout } = this;\r\n return super.getClassName({\r\n ...props,\r\n [`${prefixCls}-float-label`]: labelLayout === LabelLayout.float,\r\n });\r\n }\r\n rasterizedChildren() {\r\n const { dataSet, record, columns, labelLayout, labelAlign, props: { children }, } = this;\r\n const prefixCls = getProPrefixCls(FIELD_SUFFIX);\r\n const labelWidth = normalizeLabelWidth(this.labelWidth, columns);\r\n const rows = [];\r\n let cols = [];\r\n let rowIndex = 0;\r\n let colIndex = 0;\r\n const matrix = [[]];\r\n let noLabel = true;\r\n const childrenArray = [];\r\n Children.forEach(children, child => {\r\n if (isValidElement(child)) {\r\n if (noLabel === true &&\r\n labelLayout === LabelLayout.horizontal &&\r\n getProperty(child.props, 'label', dataSet, record)) {\r\n noLabel = false;\r\n }\r\n childrenArray.push(child);\r\n }\r\n });\r\n function completeLine() {\r\n if (cols.length) {\r\n rows.push(<tr key={`row-${rowIndex}`}>{cols}</tr>);\r\n cols = [];\r\n }\r\n rowIndex++;\r\n colIndex = 0;\r\n matrix[rowIndex] = matrix[rowIndex] || [];\r\n }\r\n for (let index = 0, len = childrenArray.length; index < len;) {\r\n const { props, key, type } = childrenArray[index];\r\n const label = getProperty(props, 'label', dataSet, record);\r\n const fieldLabelWidth = getProperty(props, 'labelWidth', dataSet, record);\r\n const required = getProperty(props, 'required', dataSet, record);\r\n const { rowSpan = 1, colSpan = 1, newLine, className, placeholder, ...otherProps } = props;\r\n let newColSpan = colSpan;\r\n const currentRow = matrix[rowIndex];\r\n if (newLine) {\r\n if (colIndex !== 0) {\r\n completeLine();\r\n continue;\r\n }\r\n }\r\n while (currentRow[colIndex]) {\r\n colIndex++;\r\n }\r\n if (colIndex >= columns) {\r\n completeLine();\r\n continue;\r\n }\r\n if (newColSpan + colIndex > columns) {\r\n newColSpan = columns - colIndex;\r\n }\r\n for (let i = colIndex, k = colIndex + newColSpan; i < k; i++) {\r\n if (currentRow[i]) {\r\n newColSpan = i - colIndex;\r\n break;\r\n }\r\n }\r\n for (let i = rowIndex; i < rowSpan + rowIndex; i++) {\r\n for (let j = colIndex, k = newColSpan + colIndex; j < k; j++) {\r\n if (!matrix[i]) {\r\n matrix[i] = [];\r\n }\r\n matrix[i][j] = true;\r\n }\r\n }\r\n const isOutput = labelLayout === LabelLayout.horizontal && type.displayName === 'Output';\r\n const labelClassName = classNames(`${prefixCls}-label`, `${prefixCls}-label-${labelAlign}`, {\r\n [`${prefixCls}-required`]: required,\r\n [`${prefixCls}-label-vertical`]: labelLayout === LabelLayout.vertical,\r\n [`${prefixCls}-label-output`]: isOutput,\r\n });\r\n const wrapperClassName = classNames(`${prefixCls}-wrapper`, {\r\n [`${prefixCls}-output`]: isOutput,\r\n });\r\n if (!noLabel) {\r\n if (!isNaN(fieldLabelWidth)) {\r\n labelWidth[colIndex] = Math.max(labelWidth[colIndex], fieldLabelWidth);\r\n }\r\n cols.push(<td key={`row-${rowIndex}-col-${colIndex}-label`} className={labelClassName} rowSpan={rowSpan}>\n <label>{label}</label>\n </td>);\r\n }\r\n const fieldElementProps = {\r\n key,\r\n className: classNames(prefixCls, className),\r\n placeholder: label && labelLayout === LabelLayout.placeholder ? label : placeholder,\r\n ...otherProps,\r\n };\r\n if (!isString(type)) {\r\n fieldElementProps.rowIndex = rowIndex;\r\n fieldElementProps.colIndex = colIndex;\r\n }\r\n cols.push(<td key={`row-${rowIndex}-col-${colIndex}-field`} colSpan={noLabel ? newColSpan : newColSpan * 2 - 1} rowSpan={rowSpan}>\n {labelLayout === LabelLayout.vertical && (<label className={labelClassName}>{label}</label>)}\n <div className={wrapperClassName}>{createElement(type, fieldElementProps)}</div>\n </td>);\r\n if (index === len - 1) {\r\n completeLine();\r\n }\r\n else {\r\n colIndex++;\r\n }\r\n index++;\r\n }\r\n cols = [];\r\n if (!noLabel) {\r\n for (let i = 0; i < columns; i++) {\r\n cols.push(<col key={`label-${i}`} style={{ width: pxToRem(labelWidth[i % columns]) }}/>, <col key={`wrapper-${i}`}/>);\r\n }\r\n }\r\n return [\r\n this.getHeader(),\r\n <table key=\"form-body\">\n {cols.length ? <colgroup>{cols}</colgroup> : undefined}\n <tbody>{rows}</tbody>\n </table>,\r\n ];\r\n }\r\n render() {\r\n const { labelWidth, labelAlign, labelLayout, pristine, dataSet, record, dataIndex, observableProps, } = this;\r\n const { formNode } = this.context;\r\n const value = {\r\n formNode: formNode || this,\r\n dataSet,\r\n dataIndex,\r\n record,\r\n labelWidth,\r\n labelAlign,\r\n labelLayout,\r\n pristine,\r\n disabled: this.isDisabled(),\r\n };\r\n let children = this.rasterizedChildren();\r\n if (!formNode) {\r\n children = (<form {...this.getMergedProps()} noValidate>\n {children}\n </form>);\r\n }\r\n return (<Responsive items={[\r\n observableProps.columns,\r\n observableProps.labelWidth,\r\n observableProps.labelAlign,\r\n observableProps.labelLayout,\r\n ]} onChange={this.handleResponsive}>\n <FormContext.Provider value={value}>{children}</FormContext.Provider>\n </Responsive>);\r\n }\r\n handleResponsive(items) {\r\n this.responsiveItems = items;\r\n }\r\n async handleSubmit(e) {\r\n e.preventDefault();\r\n e.persist();\r\n if (await this.checkValidity()) {\r\n const { target, action, dataSet, method, processParams = noop, onSuccess = noop, onError = noop, onSubmit = noop, } = this.props;\r\n onSubmit(e);\r\n try {\r\n if (dataSet) {\r\n onSuccess(await dataSet.submit());\r\n }\r\n else if (action) {\r\n if (target && this.element) {\r\n this.element.submit();\r\n }\r\n else {\r\n onSuccess(await this.axios[method || 'get'](action, processParams(e)));\r\n }\r\n }\r\n }\r\n catch (error) {\r\n onError(error);\r\n }\r\n }\r\n }\r\n handleReset(e) {\r\n const { onReset = noop } = this.props;\r\n const { record } = this;\r\n onReset(e);\r\n if (!e.isDefaultPrevented()) {\r\n if (record) {\r\n record.reset();\r\n }\r\n else {\r\n this.getFields().forEach(field => field.reset());\r\n }\r\n }\r\n }\r\n checkValidity() {\r\n const { dataSet } = this;\r\n if (dataSet) {\r\n if (!dataSet.length) {\r\n dataSet.create();\r\n }\r\n return dataSet.validate();\r\n }\r\n return Promise.all(this.getFields().map(field => field.checkValidity())).then(results => results.every(result => result));\r\n }\r\n getFields() {\r\n const { id } = this.props;\r\n if (id) {\r\n return [].concat(this.fields, getFieldsById(id));\r\n }\r\n return this.fields;\r\n }\r\n getField(name) {\r\n return this.getFields().find(field => field.props.name === name);\r\n }\r\n addField(field) {\r\n this.fields.push(field);\r\n }\r\n removeField(field) {\r\n const index = this.fields.indexOf(field);\r\n if (index !== -1) {\r\n this.fields.splice(index, 1);\r\n }\r\n }\r\n};\r\nForm.displayName = 'Form';\r\nForm.propTypes = {\r\n /**\r\n * 表单提交请求地址\r\n */\r\n action: PropTypes.string,\r\n /**\r\n * 表单提交的HTTP Method\r\n * 可选值:POST | GET\r\n * @default POST\r\n */\r\n method: PropTypes.string,\r\n /**\r\n * 表单提交的目标\r\n * 当表单设置了设置target且没有dataSet时作浏览器默认提交,否则作Ajax提交\r\n */\r\n target: PropTypes.string,\r\n /**\r\n * Ajax提交时的参数回调\r\n */\r\n processParams: PropTypes.func,\r\n /**\r\n * 内部控件的标签的宽度\r\n */\r\n labelWidth: PropTypes.oneOfType([\r\n labelWidthPropTypes,\r\n PropTypes.shape({\r\n [ResponsiveKeys.xs]: labelWidthPropTypes,\r\n [ResponsiveKeys.sm]: labelWidthPropTypes,\r\n [ResponsiveKeys.md]: labelWidthPropTypes,\r\n [ResponsiveKeys.lg]: labelWidthPropTypes,\r\n [ResponsiveKeys.xl]: labelWidthPropTypes,\r\n [ResponsiveKeys.xxl]: labelWidthPropTypes,\r\n }),\r\n ]),\r\n /**\r\n * 标签文字对齐方式\r\n * 可选值: 'left' | 'center' | 'right'\r\n */\r\n labelAlign: PropTypes.oneOfType([\r\n labelAlignPropTypes,\r\n PropTypes.shape({\r\n [ResponsiveKeys.xs]: labelAlignPropTypes,\r\n [ResponsiveKeys.sm]: labelAlignPropTypes,\r\n [ResponsiveKeys.md]: labelAlignPropTypes,\r\n [ResponsiveKeys.lg]: labelAlignPropTypes,\r\n [ResponsiveKeys.xl]: labelAlignPropTypes,\r\n [ResponsiveKeys.xxl]: labelAlignPropTypes,\r\n }),\r\n ]),\r\n /**\r\n * 标签位置\r\n * 可选值: 'horizontal' | 'vertical' | 'placeholder' | 'float' | 'none'\r\n */\r\n labelLayout: PropTypes.oneOfType([\r\n labelLayoutPropTypes,\r\n PropTypes.shape({\r\n [ResponsiveKeys.xs]: labelLayoutPropTypes,\r\n [ResponsiveKeys.sm]: labelLayoutPropTypes,\r\n [ResponsiveKeys.md]: labelLayoutPropTypes,\r\n [ResponsiveKeys.lg]: labelLayoutPropTypes,\r\n [ResponsiveKeys.xl]: labelLayoutPropTypes,\r\n [ResponsiveKeys.xxl]: labelLayoutPropTypes,\r\n }),\r\n ]),\r\n /**\r\n * 表单列数\r\n */\r\n columns: PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.shape({\r\n [ResponsiveKeys.xs]: PropTypes.number,\r\n [ResponsiveKeys.sm]: PropTypes.number,\r\n [ResponsiveKeys.md]: PropTypes.number,\r\n [ResponsiveKeys.lg]: PropTypes.number,\r\n [ResponsiveKeys.xl]: PropTypes.number,\r\n [ResponsiveKeys.xxl]: PropTypes.number,\r\n }),\r\n ]),\r\n /**\r\n * 表单头\r\n */\r\n header: PropTypes.string,\r\n /**\r\n * 提交回调\r\n */\r\n onSubmit: PropTypes.func,\r\n /**\r\n * 重置回调\r\n */\r\n onReset: PropTypes.func,\r\n /**\r\n * 提交成功回调\r\n */\r\n onSuccess: PropTypes.func,\r\n /**\r\n * 提交失败回调\r\n */\r\n onError: PropTypes.func,\r\n ...DataSetComponent.propTypes,\r\n};\r\nForm.defaultProps = {\r\n suffixCls: 'form',\r\n columns: defaultColumns,\r\n labelWidth: defaultLabelWidth,\r\n};\r\nForm.contextType = FormContext;\r\ntslib_1.__decorate([\r\n observable\r\n], Form.prototype, \"responsiveItems\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"axios\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"dataSet\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"record\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"dataIndex\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"columns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"labelWidth\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"labelAlign\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"labelLayout\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Form.prototype, \"pristine\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n mobxAction\r\n], Form.prototype, \"handleResponsive\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Form.prototype, \"handleSubmit\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Form.prototype, \"handleReset\", null);\r\nForm = tslib_1.__decorate([\r\n observer\r\n], Form);\r\nexport default Form;\r\n","import Form from './Form';\r\nexport default Form;\r\n","import { PureComponent } from 'react';\r\nimport { findDOMNode } from 'react-dom';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\nclass ReactResizeObserver extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.resizeObserver = null;\r\n this.width = 0;\r\n this.height = 0;\r\n this.onResize = (entries) => {\r\n const { onResize, resizeProp } = this.props;\r\n const { target, contentRect: { width, height }, } = entries[0];\r\n /**\r\n * getBoundingClientRect return wrong size in transform case.\r\n */\r\n // const { width, height } = target.getBoundingClientRect();\r\n const fixedWidth = Math.floor(width);\r\n const fixedHeight = Math.floor(height);\r\n if ((this.width !== fixedWidth && ['width', 'both'].includes(resizeProp)) ||\r\n (this.height !== fixedHeight && ['height', 'both'].includes(resizeProp))) {\r\n this.width = fixedWidth;\r\n this.height = fixedHeight;\r\n if (onResize) {\r\n onResize(fixedWidth, fixedHeight, target);\r\n }\r\n }\r\n };\r\n }\r\n componentDidMount() {\r\n this.onComponentUpdated();\r\n }\r\n componentDidUpdate() {\r\n this.onComponentUpdated();\r\n }\r\n componentWillUnmount() {\r\n this.destroyObserver();\r\n }\r\n onComponentUpdated() {\r\n const { disabled } = this.props;\r\n const element = findDOMNode(this);\r\n if (!this.resizeObserver && !disabled && element) {\r\n // Add resize observer\r\n this.resizeObserver = new ResizeObserver(this.onResize);\r\n this.resizeObserver.observe(element);\r\n }\r\n else if (disabled) {\r\n // Remove resize observer\r\n this.destroyObserver();\r\n }\r\n }\r\n destroyObserver() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n this.resizeObserver = null;\r\n }\r\n }\r\n render() {\r\n const { children = null } = this.props;\r\n return children;\r\n }\r\n}\r\nReactResizeObserver.defaultProps = {\r\n resizeProp: 'both',\r\n};\r\nexport default ReactResizeObserver;\r\n","export var ViewMode;\r\n(function (ViewMode) {\r\n ViewMode[\"box\"] = \"box\";\r\n ViewMode[\"button\"] = \"button\";\r\n})(ViewMode || (ViewMode = {}));\r\n","import { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { get } from 'mobx';\r\nimport { ColumnAlign, ColumnLock } from './enum';\r\nimport { ShowHelp } from '../field/enum';\r\nexport const defaultMinWidth = 100;\r\n/* eslint-disable react/prefer-stateless-function,react/no-unused-prop-types */\r\nexport default class Column extends Component {\r\n}\r\nColumn.propTypes = {\r\n /**\r\n * 列对照的字段名\r\n */\r\n name: PropTypes.string,\r\n /**\r\n * 列宽\r\n * 不推荐给所有列设置宽度,而是给某一列不设置宽度达到自动宽度的效果\r\n */\r\n width: PropTypes.number,\r\n /**\r\n * 最小列宽\r\n */\r\n minWidth: PropTypes.number,\r\n /**\r\n * 列头\r\n */\r\n header: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.func]),\r\n /**\r\n * 列脚\r\n */\r\n footer: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.func]),\r\n /**\r\n * 单元格渲染回调\r\n */\r\n renderer: PropTypes.func,\r\n /**\r\n * 编辑器\r\n */\r\n editor: PropTypes.oneOfType([PropTypes.element, PropTypes.func, PropTypes.bool]),\r\n /**\r\n * 是否锁定\r\n * 可选值: false | true | 'left' | 'right'\r\n * @default false\r\n */\r\n lock: PropTypes.oneOf([ColumnLock.left, ColumnLock.right, true, false]),\r\n /**\r\n * 文字对齐方式\r\n * 可选值: 'left' | 'center' | 'right'\r\n */\r\n align: PropTypes.oneOf([ColumnAlign.left, ColumnAlign.center, ColumnAlign.right]),\r\n /**\r\n * 是否可调整宽度\r\n * @default true\r\n */\r\n resizable: PropTypes.bool,\r\n /**\r\n * 是否可排序\r\n * @default false\r\n */\r\n sortable: PropTypes.bool,\r\n /**\r\n * 是否可隐藏,设为false时不会出现在列过滤选项中\r\n * @default true\r\n */\r\n hideable: PropTypes.bool,\r\n /**\r\n * 是否可排序\r\n * @default false\r\n */\r\n /**\r\n * 列头提示信息\r\n */\r\n help: PropTypes.string,\r\n /**\r\n * 显示提示信息的方式\r\n *\r\n */\r\n showHelp: PropTypes.oneOf([ShowHelp.tooltip, ShowHelp.newLine, ShowHelp.none]),\r\n hidden: PropTypes.bool,\r\n colSpan: PropTypes.number,\r\n rowSpan: PropTypes.number,\r\n children: PropTypes.array,\r\n};\r\nColumn.defaultProps = {\r\n hidden: false,\r\n lock: false,\r\n resizable: true,\r\n sortable: false,\r\n hideable: true,\r\n minWidth: defaultMinWidth,\r\n showHelp: ShowHelp.tooltip,\r\n};\r\nexport function minColumnWidth(col) {\r\n const hidden = get(col, 'hidden');\r\n if (hidden) {\r\n return 0;\r\n }\r\n const width = get(col, 'width');\r\n const min = get(col, 'minWidth');\r\n const minWidth = min === undefined ? defaultMinWidth : min;\r\n if (width === undefined) {\r\n return minWidth;\r\n }\r\n return Math.min(width, minWidth);\r\n}\r\nexport function columnWidth(col) {\r\n const hidden = get(col, 'hidden');\r\n if (hidden) {\r\n return 0;\r\n }\r\n const width = get(col, 'width');\r\n if (width === undefined) {\r\n const minWidth = get(col, 'minWidth');\r\n if (minWidth === undefined) {\r\n return defaultMinWidth;\r\n }\r\n return minWidth;\r\n }\r\n return width;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action, computed } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport noop from 'lodash/noop';\r\nimport { FormField } from '../field/FormField';\r\nimport autobind from '../_util/autobind';\r\nimport { ViewMode } from './enum';\r\nimport { $l } from '../locale-context';\r\nimport { LabelLayout } from '../form/enum';\r\nexport class Radio extends FormField {\r\n constructor() {\r\n super(...arguments);\r\n this.type = 'radio';\r\n }\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('Radio', label ? 'value_missing' : 'value_missing_no_label', { label }),\r\n };\r\n }\r\n get checkedValue() {\r\n const { value = 'on' } = this.props;\r\n return value;\r\n }\r\n get isControlled() {\r\n return this.props.checked !== undefined;\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), ['value', 'readOnly', 'mode']);\r\n otherProps.type = this.type;\r\n // if (this.isReadOnly()) {\r\n // otherProps.disabled = true;\r\n // }\r\n otherProps.onMouseDown = this.handleMouseDown;\r\n otherProps.onClick = otherProps.onChange;\r\n otherProps.onChange = noop;\r\n return otherProps;\r\n }\r\n renderWrapper() {\r\n const checked = this.isChecked();\r\n return (<label key=\"wrapper\" {...this.getWrapperProps()}>\n <input {...this.getOtherProps()} checked={checked} value={this.checkedValue}/>\n {this.renderInner()}\n {this.getTextNode()}\n {this.renderFloatLabel()}\n </label>);\r\n }\r\n renderInner() {\r\n return <span className={`${this.prefixCls}-inner`}/>;\r\n }\r\n /**\r\n * 当使用label代替children时,不需要展示float label\r\n *\r\n * @readonly\r\n * @memberof Radio\r\n */\r\n get hasFloatLabel() {\r\n return this.getLabelChildren() ? false : super.hasFloatLabel;\r\n }\r\n /**\r\n * 没有children时,使用label替代children\r\n *\r\n * @returns {ReactNode} label\r\n * @memberof Radio\r\n */\r\n getLabelChildren() {\r\n const { labelLayout } = this;\r\n return (labelLayout &&\r\n ![LabelLayout.horizontal, LabelLayout.vertical, LabelLayout.none].includes(labelLayout) &&\r\n this.getLabel());\r\n }\r\n getChildrenText() {\r\n return this.props.children;\r\n }\r\n getTextNode() {\r\n const { prefixCls } = this;\r\n const text = this.getChildrenText() || this.getLabelChildren();\r\n if (text) {\r\n return <span className={`${prefixCls}-label`}>{text}</span>;\r\n }\r\n }\r\n getWrapperClassNames(...args) {\r\n const { prefixCls, props: { mode }, } = this;\r\n return super.getWrapperClassNames({\r\n [`${prefixCls}-button`]: mode === ViewMode.button,\r\n }, ...args);\r\n }\r\n isChecked() {\r\n const { checked } = this.props;\r\n const { name, dataSet, checkedValue } = this;\r\n if (dataSet && name) {\r\n return this.getDataSetValue() === checkedValue;\r\n }\r\n return checked;\r\n }\r\n handleMouseDown(e) {\r\n // e.stopPropagation();\r\n const { onMouseDown } = this.props;\r\n if (typeof onMouseDown === 'function') {\r\n onMouseDown(e);\r\n }\r\n }\r\n handleChange(e) {\r\n const { onClick = noop } = this.props;\r\n const { checked } = e.target;\r\n onClick(e);\r\n this.setChecked(checked);\r\n }\r\n setChecked(checked) {\r\n if (checked) {\r\n this.setValue(this.checkedValue);\r\n }\r\n }\r\n getOldValue() {\r\n return this.isChecked() ? this.checkedValue : undefined;\r\n }\r\n}\r\nRadio.displayName = 'Radio';\r\nRadio.propTypes = {\r\n /**\r\n * <受控>是否选中\r\n */\r\n checked: PropTypes.bool,\r\n /**\r\n * 初始是否选中\r\n */\r\n defaultChecked: PropTypes.bool,\r\n /**\r\n * 显示模式\r\n * 可选值: button | box\r\n * @default box\r\n */\r\n mode: PropTypes.oneOf([ViewMode.button, ViewMode.box]),\r\n ...FormField.propTypes,\r\n};\r\nRadio.defaultProps = {\r\n ...FormField.defaultProps,\r\n suffixCls: 'radio',\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], Radio.prototype, \"defaultValidationMessages\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Radio.prototype, \"handleMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Radio.prototype, \"handleChange\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Radio.prototype, \"setChecked\", null);\r\nlet ObserverRadio = class ObserverRadio extends Radio {\r\n};\r\nObserverRadio.defaultProps = Radio.defaultProps;\r\nObserverRadio = tslib_1.__decorate([\r\n observer\r\n], ObserverRadio);\r\nexport default ObserverRadio;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport { action, runInAction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport { Radio } from '../radio/Radio';\r\nimport { BooleanValue } from '../data-set/enum';\r\nexport class CheckBox extends Radio {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.type = 'checkbox';\r\n runInAction(() => {\r\n this.value = this.props.defaultChecked ? this.checkedValue : this.unCheckedValue;\r\n });\r\n }\r\n get unCheckedValue() {\r\n const { unCheckedValue } = this.props;\r\n if (unCheckedValue !== undefined) {\r\n return unCheckedValue;\r\n }\r\n const { field } = this;\r\n if (field) {\r\n return field.get(BooleanValue.falseValue);\r\n }\r\n return false;\r\n }\r\n get checkedValue() {\r\n const { value } = this.props;\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n const { field } = this;\r\n if (field) {\r\n return field.get(BooleanValue.trueValue);\r\n }\r\n return true;\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), [\r\n 'defaultChecked',\r\n 'unCheckedValue',\r\n 'unCheckedChildren',\r\n 'indeterminate',\r\n ]);\r\n }\r\n renderInner() {\r\n return <i className={`${this.prefixCls}-inner`}/>;\r\n }\r\n getChildrenText() {\r\n const { children, unCheckedChildren } = this.props;\r\n return this.isChecked() ? children : unCheckedChildren || children;\r\n }\r\n getWrapperClassNames() {\r\n const { prefixCls, props: { indeterminate }, } = this;\r\n return super.getWrapperClassNames({\r\n [`${prefixCls}-indeterminate`]: indeterminate,\r\n });\r\n }\r\n isChecked() {\r\n const { checked, indeterminate } = this.props;\r\n if (indeterminate) {\r\n return false;\r\n }\r\n const { name, dataSet, checkedValue } = this;\r\n if (dataSet && name) {\r\n return this.getValues().indexOf(checkedValue) !== -1;\r\n }\r\n if (checked !== undefined) {\r\n return checked;\r\n }\r\n return this.value === checkedValue;\r\n }\r\n getDataSetValues() {\r\n const values = this.getDataSetValue();\r\n if (values === undefined) {\r\n return [];\r\n }\r\n return [].concat(values);\r\n }\r\n setValue(value) {\r\n const { record, checkedValue, multiple } = this;\r\n if (record) {\r\n let values;\r\n if (multiple) {\r\n values = this.getValues();\r\n if (value === checkedValue) {\r\n values.push(value);\r\n }\r\n else {\r\n const index = values.indexOf(checkedValue);\r\n if (index !== -1) {\r\n values.splice(index, 1);\r\n }\r\n }\r\n }\r\n else {\r\n values = value;\r\n }\r\n super.setValue(values);\r\n }\r\n else {\r\n super.setValue(value);\r\n }\r\n }\r\n setChecked(checked) {\r\n this.setValue(checked ? this.checkedValue : this.unCheckedValue);\r\n }\r\n getOldValue() {\r\n return this.isChecked() ? this.checkedValue : this.unCheckedValue;\r\n }\r\n}\r\nCheckBox.displayName = 'CheckBox';\r\nCheckBox.propTypes = {\r\n /**\r\n * 中间状态\r\n */\r\n indeterminate: PropTypes.bool,\r\n /**\r\n * 未选中时的值\r\n */\r\n unCheckedValue: PropTypes.any,\r\n /**\r\n * 未选中时的内容\r\n */\r\n unCheckedChildren: PropTypes.node,\r\n defaultChecked: PropTypes.bool,\r\n ...Radio.propTypes,\r\n};\r\nCheckBox.defaultProps = {\r\n ...Radio.defaultProps,\r\n suffixCls: 'checkbox',\r\n indeterminate: false,\r\n};\r\ntslib_1.__decorate([\r\n action\r\n], CheckBox.prototype, \"setValue\", null);\r\ntslib_1.__decorate([\r\n action\r\n], CheckBox.prototype, \"setChecked\", null);\r\nlet ObserverCheckBox = class ObserverCheckBox extends CheckBox {\r\n};\r\nObserverCheckBox.defaultProps = CheckBox.defaultProps;\r\nObserverCheckBox = tslib_1.__decorate([\r\n observer\r\n], ObserverCheckBox);\r\nexport default ObserverCheckBox;\r\n","import ObserverCheckBox from './CheckBox';\r\nexport default ObserverCheckBox;\r\n","import ObserverRadio from './Radio';\r\nexport default ObserverRadio;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { CheckBox } from '../check-box/CheckBox';\r\nimport autobind from '../_util/autobind';\r\nlet Switch = class Switch extends CheckBox {\r\n handleKeyDown(e) {\r\n if (e.keyCode === KeyCode.LEFT) {\r\n this.setChecked(false);\r\n }\r\n else if (e.keyCode === KeyCode.RIGHT) {\r\n this.setChecked(true);\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n getTextNode() {\r\n const { prefixCls, props: { children, unCheckedChildren }, } = this;\r\n const text = this.isChecked() ? children : unCheckedChildren || children;\r\n return <span className={`${prefixCls}-label`}>{text}</span>;\r\n }\r\n renderInner() {\r\n return undefined;\r\n }\r\n};\r\nSwitch.displayName = 'Switch';\r\nSwitch.defaultProps = {\r\n ...CheckBox.defaultProps,\r\n suffixCls: 'switch',\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], Switch.prototype, \"handleKeyDown\", null);\r\nSwitch = tslib_1.__decorate([\r\n observer\r\n], Switch);\r\nexport default Switch;\r\n","export var GroupItemCategory;\r\n(function (GroupItemCategory) {\r\n GroupItemCategory[\"before\"] = \"before\";\r\n GroupItemCategory[\"after\"] = \"after\";\r\n GroupItemCategory[\"help\"] = \"help\";\r\n GroupItemCategory[\"input\"] = \"input\";\r\n})(GroupItemCategory || (GroupItemCategory = {}));\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { createElement, isValidElement } from 'react';\r\nimport omit from 'lodash/omit';\r\nimport defer from 'lodash/defer';\r\nimport isArray from 'lodash/isArray';\r\nimport isString from 'lodash/isString';\r\nimport noop from 'lodash/noop';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { action, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { pxToRem, toPx } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport { FormField } from '../field/FormField';\r\nimport autobind from '../_util/autobind';\r\nimport isEmpty from '../_util/isEmpty';\r\nimport Icon from '../icon';\r\nimport { preventDefault, stopPropagation } from '../_util/EventManager';\r\nimport measureTextWidth from '../_util/measureTextWidth';\r\nimport Animate from '../animate';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport { GroupItemCategory } from './enum';\r\nimport { ShowHelp } from '../field/enum';\r\nimport { FieldFormat } from '../data-set/enum';\r\nlet PLACEHOLDER_SUPPORT;\r\nexport function isPlaceHolderSupport() {\r\n if (PLACEHOLDER_SUPPORT !== undefined) {\r\n return PLACEHOLDER_SUPPORT;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return (PLACEHOLDER_SUPPORT = 'placeholder' in document.createElement('input'));\r\n }\r\n return true;\r\n}\r\nexport class TextField extends FormField {\r\n constructor() {\r\n super(...arguments);\r\n this.type = 'text';\r\n }\r\n saveTagContainer(node) {\r\n this.tagContainer = node;\r\n }\r\n isEmpty() {\r\n return isEmpty(this.text) && super.isEmpty();\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'prefix',\r\n 'suffix',\r\n 'clearButton',\r\n 'addonBefore',\r\n 'addonAfter',\r\n 'restrict',\r\n 'placeholder',\r\n 'placeHolder',\r\n ]);\r\n otherProps.type = this.type;\r\n otherProps.maxLength = this.getProp('maxLength');\r\n otherProps.onKeyDown = this.handleKeyDown;\r\n return otherProps;\r\n }\r\n getValidatorProps() {\r\n const pattern = this.getProp('pattern');\r\n const maxLength = this.getProp('maxLength');\r\n const minLength = this.getProp('minLength');\r\n return {\r\n ...super.getValidatorProps(),\r\n pattern,\r\n maxLength,\r\n minLength,\r\n };\r\n }\r\n getWrapperClassNames(...args) {\r\n const { prefixCls, multiple, range } = this;\r\n const suffix = this.getSuffix();\r\n const prefix = this.getPrefix();\r\n return super.getWrapperClassNames({\r\n [`${prefixCls}-empty`]: this.isEmpty(),\r\n [`${prefixCls}-suffix-button`]: isValidElement(suffix),\r\n [`${prefixCls}-multiple`]: multiple,\r\n [`${prefixCls}-range`]: range,\r\n [`${prefixCls}-prefix-button`]: isValidElement(prefix),\r\n }, ...args);\r\n }\r\n renderWrapper() {\r\n return this.renderGroup();\r\n }\r\n renderInputElement() {\r\n const input = this.getWrappedEditor();\r\n const button = this.getInnerSpanButton();\r\n const suffix = this.getSuffix();\r\n const prefix = this.getPrefix();\r\n const otherPrevNode = this.getOtherPrevNode();\r\n const otherNextNode = this.getOtherNextNode();\r\n const placeholderDiv = this.renderPlaceHolder();\r\n const renderedValue = this.renderRenderedValue();\r\n const floatLabel = this.renderFloatLabel();\r\n const multipleHolder = this.renderMultipleHolder();\r\n return (<span key=\"element\" {...this.getWrapperProps()}>\n {multipleHolder}\n {otherPrevNode}\n {placeholderDiv}\n {renderedValue}\n <label onMouseDown={this.handleMouseDown}>\n {prefix}\n {input}\n {floatLabel}\n {button}\n {suffix}\n </label>\n {otherNextNode}\n </span>);\r\n }\r\n renderGroup() {\r\n const { prefixCls, props: { addonBefore, addonAfter, showHelp }, } = this;\r\n const inputElement = this.renderInputElement();\r\n const help = showHelp === ShowHelp.tooltip ? this.renderTooltipHelp() : null;\r\n if (!addonBefore && !addonAfter && !help) {\r\n return inputElement;\r\n }\r\n const classString = classNames(`${prefixCls}-group`, {\r\n [`${prefixCls}-float-label-group`]: this.hasFloatLabel,\r\n });\r\n return (<div key=\"wrapper\" className={`${prefixCls}-group-wrapper`}>\n <div {...this.getWrapperProps()} className={classString}>\n {this.wrapGroupItem(addonBefore, GroupItemCategory.before)}\n {this.wrapGroupItem(inputElement, GroupItemCategory.input)}\n {this.wrapGroupItem(help, GroupItemCategory.help)}\n {this.wrapGroupItem(addonAfter, GroupItemCategory.after)}\n </div>\n </div>);\r\n }\r\n renderTooltipHelp() {\r\n return (<Tooltip title={this.getProp('help')} placement=\"bottom\">\n <Icon type=\"help\"/>\n </Tooltip>);\r\n }\r\n getPlaceholders() {\r\n const { placeholder } = this.props;\r\n const holders = [];\r\n return placeholder ? holders.concat(placeholder) : holders;\r\n }\r\n getLabel() {\r\n const [placeholder] = this.getPlaceholders();\r\n if (this.isEmpty() && placeholder) {\r\n return placeholder;\r\n }\r\n return this.getProp('label');\r\n }\r\n wrapGroupItem(node, category) {\r\n const { prefixCls } = this;\r\n if (!node) {\r\n return null;\r\n }\r\n return <div className={`${prefixCls}-group-${category}`}>{node}</div>;\r\n }\r\n renderRangeEditor(props) {\r\n const { prefixCls, rangeTarget, isFocused } = this;\r\n const [startPlaceholder, endPlaceHolder = startPlaceholder] = this.getPlaceholders();\r\n const [startValue = '', endValue = ''] = this.processRangeValue();\r\n const editorStyle = {};\r\n if (rangeTarget === 1) {\r\n editorStyle.right = 0;\r\n }\r\n else {\r\n editorStyle.left = 0;\r\n }\r\n return (<span key=\"text\" className={`${prefixCls}-range-text`}>\n <input tabIndex={-1} className={`${prefixCls}-range-start`} onChange={noop} onMouseDown={this.handleRangeStart} value={rangeTarget === 0 && isFocused ? '' : startValue} placeholder={rangeTarget === 0 && isFocused ? '' : startPlaceholder} readOnly/>\n <span className={`${prefixCls}-range-split`}>~</span>\n <input tabIndex={-1} className={`${prefixCls}-range-end`} onChange={noop} onMouseDown={this.handleRangeEnd} value={rangeTarget === 1 && isFocused ? '' : endValue} placeholder={rangeTarget === 1 && isFocused ? '' : endPlaceHolder} readOnly/>\n <input {...props} className={`${prefixCls}-range-input`} key=\"text\" value={rangeTarget === undefined || !this.isFocused\r\n ? ''\r\n : rangeTarget === 0\r\n ? startValue\r\n : endValue} placeholder={rangeTarget === undefined || !this.isFocused\r\n ? ''\r\n : rangeTarget === 0\r\n ? startPlaceholder\r\n : endPlaceHolder} readOnly={!this.editable} style={editorStyle}/>\n </span>);\r\n }\r\n renderMultipleEditor(props) {\r\n const { style } = this.props;\r\n const { text } = this;\r\n const editorStyle = {};\r\n if (!this.editable) {\r\n editorStyle.position = 'absolute';\r\n editorStyle.left = 0;\r\n editorStyle.top = 0;\r\n editorStyle.zIndex = -1;\r\n props.readOnly = true;\r\n }\r\n else if (text) {\r\n editorStyle.width = pxToRem(measureTextWidth(text, style));\r\n }\r\n return (<li key=\"text\">\n <input {...props} value={text || ''} style={editorStyle}/>\n </li>);\r\n }\r\n getWrappedEditor() {\r\n return this.getEditor();\r\n }\r\n getClassName(...props) {\r\n const { prefixCls, format } = this;\r\n return super.getClassName({\r\n [`${prefixCls}-${format}`]: [\r\n FieldFormat.uppercase,\r\n FieldFormat.lowercase,\r\n FieldFormat.capitalize,\r\n ].includes(format),\r\n }, ...props);\r\n }\r\n getEditor() {\r\n const { prefixCls, multiple, range, props: { style }, } = this;\r\n const otherProps = this.getOtherProps();\r\n const { height } = (style || {});\r\n if (multiple) {\r\n return (<div key=\"text\" className={otherProps.className}>\n <Animate component=\"ul\" componentProps={{\r\n ref: this.saveTagContainer,\r\n onScroll: stopPropagation,\r\n style: height && height !== 'auto' ? { height: pxToRem(toPx(height) - 2) } : undefined,\r\n }} transitionName=\"zoom\" exclusive onEnd={this.handleTagAnimateEnd} onEnter={this.handleTagAnimateEnter}>\n {this.renderMultipleValues()}\n {range\r\n ? this.renderRangeEditor(otherProps)\r\n : this.renderMultipleEditor({\r\n ...otherProps,\r\n className: `${prefixCls}-multiple-input`,\r\n })}\n </Animate>\n </div>);\r\n }\r\n if (range) {\r\n return (<span key=\"text\" className={otherProps.className}>\n {this.renderRangeEditor(otherProps)}\n </span>);\r\n }\r\n const text = this.getTextNode();\r\n if (isValidElement(text)) {\r\n otherProps.style = { ...otherProps.style, textIndent: -1000 };\r\n }\r\n return (<input key=\"text\" {...otherProps} placeholder={this.hasFloatLabel ? undefined : this.getPlaceholders()[0]} value={isString(text) ? text : this.getText(this.getValue())} readOnly={!this.editable}/>);\r\n }\r\n getSuffix() {\r\n const { suffix = this.getDefaultSuffix() } = this.props;\r\n if (suffix) {\r\n return this.wrapperSuffix(suffix);\r\n }\r\n }\r\n getDefaultSuffix() {\r\n return undefined;\r\n }\r\n wrapperSuffix(children, props) {\r\n const { prefixCls } = this;\r\n if (isValidElement(children)) {\r\n const { type } = children;\r\n const { onClick, ...otherProps } = children.props;\r\n if (onClick) {\r\n children = createElement(type, otherProps);\r\n props = {\r\n onClick,\r\n ...props,\r\n };\r\n }\r\n }\r\n return (<div className={`${prefixCls}-suffix`} onMouseDown={preventDefault} {...props}>\n {children}\n </div>);\r\n }\r\n getPrefix() {\r\n const { prefix } = this.props;\r\n if (prefix) {\r\n return this.wrapperPrefix(prefix);\r\n }\r\n }\r\n wrapperPrefix(children) {\r\n const { prefixCls } = this;\r\n return <div className={`${prefixCls}-prefix`}>{children}</div>;\r\n }\r\n renderMultipleHolder() {\r\n const { name, multiple } = this;\r\n if (multiple) {\r\n return (<input key=\"value\" className={`${this.prefixCls}-multiple-value`} value={this.toValueString(this.getValue()) || ''} name={name} onChange={noop}/>);\r\n }\r\n }\r\n getOtherPrevNode() {\r\n return undefined;\r\n }\r\n getOtherNextNode() {\r\n return undefined;\r\n }\r\n renderPlaceHolder() {\r\n if ((this.multiple || !isPlaceHolderSupport()) && !this.hasFloatLabel && !this.range) {\r\n return this.getPlaceHolderNode();\r\n }\r\n }\r\n renderRenderedValue() {\r\n const { prefixCls, range, multiple } = this;\r\n if (!range && !multiple) {\r\n const text = this.getTextNode();\r\n if ((!this.isFocused || !this.editable) && isValidElement(text)) {\r\n return (<span key=\"renderedText\" className={`${prefixCls}-rendered-value`}>\n <span className={`${prefixCls}-rendered-value-inner`}>{text}</span>\n </span>);\r\n }\r\n }\r\n }\r\n getPlaceHolderNode() {\r\n const { prefixCls } = this;\r\n const [placeholder] = this.getPlaceholders();\r\n if (placeholder) {\r\n return <div className={`${prefixCls}-placeholder`}>{placeholder}</div>;\r\n }\r\n }\r\n getInnerSpanButton() {\r\n const { props: { clearButton }, prefixCls, } = this;\r\n if (clearButton && !this.isReadOnly()) {\r\n return this.wrapperInnerSpanButton(<Icon type=\"close\" onClick={this.handleClearButtonClick}/>, {\r\n className: `${prefixCls}-clear-button`,\r\n });\r\n }\r\n }\r\n wrapperInnerSpanButton(children, props = {}) {\r\n const { prefixCls } = this;\r\n const { className, ...otherProps } = props;\r\n return (!this.isDisabled() && (<div key=\"inner-button\" {...otherProps} className={classNames(`${prefixCls}-inner-button`, className)}>\n {children}\n </div>));\r\n }\r\n removeLastValue() {\r\n const values = this.getValues();\r\n const value = values.pop();\r\n this.setValue(values);\r\n this.afterRemoveValue(value, -1);\r\n }\r\n handleTagAnimateEnd() { }\r\n handleTagAnimateEnter() {\r\n const { tagContainer } = this;\r\n const { style } = this.props;\r\n if (tagContainer && style && style.height) {\r\n tagContainer.scrollTo(0, tagContainer.getBoundingClientRect().height);\r\n }\r\n }\r\n handleRangeStart() {\r\n this.setRangeTarget(0);\r\n }\r\n handleRangeEnd() {\r\n this.setRangeTarget(1);\r\n }\r\n handleKeyDown(e) {\r\n const { disabled, clearButton } = this.props;\r\n if (!this.isReadOnly() && !disabled) {\r\n if (this.range && e.keyCode === KeyCode.TAB) {\r\n if (this.rangeTarget === 0 && !e.shiftKey) {\r\n this.setRangeTarget(1);\r\n e.preventDefault();\r\n }\r\n if (this.rangeTarget === 1 && e.shiftKey) {\r\n this.setRangeTarget(0);\r\n e.preventDefault();\r\n }\r\n }\r\n if (this.multiple) {\r\n if (!this.text) {\r\n switch (e.keyCode) {\r\n case KeyCode.DELETE:\r\n this.clear();\r\n break;\r\n case KeyCode.BACKSPACE:\r\n this.removeLastValue();\r\n break;\r\n default:\r\n }\r\n }\r\n }\r\n else if (clearButton && !this.editable) {\r\n switch (e.keyCode) {\r\n case KeyCode.DELETE:\r\n case KeyCode.BACKSPACE:\r\n this.clear();\r\n break;\r\n default:\r\n }\r\n }\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n handleMouseDown(e) {\r\n if (e.target !== this.element) {\r\n e.preventDefault();\r\n if (!this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n handleClearButtonClick() {\r\n this.clear();\r\n }\r\n handleFocus(e) {\r\n super.handleFocus(e);\r\n defer(() => this.isFocused && this.select());\r\n }\r\n handleBlur(e) {\r\n if (!e.isDefaultPrevented()) {\r\n if (this.editable) {\r\n this.syncValueOnBlur(e.target.value);\r\n }\r\n else if (!this.getValues().length) {\r\n this.setValue(null);\r\n }\r\n }\r\n super.handleBlur(e);\r\n }\r\n setValue(value) {\r\n super.setValue(value);\r\n this.setText(undefined);\r\n }\r\n getTextNode() {\r\n return this.text === undefined ? super.getTextNode() : this.text;\r\n }\r\n setText(text) {\r\n this.text = text;\r\n }\r\n select() {\r\n const { element } = this;\r\n if (element && this.editable) {\r\n element.select();\r\n }\r\n }\r\n handleChange(e) {\r\n const { target, target: { value }, } = e;\r\n const restricted = this.restrictInput(value);\r\n if (restricted !== value) {\r\n const selectionEnd = target.selectionEnd + restricted.length - value.length;\r\n target.value = restricted;\r\n target.setSelectionRange(selectionEnd, selectionEnd);\r\n }\r\n this.setText(restricted);\r\n }\r\n restrictInput(value) {\r\n const { restrict } = this.props;\r\n if (restrict) {\r\n return value.replace(new RegExp(`[^${restrict}]+`, 'g'), '');\r\n }\r\n return value;\r\n }\r\n toValueString(value) {\r\n if (isArray(value)) {\r\n return value.join(',');\r\n }\r\n return value;\r\n }\r\n}\r\nTextField.displayName = 'TextField';\r\nTextField.propTypes = {\r\n /**\r\n * 占位词\r\n */\r\n placeholder: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\r\n /**\r\n * 最小长度\r\n */\r\n minLength: PropTypes.number,\r\n /**\r\n * 最大长度\r\n */\r\n maxLength: PropTypes.number,\r\n /**\r\n * 正则校验\r\n */\r\n pattern: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n /**\r\n * 自动完成\r\n */\r\n autoComplete: PropTypes.string,\r\n /**\r\n * 前缀\r\n */\r\n prefix: PropTypes.node,\r\n /**\r\n * 后缀\r\n */\r\n suffix: PropTypes.node,\r\n /**\r\n * 是否显示清除按钮\r\n */\r\n clearButton: PropTypes.bool,\r\n /**\r\n * 前置标签\r\n */\r\n addonBefore: PropTypes.node,\r\n /**\r\n * 后置标签\r\n */\r\n addonAfter: PropTypes.node,\r\n /**\r\n * 限制可输入的字符\r\n */\r\n restrict: PropTypes.string,\r\n ...FormField.propTypes,\r\n};\r\nTextField.defaultProps = {\r\n ...FormField.defaultProps,\r\n suffixCls: 'input',\r\n autoComplete: 'off',\r\n clearButton: false,\r\n multiple: false,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], TextField.prototype, \"text\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"saveTagContainer\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TextField.prototype, \"removeLastValue\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleTagAnimateEnter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleRangeStart\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleRangeEnd\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleClearButtonClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleFocus\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleBlur\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TextField.prototype, \"setValue\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TextField.prototype, \"setText\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TextField.prototype, \"handleChange\", null);\r\nlet ObserverTextField = class ObserverTextField extends TextField {\r\n};\r\nObserverTextField.defaultProps = TextField.defaultProps;\r\nObserverTextField = tslib_1.__decorate([\r\n observer\r\n], ObserverTextField);\r\nexport default ObserverTextField;\r\n","export default function measureTextWidth(text, style) {\r\n if (typeof window !== 'undefined') {\r\n const span = document.createElement('span');\r\n span.style.cssText = 'position: absolute;top: -9999px;';\r\n span.innerHTML = text.replace(/\\s/g, '&nbsp;');\r\n if (style) {\r\n ['fontSize', 'fontFamily'].forEach((property) => {\r\n if (property in style) {\r\n span.style[property] = style[property];\r\n }\r\n });\r\n }\r\n document.body.appendChild(span);\r\n const width = span.offsetWidth;\r\n document.body.removeChild(span);\r\n return width;\r\n }\r\n return 0;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { findDOMNode } from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport noop from 'lodash/noop';\r\nimport { action, computed, observable } from 'mobx';\r\nimport { PropTypes as MobxPropTypes } from 'mobx-react';\r\nimport Trigger from '../trigger/Trigger';\r\nimport { TextField } from '../text-field/TextField';\r\nimport autobind from '../_util/autobind';\r\nimport Icon from '../icon';\r\nimport TaskRunner from '../_util/TaskRunner';\r\nconst BUILT_IN_PLACEMENTS = {\r\n bottomLeft: {\r\n points: ['tl', 'bl'],\r\n offset: [0, 4],\r\n overflow: {\r\n adjustX: 1,\r\n adjustY: 1,\r\n },\r\n },\r\n bottomRight: {\r\n points: ['tr', 'br'],\r\n offset: [0, 4],\r\n overflow: {\r\n adjustX: 1,\r\n adjustY: 1,\r\n },\r\n },\r\n topLeft: {\r\n points: ['bl', 'tl'],\r\n offset: [0, -4],\r\n overflow: {\r\n adjustX: 1,\r\n adjustY: 1,\r\n },\r\n },\r\n topRight: {\r\n points: ['br', 'tr'],\r\n offset: [0, -4],\r\n overflow: {\r\n adjustX: 1,\r\n adjustY: 1,\r\n },\r\n },\r\n};\r\nexport default class TriggerField extends TextField {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.popupTask = new TaskRunner();\r\n this.setPopup(false);\r\n }\r\n get popup() {\r\n return this.statePopup;\r\n }\r\n isValidationMessageHidden(message) {\r\n return super.isValidationMessageHidden(message) || this.popup;\r\n }\r\n setPopup(statePopup) {\r\n this.statePopup = statePopup;\r\n }\r\n getRootDomNode() {\r\n return findDOMNode(this);\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), [\r\n 'popupContent',\r\n 'popupCls',\r\n 'editable',\r\n 'trigger',\r\n 'triggerShowDelay',\r\n 'triggerHiddenDelay',\r\n 'onPopupHiddenChange',\r\n ]);\r\n }\r\n getPopupProps() {\r\n return {};\r\n }\r\n getWrappedEditor() {\r\n const { prefixCls, props: { popupCls, popupStyle, popupContent, hidden, trigger, triggerShowDelay, triggerHiddenDelay, }, } = this;\r\n let content;\r\n if (popupContent !== undefined) {\r\n if (popupContent instanceof Function) {\r\n content = popupContent(this.getPopupProps());\r\n }\r\n else {\r\n content = popupContent;\r\n }\r\n }\r\n else {\r\n content = this.getPopupContent();\r\n }\r\n return (<Trigger ref={node => (this.trigger = node)} action={this.isReadOnly() || this.isDisabled() ? [] : trigger} focusDelay={triggerShowDelay} blurDelay={triggerHiddenDelay} mouseEnterDelay={triggerShowDelay} mouseLeaveDelay={triggerHiddenDelay} prefixCls={prefixCls} popupCls={popupCls} popupStyle={popupStyle} popupContent={content} popupPlacement=\"bottomLeft\" popupHidden={hidden || !this.popup} builtinPlacements={BUILT_IN_PLACEMENTS} onPopupAnimateAppear={this.handlePopupAnimateAppear} onPopupAnimateEnd={this.handlePopupAnimateEnd} onPopupHiddenChange={this.handlePopupHiddenChange} getPopupStyleFromAlign={this.getPopupStyleFromAlign} getRootDomNode={this.getRootDomNode}>\n {this.getEditor()}\n </Trigger>);\r\n }\r\n getWrapperClassNames(...args) {\r\n const { prefixCls } = this;\r\n return super.getWrapperClassNames(...args, {\r\n [`${prefixCls}-expand`]: this.popup,\r\n [`${prefixCls}-not-editable`]: !this.isDisabled() && !this.editable,\r\n });\r\n }\r\n getDefaultSuffix() {\r\n const { prefixCls } = this;\r\n return <Icon type={this.getTriggerIconFont()} className={`${prefixCls}-trigger`}/>;\r\n }\r\n handleTagAnimateEnd() {\r\n this.forcePopupAlign();\r\n }\r\n handlePopupMouseDown(e) {\r\n e.preventDefault();\r\n const { onMouseDown = noop } = this.props;\r\n onMouseDown(e);\r\n }\r\n handlePopupHiddenChange(hidden) {\r\n this.setPopup(!hidden);\r\n const { onPopupHiddenChange = noop } = this.props;\r\n onPopupHiddenChange(hidden);\r\n }\r\n forcePopupAlign() {\r\n if (this.trigger) {\r\n this.trigger.forcePopupAlign();\r\n }\r\n }\r\n expand() {\r\n this.popupTask.cancel();\r\n if (!this.isReadOnly() && !this.popup) {\r\n this.popupTask.delay(this.props.triggerShowDelay, () => {\r\n this.setPopup(true);\r\n });\r\n }\r\n }\r\n collapse() {\r\n this.popupTask.cancel();\r\n if (!this.isReadOnly() && this.popup) {\r\n this.popupTask.delay(this.props.triggerHiddenDelay, () => {\r\n this.setPopup(false);\r\n });\r\n }\r\n }\r\n}\r\nTriggerField.displayName = 'TriggerField';\r\nTriggerField.propTypes = {\r\n /**\r\n * 下拉框的自定义内容\r\n */\r\n popupContent: PropTypes.element,\r\n /**\r\n * 下拉框的自定义样式名\r\n */\r\n popupCls: PropTypes.string,\r\n /**\r\n * 下拉框的内链样式\r\n */\r\n popupStyle: PropTypes.object,\r\n /**\r\n * 触发下拉框的方式\r\n * 可选值:click | focus | hover | contextMenu\r\n */\r\n trigger: MobxPropTypes.arrayOrObservableArrayOf(PropTypes.string),\r\n /**\r\n * 下拉框显示延迟\r\n * @defualt 150\r\n */\r\n triggerShowDelay: PropTypes.number,\r\n /**\r\n * 下拉框隐藏延迟\r\n * @defualt 50\r\n */\r\n triggerHiddenDelay: PropTypes.number,\r\n /**\r\n * 下拉框变化钩子\r\n */\r\n onPopupHiddenChange: PropTypes.func,\r\n ...TextField.propTypes,\r\n};\r\nTriggerField.defaultProps = {\r\n ...TextField.defaultProps,\r\n suffixCls: 'trigger',\r\n clearButton: true,\r\n trigger: ['focus', 'click'],\r\n triggerShowDelay: 150,\r\n triggerHiddenDelay: 50,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], TriggerField.prototype, \"statePopup\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], TriggerField.prototype, \"popup\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TriggerField.prototype, \"setPopup\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TriggerField.prototype, \"getRootDomNode\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TriggerField.prototype, \"handleTagAnimateEnd\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TriggerField.prototype, \"handlePopupMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TriggerField.prototype, \"handlePopupHiddenChange\", null);\r\n","import { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n/* eslint-disable react/prefer-stateless-function,react/no-unused-prop-types */\r\nexport default class Option extends Component {\r\n}\r\nOption.propTypes = {\r\n /**\r\n * 选项值\r\n */\r\n value: PropTypes.any,\r\n};\r\n","import { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n/* eslint-disable react/prefer-stateless-function,react/no-unused-prop-types */\r\nexport default class OptGroup extends Component {\r\n}\r\nOptGroup.propTypes = {\r\n label: PropTypes.string,\r\n};\r\n","import { Children, isValidElement } from 'react';\r\nimport DataSet from '../data-set/DataSet';\r\nimport { DataSetSelection, FieldType } from '../data-set/enum';\r\nimport OptGroup from './OptGroup';\r\nimport Option from './Option';\r\nfunction getOptionsFromChildren(elements, data, fields, textField, valueField, disabledField, groups = []) {\r\n if (elements) {\r\n Children.forEach(elements, child => {\r\n if (isValidElement(child)) {\r\n const { type } = child;\r\n if (type === OptGroup) {\r\n const props = child.props;\r\n getOptionsFromChildren(props.children, data, fields, textField, valueField, disabledField, groups.concat(props.label || ''));\r\n }\r\n else if (type === Option) {\r\n const { value, children, disabled } = child.props;\r\n data.push(groups.reduce((obj, group, index) => {\r\n const name = `group-${index}`;\r\n obj[name] = group;\r\n if (!fields.find(field => field.name === name)) {\r\n fields.push({\r\n name,\r\n type: FieldType.reactNode,\r\n group: groups.length - 1,\r\n });\r\n }\r\n return obj;\r\n }, {\r\n [textField]: children,\r\n [valueField]: value === undefined && isValidElement(children) ? children : value,\r\n [disabledField]: disabled,\r\n }));\r\n }\r\n }\r\n });\r\n }\r\n}\r\nexport default function normalizeOptions({ field, textField, valueField, disabledField, multiple, children, }) {\r\n const selectionType = multiple\r\n ? DataSetSelection.multiple\r\n : multiple === undefined\r\n ? undefined\r\n : DataSetSelection.single;\r\n let data = [];\r\n let fetch;\r\n if (field) {\r\n const options = field.getOptions();\r\n if (options) {\r\n return options;\r\n }\r\n data = field.get('lookup');\r\n }\r\n const fields = [\r\n {\r\n name: textField,\r\n type: FieldType.reactNode,\r\n },\r\n {\r\n name: valueField,\r\n },\r\n {\r\n name: disabledField,\r\n type: FieldType.boolean,\r\n },\r\n ];\r\n if ((!data || !data.length) && children) {\r\n data = [];\r\n getOptionsFromChildren(children, data, fields, textField, valueField, disabledField);\r\n }\r\n const ds = new DataSet({\r\n data,\r\n fields,\r\n paging: false,\r\n selection: selectionType || DataSetSelection.single,\r\n autoLocateFirst: false,\r\n });\r\n if (fetch) {\r\n fetch.then(values => values && ds.loadData(values));\r\n }\r\n return ds;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { isValidElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport debounce from 'lodash/debounce';\r\nimport isString from 'lodash/isString';\r\nimport isEqual from 'lodash/isEqual';\r\nimport isNil from 'lodash/isNil';\r\nimport noop from 'lodash/noop';\r\nimport isPlainObject from 'lodash/isPlainObject';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed, isArrayLike, reaction, runInAction } from 'mobx';\r\nimport Menu, { Item, ItemGroup } from 'choerodon-ui/lib/rc-components/menu';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport TriggerField from '../trigger-field/TriggerField';\r\nimport autobind from '../_util/autobind';\r\nimport Option from '../option/Option';\r\nimport OptGroup from '../option/OptGroup';\r\nimport { DataSetStatus, FieldType } from '../data-set/enum';\r\nimport DataSet from '../data-set/DataSet';\r\nimport Spin from '../spin';\r\nimport { stopEvent } from '../_util/EventManager';\r\nimport normalizeOptions from '../option/normalizeOptions';\r\nimport { $l } from '../locale-context';\r\nimport * as ObjectChainValue from '../_util/ObjectChainValue';\r\nimport isEmpty from '../_util/isEmpty';\r\nimport isSame from '../_util/isSame';\r\nimport isSameLike from '../_util/isSameLike';\r\nfunction updateActiveKey(menu, activeKey) {\r\n const store = menu.getStore();\r\n const menuId = menu.getEventKey();\r\n const state = store.getState();\r\n store.setState({\r\n activeKey: {\r\n ...state.activeKey,\r\n [menuId]: activeKey,\r\n },\r\n });\r\n}\r\nfunction defaultSearchMatcher({ record, text, textField }) {\r\n return record.get(textField).indexOf(text) !== -1;\r\n}\r\nconst disabledField = '__disabled';\r\nfunction defaultOnOption({ record }) {\r\n return {\r\n disabled: record.get(disabledField),\r\n };\r\n}\r\nexport function getItemKey(record, text, value) {\r\n return `item-${value || record.id}-${(isValidElement(text) ? text.key : text) || record.id}`;\r\n}\r\nfunction getSimpleValue(value, valueField) {\r\n if (isPlainObject(value)) {\r\n return ObjectChainValue.get(value, valueField);\r\n }\r\n return value;\r\n}\r\nexport class Select extends TriggerField {\r\n constructor() {\r\n super(...arguments);\r\n this.comboOptions = new DataSet();\r\n this.doSearch = debounce(value => this.searchRemote(value), 500);\r\n }\r\n get searchMatcher() {\r\n const { searchMatcher = defaultSearchMatcher } = this.observableProps;\r\n return searchMatcher;\r\n }\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('Select', label ? 'value_missing' : 'value_missing_no_label', { label }),\r\n };\r\n }\r\n get textField() {\r\n return this.getProp('textField') || 'meaning';\r\n }\r\n get valueField() {\r\n return this.getProp('valueField') || 'value';\r\n }\r\n get currentComboOption() {\r\n return this.comboOptions.filter(record => !this.isSelected(record))[0];\r\n }\r\n get filteredOptions() {\r\n const { optionsWithCombo, text } = this;\r\n return this.filterData(optionsWithCombo, text);\r\n }\r\n get optionsWithCombo() {\r\n return [...this.comboOptions.data, ...this.cascadeOptions];\r\n }\r\n get cascadeOptions() {\r\n const { record, field, options, searchMatcher } = this;\r\n const { data } = options;\r\n if (field && !isString(searchMatcher)) {\r\n const cascadeMap = field.get('cascadeMap');\r\n if (cascadeMap) {\r\n if (record) {\r\n const cascades = Object.keys(cascadeMap);\r\n return data.filter(item => cascades.every(cascade => isSameLike(record.get(cascadeMap[cascade]), item.get(cascade))));\r\n }\r\n return [];\r\n }\r\n }\r\n return data;\r\n }\r\n get editable() {\r\n const { combo } = this.observableProps;\r\n return !this.isReadOnly() && (!!this.searchable || !!combo);\r\n }\r\n get searchable() {\r\n return !!this.props.searchable;\r\n }\r\n get multiple() {\r\n return !!this.getProp('multiple');\r\n }\r\n get menuMultiple() {\r\n return this.multiple;\r\n }\r\n get options() {\r\n const { field, textField, valueField, multiple, observableProps: { children, options }, } = this;\r\n return (options ||\r\n normalizeOptions({ field, textField, valueField, disabledField, multiple, children }));\r\n }\r\n get primitive() {\r\n const type = this.getProp('type');\r\n return this.observableProps.primitiveValue !== false && type !== FieldType.object;\r\n }\r\n saveMenu(node) {\r\n this.menu = node;\r\n }\r\n checkValue() {\r\n this.checkValueReaction = reaction(() => this.cascadeOptions, () => this.processSelectedData());\r\n }\r\n checkCombo() {\r\n this.checkComboReaction = reaction(() => this.getValue(), value => this.generateComboOption(value));\r\n }\r\n clearCheckValue() {\r\n if (this.checkValueReaction) {\r\n this.checkValueReaction();\r\n this.checkValueReaction = undefined;\r\n }\r\n }\r\n clearCheckCombo() {\r\n if (this.checkComboReaction) {\r\n this.checkComboReaction();\r\n this.checkComboReaction = undefined;\r\n }\r\n }\r\n clearReaction() {\r\n this.clearCheckValue();\r\n this.clearCheckCombo();\r\n }\r\n componentWillMount() {\r\n super.componentWillMount();\r\n const { checkValueOnOptionsChange, combo } = this.props;\r\n if (checkValueOnOptionsChange) {\r\n this.checkValue();\r\n }\r\n if (combo) {\r\n this.checkCombo();\r\n this.generateComboOption(this.getValue());\r\n }\r\n }\r\n componentWillUnmount() {\r\n super.componentWillUnmount();\r\n this.doSearch.cancel();\r\n this.clearReaction();\r\n }\r\n componentWillReceiveProps(nextProps, nextContext) {\r\n super.componentWillReceiveProps(nextProps, nextContext);\r\n const { checkValueOnOptionsChange, combo } = this.props;\r\n if (checkValueOnOptionsChange && !nextProps.checkValueOnOptionsChange) {\r\n this.clearCheckValue();\r\n }\r\n if (!checkValueOnOptionsChange && nextProps.checkValueOnOptionsChange) {\r\n this.checkValue();\r\n }\r\n if (combo && !nextProps.combo) {\r\n this.removeComboOptions();\r\n this.clearCheckCombo();\r\n }\r\n if (!combo && nextProps.combo) {\r\n this.checkCombo();\r\n if ('value' in nextProps) {\r\n this.generateComboOption(nextProps.value);\r\n }\r\n }\r\n }\r\n componentDidUpdate() {\r\n this.forcePopupAlign();\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'searchable',\r\n 'searchMatcher',\r\n 'combo',\r\n 'multiple',\r\n 'value',\r\n 'name',\r\n 'options',\r\n 'optionsFilter',\r\n 'dropdownMatchSelectWidth',\r\n 'dropdownMenuStyle',\r\n 'checkValueOnOptionsChange',\r\n 'primitiveValue',\r\n 'optionRenderer',\r\n 'notFoundContent',\r\n 'onOption',\r\n ]);\r\n return otherProps;\r\n }\r\n getObservableProps(props, context) {\r\n return {\r\n ...super.getObservableProps(props, context),\r\n children: props.children,\r\n options: props.options,\r\n combo: props.combo,\r\n primitiveValue: props.primitiveValue,\r\n searchMatcher: props.searchMatcher,\r\n };\r\n }\r\n getMenuPrefixCls() {\r\n return `${this.prefixCls}-dropdown-menu`;\r\n }\r\n renderMultipleHolder() {\r\n const { name, multiple } = this;\r\n if (multiple) {\r\n return super.renderMultipleHolder();\r\n }\r\n return (<input key=\"value\" type=\"hidden\" value={this.toValueString(this.getValue()) || ''} name={name} onChange={noop}/>);\r\n }\r\n getNotFoundContent() {\r\n const { notFoundContent } = this.props;\r\n if (notFoundContent !== undefined) {\r\n return notFoundContent;\r\n }\r\n return getConfig('renderEmpty')('Select');\r\n }\r\n getMenu(menuProps = {}) {\r\n const { options, textField, valueField, props: { dropdownMenuStyle, optionRenderer, onOption }, } = this;\r\n if (!options) {\r\n return null;\r\n }\r\n const menuDisabled = this.isDisabled();\r\n const groups = options.getGroups();\r\n const optGroups = [];\r\n const selectedKeys = [];\r\n this.filteredOptions.forEach(record => {\r\n let previousGroup;\r\n groups.every(field => {\r\n const label = record.get(field);\r\n if (label !== undefined) {\r\n if (!previousGroup) {\r\n previousGroup = optGroups.find(item => item.props.title === label);\r\n if (!previousGroup) {\r\n previousGroup = (<ItemGroup key={`group-${label}`} title={label}>\n {[]}\n </ItemGroup>);\r\n optGroups.push(previousGroup);\r\n }\r\n }\r\n else {\r\n const { children } = previousGroup.props;\r\n previousGroup = children.find(item => item.props.title === label);\r\n if (!previousGroup) {\r\n previousGroup = (<ItemGroup key={`group-${label}`} title={label}>\n {[]}\n </ItemGroup>);\r\n children.push(previousGroup);\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n });\r\n const value = record.get(valueField);\r\n const text = record.get(textField);\r\n const optionProps = onOption({ dataSet: options, record });\r\n const optionDisabled = menuDisabled || (optionProps && optionProps.disabled);\r\n const key = getItemKey(record, text, value);\r\n if (!('selectedKeys' in menuProps) && this.isSelected(record)) {\r\n selectedKeys.push(key);\r\n }\r\n const itemContent = optionRenderer\r\n ? optionRenderer({ dataSet: this.options, record, text, value })\r\n : text;\r\n const option = (<Item {...optionProps} key={key} value={record} disabled={optionDisabled}>\n {itemContent}\n </Item>);\r\n if (previousGroup) {\r\n const { children } = previousGroup.props;\r\n children.push(option);\r\n }\r\n else {\r\n optGroups.push(option);\r\n }\r\n });\r\n if (!optGroups.length) {\r\n optGroups.push(<Item key=\"no_data\" disabled>\n {this.loading ? ' ' : this.getNotFoundContent()}\n </Item>);\r\n }\r\n return (<Menu ref={this.saveMenu} disabled={menuDisabled} defaultActiveFirst multiple={this.menuMultiple} selectedKeys={selectedKeys} prefixCls={this.getMenuPrefixCls()} onClick={this.handleMenuClick} style={dropdownMenuStyle} focusable={false} {...menuProps}>\n {optGroups}\n </Menu>);\r\n }\r\n getPopupProps() {\r\n const { options, textField, valueField } = this;\r\n return {\r\n dataSet: options,\r\n textField,\r\n valueField,\r\n };\r\n }\r\n get loading() {\r\n const { field, options } = this;\r\n return options.status === DataSetStatus.loading || (!!field && field.pending.length > 0);\r\n }\r\n getPopupContent() {\r\n const menu = (<Spin key=\"menu\" spinning={this.loading}>\n {this.getMenu()}\n </Spin>);\r\n if (this.multiple) {\r\n return [\r\n <div key=\"check-all\" className={`${this.prefixCls}-select-all-none`}>\n <span onClick={this.chooseAll}>{$l('Select', 'select_all')}</span>\n <span onClick={this.unChooseAll}>{$l('Select', 'unselect_all')}</span>\n </div>,\r\n menu,\r\n ];\r\n }\r\n return menu;\r\n }\r\n getPopupStyleFromAlign(target) {\r\n if (target && this.props.dropdownMatchSelectWidth) {\r\n return {\r\n minWidth: pxToRem(target.getBoundingClientRect().width),\r\n };\r\n }\r\n }\r\n getTriggerIconFont() {\r\n return 'baseline-arrow_drop_down';\r\n }\r\n handleKeyDown(e) {\r\n const { menu } = this;\r\n if (!this.isDisabled() && !this.isReadOnly() && menu) {\r\n if (this.popup && menu.onKeyDown(e)) {\r\n stopEvent(e);\r\n }\r\n else {\r\n switch (e.keyCode) {\r\n case KeyCode.RIGHT:\r\n case KeyCode.DOWN:\r\n this.handleKeyDownPrevNext(e, menu, 1);\r\n break;\r\n case KeyCode.LEFT:\r\n case KeyCode.UP:\r\n this.handleKeyDownPrevNext(e, menu, -1);\r\n break;\r\n case KeyCode.END:\r\n case KeyCode.PAGE_DOWN:\r\n this.handleKeyDownFirstLast(e, menu, 1);\r\n break;\r\n case KeyCode.HOME:\r\n case KeyCode.PAGE_UP:\r\n this.handleKeyDownFirstLast(e, menu, -1);\r\n break;\r\n // case KeyCode.ENTER:\r\n // this.handleKeyDownEnter(e);\r\n // break;\r\n case KeyCode.ESC:\r\n this.handleKeyDownEsc(e);\r\n break;\r\n case KeyCode.SPACE:\r\n this.handleKeyDownSpace(e);\r\n break;\r\n default:\r\n }\r\n }\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n handleKeyDownFirstLast(e, menu, direction) {\r\n stopEvent(e);\r\n const children = menu.getFlatInstanceArray();\r\n const activeItem = children[direction < 0 ? 0 : children.length - 1];\r\n if (activeItem) {\r\n if (!this.editable || this.popup) {\r\n updateActiveKey(menu, activeItem.props.eventKey);\r\n }\r\n if (!this.editable && !this.popup) {\r\n this.choose(activeItem.props.value);\r\n }\r\n }\r\n }\r\n handleKeyDownPrevNext(e, menu, direction) {\r\n if (!this.multiple && !this.editable) {\r\n const activeItem = menu.step(direction);\r\n if (activeItem) {\r\n updateActiveKey(menu, activeItem.props.eventKey);\r\n this.choose(activeItem.props.value);\r\n }\r\n e.preventDefault();\r\n }\r\n else if (e === KeyCode.DOWN) {\r\n this.expand();\r\n e.preventDefault();\r\n }\r\n }\r\n // handleKeyDownEnter(_e) {\r\n // }\r\n handleKeyDownEsc(e) {\r\n if (this.popup) {\r\n e.preventDefault();\r\n this.collapse();\r\n }\r\n }\r\n handleKeyDownSpace(e) {\r\n if (!this.editable) {\r\n e.preventDefault();\r\n if (!this.popup) {\r\n this.expand();\r\n }\r\n }\r\n }\r\n handleBlur(e) {\r\n if (!e.isDefaultPrevented()) {\r\n super.handleBlur(e);\r\n this.resetFilter();\r\n }\r\n }\r\n expand() {\r\n const { filteredOptions } = this;\r\n if (filteredOptions && filteredOptions.length) {\r\n super.expand();\r\n }\r\n }\r\n syncValueOnBlur(value) {\r\n if (value) {\r\n const { data } = this.comboOptions;\r\n this.options.ready().then(() => {\r\n const record = this.findByTextWithValue(value, data);\r\n if (record) {\r\n this.choose(record);\r\n }\r\n });\r\n }\r\n else if (!this.multiple) {\r\n this.setValue(this.emptyValue);\r\n }\r\n }\r\n findByTextWithValue(text, data) {\r\n const { textField } = this;\r\n const records = [...data, ...this.filteredOptions].filter(record => isSameLike(record.get(textField), text));\r\n if (records.length > 1) {\r\n const { valueField, primitive } = this;\r\n const value = this.getValue();\r\n if (value) {\r\n const found = records.find(record => isSameLike(record.get(valueField), primitive ? value : value[valueField]));\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return records[0];\r\n }\r\n findByText(text) {\r\n const { textField } = this;\r\n return this.optionsWithCombo.find(record => isSameLike(record.get(textField), text));\r\n }\r\n findByValue(value) {\r\n const { valueField } = this;\r\n const autoType = this.getProp('type') === FieldType.auto;\r\n value = getSimpleValue(value, valueField);\r\n return this.optionsWithCombo.find(record => autoType ? isSameLike(record.get(valueField), value) : isSame(record.get(valueField), value));\r\n }\r\n isSelected(record) {\r\n const { valueField } = this;\r\n const autoType = this.getProp('type') === FieldType.auto;\r\n return this.getValues().some(value => {\r\n const simpleValue = getSimpleValue(value, valueField);\r\n return autoType\r\n ? isSameLike(record.get(valueField), simpleValue)\r\n : isSame(record.get(valueField), simpleValue);\r\n });\r\n }\r\n generateComboOption(value, callback) {\r\n const { currentComboOption, textField, valueField } = this;\r\n if (value) {\r\n if (isArrayLike(value)) {\r\n value.forEach(v => !isNil(v) && this.generateComboOption(v));\r\n }\r\n else {\r\n const found = this.findByText(value) || this.findByValue(value);\r\n if (found) {\r\n const text = found.get(textField);\r\n if (text !== value && callback) {\r\n callback(text);\r\n }\r\n this.removeComboOption();\r\n }\r\n else if (currentComboOption) {\r\n currentComboOption.set(textField, value);\r\n currentComboOption.set(valueField, value);\r\n }\r\n else {\r\n this.createComboOption(value);\r\n }\r\n }\r\n }\r\n else {\r\n this.removeComboOption();\r\n }\r\n }\r\n createComboOption(value) {\r\n const { textField, valueField, menu } = this;\r\n const record = this.comboOptions.create({\r\n [textField]: value,\r\n [valueField]: value,\r\n }, 0);\r\n if (menu) {\r\n updateActiveKey(menu, getItemKey(record, value, value));\r\n }\r\n }\r\n removeComboOptions() {\r\n this.comboOptions.forEach(record => this.removeComboOption(record));\r\n }\r\n removeComboOption(record) {\r\n if (!record) {\r\n record = this.currentComboOption;\r\n }\r\n if (record && !this.isSelected(record)) {\r\n this.comboOptions.remove(record);\r\n }\r\n }\r\n handlePopupAnimateAppear() { }\r\n getValueKey(v) {\r\n if (isArrayLike(v)) {\r\n return v.map(this.getValueKey, this).join(',');\r\n }\r\n const autoType = this.getProp('type') === FieldType.auto;\r\n const value = getSimpleValue(v, this.valueField);\r\n return autoType && !isNil(value) ? value.toString() : value;\r\n }\r\n handlePopupAnimateEnd(_key, _exists) { }\r\n handleMenuClick({ item: { props: { value }, }, }) {\r\n if (this.multiple && this.isSelected(value)) {\r\n this.unChoose(value);\r\n }\r\n else {\r\n this.choose(value);\r\n }\r\n }\r\n handleOptionSelect(record) {\r\n this.prepareSetValue(this.processRecordToObject(record));\r\n }\r\n handleOptionUnSelect(record) {\r\n const { valueField } = this;\r\n const newValue = record.get(valueField);\r\n this.removeValue(newValue, -1);\r\n this.removeComboOption(record);\r\n }\r\n setText(text) {\r\n super.setText(text);\r\n if (this.searchable && isString(this.searchMatcher)) {\r\n this.doSearch(text);\r\n }\r\n }\r\n searchRemote(value) {\r\n const { field, searchMatcher } = this;\r\n if (field && isString(searchMatcher)) {\r\n field.setLovPara(searchMatcher, value === '' ? undefined : value);\r\n }\r\n }\r\n handleChange(e) {\r\n const { value } = e.target;\r\n this.setText(value);\r\n if (this.observableProps.combo) {\r\n this.generateComboOption(value, text => this.setText(text));\r\n }\r\n if (!this.popup) {\r\n this.expand();\r\n }\r\n }\r\n processRecordToObject(record) {\r\n const { primitive, valueField } = this;\r\n return primitive ? record.get(valueField) : record.toData();\r\n }\r\n processObjectValue(value, textField) {\r\n if (!isNil(value)) {\r\n if (isPlainObject(value)) {\r\n return ObjectChainValue.get(value, textField);\r\n }\r\n const found = this.findByValue(value);\r\n if (found) {\r\n return found.get(textField);\r\n }\r\n }\r\n }\r\n processLookupValue(value) {\r\n const { field, textField, primitive } = this;\r\n if (primitive && field && field.lookup) {\r\n return super.processValue(field.getText(value));\r\n }\r\n return super.processValue(this.processObjectValue(value, textField));\r\n }\r\n processValue(value) {\r\n const text = this.processLookupValue(value);\r\n if (isEmpty(text)) {\r\n if (isPlainObject(value)) {\r\n return ObjectChainValue.get(value, this.valueField) || '';\r\n }\r\n return super.processValue(value);\r\n }\r\n return text;\r\n }\r\n clear() {\r\n this.setText(undefined);\r\n super.clear();\r\n this.removeComboOptions();\r\n }\r\n resetFilter() {\r\n this.setText(undefined);\r\n this.removeComboOption();\r\n this.forcePopupAlign();\r\n }\r\n reset() {\r\n super.reset();\r\n this.resetFilter();\r\n }\r\n unChoose(record) {\r\n if (record) {\r\n this.handleOptionUnSelect(record);\r\n }\r\n }\r\n choose(record) {\r\n if (!this.multiple) {\r\n this.collapse();\r\n }\r\n if (record) {\r\n this.handleOptionSelect(record);\r\n }\r\n }\r\n chooseAll() {\r\n this.setValue(this.options.map(this.processRecordToObject, this));\r\n }\r\n unChooseAll() {\r\n this.clear();\r\n }\r\n async handlePopupHiddenChange(hidden) {\r\n if (!hidden) {\r\n this.forcePopupAlign();\r\n }\r\n super.handlePopupHiddenChange(hidden);\r\n }\r\n async processSelectedData() {\r\n this.comboOptions.removeAll();\r\n const values = this.getValues();\r\n const { field } = this;\r\n if (field) {\r\n await field.ready();\r\n }\r\n const { filteredOptions, observableProps: { combo }, } = this;\r\n runInAction(() => {\r\n const newValues = values.filter(value => {\r\n const record = this.findByValue(value);\r\n if (record) {\r\n return true;\r\n }\r\n if (combo) {\r\n this.createComboOption(value);\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (field &&\r\n field.get('cascadeMap') &&\r\n filteredOptions.length &&\r\n !isEqual(newValues, values)) {\r\n this.setValue(this.multiple ? newValues : newValues[0]);\r\n }\r\n });\r\n }\r\n filterData(data, text) {\r\n const { textField, valueField, searchable, searchMatcher, props: { optionsFilter }, } = this;\r\n data = optionsFilter ? data.filter(optionsFilter) : data;\r\n if (searchable && text && typeof searchMatcher === 'function') {\r\n return data.filter(record => searchMatcher({ record, text, textField, valueField }));\r\n }\r\n return data;\r\n }\r\n}\r\nSelect.displayName = 'Select';\r\nSelect.propTypes = {\r\n /**\r\n * 复合输入值\r\n * @default false\r\n */\r\n combo: PropTypes.bool,\r\n /**\r\n * 过滤器\r\n * @default false\r\n */\r\n searchable: PropTypes.bool,\r\n /**\r\n * 搜索匹配器。 当为字符串时,作为lookup的参数名来重新请求值列表。\r\n */\r\n searchMatcher: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\r\n /**\r\n * 是否为原始值\r\n * true - 选项中valueField对应的值\r\n * false - 选项值对象\r\n */\r\n primitiveValue: PropTypes.bool,\r\n /**\r\n * 渲染Option文本的钩子\r\n * @example\r\n * ```js\r\n * <Select\r\n * {...props}\r\n * optionRenderer={({ dataSet, record, text, value }) => text + '$'}\r\n * />\r\n * ```\r\n */\r\n optionRenderer: PropTypes.func,\r\n /**\r\n * 当下拉列表为空时显示的内容\r\n */\r\n notFoundContent: PropTypes.node,\r\n /**\r\n * 设置选项属性,如 disabled;\r\n */\r\n onOption: PropTypes.func,\r\n ...TriggerField.propTypes,\r\n};\r\nSelect.defaultProps = {\r\n ...TriggerField.defaultProps,\r\n suffixCls: 'select',\r\n combo: false,\r\n searchable: false,\r\n dropdownMatchSelectWidth: true,\r\n checkValueOnOptionsChange: true,\r\n onOption: defaultOnOption,\r\n};\r\nSelect.Option = Option;\r\nSelect.OptGroup = OptGroup;\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"searchMatcher\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"defaultValidationMessages\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"textField\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"valueField\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"optionsWithCombo\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"cascadeOptions\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"editable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"searchable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"multiple\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"menuMultiple\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"options\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"primitive\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"saveMenu\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"getMenu\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Select.prototype, \"loading\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"getPopupStyleFromAlign\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"handleBlur\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"handlePopupAnimateEnd\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"handleMenuClick\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Select.prototype, \"setText\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Select.prototype, \"handleChange\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Select.prototype, \"clear\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"reset\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"chooseAll\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"unChooseAll\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Select.prototype, \"handlePopupHiddenChange\", null);\r\nlet ObserverSelect = class ObserverSelect extends Select {\r\n};\r\nObserverSelect.defaultProps = Select.defaultProps;\r\nObserverSelect.Option = Option;\r\nObserverSelect.OptGroup = OptGroup;\r\nObserverSelect = tslib_1.__decorate([\r\n observer\r\n], ObserverSelect);\r\nexport default ObserverSelect;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { computed, isArrayLike } from 'mobx';\r\nimport omit from 'lodash/omit';\r\nimport { Select } from '../select/Select';\r\nimport ObserverRadio from '../radio/Radio';\r\nimport ObserverCheckBox from '../check-box/CheckBox';\r\nimport autobind from '../_util/autobind';\r\nimport Option from '../option/Option';\r\nimport OptGroup from '../option/OptGroup';\r\nimport { $l } from '../locale-context';\r\nimport { LabelLayout } from '../form/enum';\r\nconst GroupIdGen = (function* (id) {\r\n while (true) {\r\n yield `__group-${id++}__`;\r\n }\r\n})(1);\r\nlet SelectBox = class SelectBox extends Select {\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('SelectBox', label ? 'value_missing' : 'value_missing_no_label', {\r\n label,\r\n }),\r\n };\r\n }\r\n get name() {\r\n return this.observableProps.name || GroupIdGen.next().value;\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['vertical']);\r\n }\r\n getClassName() {\r\n const { prefixCls, props: { vertical }, } = this;\r\n return super.getClassName({\r\n [`${prefixCls}-vertical`]: vertical,\r\n });\r\n }\r\n isEmpty() {\r\n return false;\r\n }\r\n renderWrapper() {\r\n const { options, textField, valueField } = this;\r\n const { autoFocus, mode, onOption } = this.props;\r\n const items = options.data.map((record, index) => {\r\n const optionProps = onOption({ dataSet: options, record });\r\n return this.renderItem({\r\n ...optionProps,\r\n key: index,\r\n dataSet: null,\r\n record: null,\r\n value: record.get(valueField),\r\n checked: this.isChecked(this.getValue(), record.get(valueField)),\r\n name: this.name,\r\n onChange: this.handleItemChange,\r\n children: record.get(textField),\r\n autoFocus: autoFocus && index === 0,\r\n readOnly: this.isReadOnly(),\r\n disabled: this.isDisabled() || (optionProps && optionProps.disabled),\r\n mode,\r\n noValidate: true,\r\n labelLayout: LabelLayout.none,\r\n });\r\n });\r\n const { className } = this.getOtherProps();\r\n const Element = this.context.formNode ? 'div' : 'form';\r\n return (<span key=\"wrapper\" {...this.getWrapperProps()}>\n <Element className={className}>{items}</Element>\n {this.renderFloatLabel()}\n </span>);\r\n }\r\n handleItemChange(value, oldValue) {\r\n if (this.multiple) {\r\n const values = this.getValues();\r\n if (!value) {\r\n values.splice(values.indexOf(oldValue), 1);\r\n }\r\n else {\r\n values.push(value);\r\n }\r\n this.setValue(values);\r\n }\r\n else {\r\n this.setValue(value);\r\n }\r\n }\r\n isChecked(value, checkedValue) {\r\n if (isArrayLike(value)) {\r\n return value.indexOf(checkedValue) !== -1;\r\n }\r\n return value === checkedValue;\r\n }\r\n renderItem(props) {\r\n if (this.multiple) {\r\n return <ObserverCheckBox {...props}/>;\r\n }\r\n return <ObserverRadio {...props}/>;\r\n }\r\n};\r\nSelectBox.displayName = 'SelectBox';\r\nSelectBox.propTypes = {\r\n /**\r\n * 是否垂直显示\r\n */\r\n vertical: PropTypes.bool,\r\n ...Select.propTypes,\r\n};\r\nSelectBox.defaultProps = {\r\n ...Select.defaultProps,\r\n suffixCls: 'select-box',\r\n vertical: false,\r\n};\r\nSelectBox.Option = Option;\r\nSelectBox.OptGroup = OptGroup;\r\ntslib_1.__decorate([\r\n computed\r\n], SelectBox.prototype, \"defaultValidationMessages\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], SelectBox.prototype, \"name\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], SelectBox.prototype, \"handleItemChange\", null);\r\nSelectBox = tslib_1.__decorate([\r\n observer\r\n], SelectBox);\r\nexport default SelectBox;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action } from 'mobx';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport Table from '../table/Table';\r\nimport { SelectionMode, TableMode } from '../table/enum';\r\nimport { DataSetSelection } from '../data-set/enum';\r\nexport default class LovView extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.handleKeyDown = e => {\r\n if (e.keyCode === KeyCode.ENTER) {\r\n const { onEnterDown } = this.props;\r\n onEnterDown();\r\n }\r\n };\r\n this.handleRow = () => {\r\n const { onDoubleClick } = this.props;\r\n return {\r\n onDoubleClick,\r\n };\r\n };\r\n }\r\n componentWillMount() {\r\n const { dataSet, dataSet: { selection }, multiple, } = this.props;\r\n this.selection = selection;\r\n dataSet.selection = multiple ? DataSetSelection.multiple : DataSetSelection.single;\r\n }\r\n componentWillUnmount() {\r\n const { dataSet } = this.props;\r\n dataSet.selection = this.selection;\r\n }\r\n getColumns() {\r\n const { config: { lovItems }, } = this.props;\r\n return lovItems\r\n ? lovItems\r\n .filter(({ gridField }) => gridField === 'Y')\r\n .sort(({ gridFieldSequence: seq1 }, { gridFieldSequence: seq2 }) => seq1 - seq2)\r\n .map(({ display, gridFieldName, gridFieldWidth, gridFieldAlign }) => ({\r\n key: gridFieldName,\r\n header: display,\r\n name: gridFieldName,\r\n width: gridFieldWidth,\r\n align: gridFieldAlign,\r\n }))\r\n : undefined;\r\n }\r\n render() {\r\n const { dataSet, config: { height, treeFlag, queryColumns }, multiple, } = this.props;\r\n const tableProps = {\r\n autoFocus: true,\r\n mode: treeFlag === 'Y' ? TableMode.tree : TableMode.list,\r\n onKeyDown: this.handleKeyDown,\r\n dataSet,\r\n columns: this.getColumns(),\r\n queryFieldsLimit: queryColumns,\r\n };\r\n if (multiple) {\r\n tableProps.selectionMode = SelectionMode.rowbox;\r\n }\r\n else {\r\n tableProps.selectionMode = SelectionMode.none;\r\n tableProps.onRow = this.handleRow;\r\n }\r\n if (height) {\r\n tableProps.style = { height };\r\n }\r\n return <Table {...tableProps}/>;\r\n }\r\n}\r\nLovView.propTypes = {\r\n dataSet: PropTypes.object.isRequired,\r\n config: PropTypes.object.isRequired,\r\n onDoubleClick: PropTypes.func.isRequired,\r\n onEnterDown: PropTypes.func.isRequired,\r\n};\r\ntslib_1.__decorate([\r\n action\r\n], LovView.prototype, \"componentWillMount\", null);\r\ntslib_1.__decorate([\r\n action\r\n], LovView.prototype, \"componentWillUnmount\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport isEqual from 'lodash/isEqual';\r\nimport isString from 'lodash/isString';\r\nimport { action, computed, observable, toJS } from 'mobx';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { Size } from 'choerodon-ui/lib/_util/enum';\r\nimport Icon from '../icon';\r\nimport { open } from '../modal-container/ModalContainer';\r\nimport LovView from './LovView';\r\nimport DataSet from '../data-set/DataSet';\r\nimport Record from '../data-set/Record';\r\nimport lovStore from '../stores/LovCodeStore';\r\nimport autobind from '../_util/autobind';\r\nimport { stopEvent } from '../_util/EventManager';\r\nimport { Select } from '../select/Select';\r\nimport { ViewMode } from './enum';\r\nimport Button from '../button/Button';\r\nimport { ButtonColor, FuncType } from '../button/enum';\r\nimport { $l } from '../locale-context';\r\nimport { getLovPara } from '../stores/utils';\r\nlet Lov = class Lov extends Select {\r\n constructor() {\r\n super(...arguments);\r\n this.openModal = action(() => {\r\n const config = this.getConfig();\r\n const { options, multiple, primitive, valueField } = this;\r\n const { modalProps } = this.props;\r\n const noCache = this.getProp('noCache');\r\n if (!this.modal && config && options) {\r\n const { width, title } = config;\r\n options.unSelectAll();\r\n options.clearCachedSelected();\r\n if (multiple) {\r\n options.setCachedSelected(this.getValues().map(value => {\r\n const selected = new Record(primitive ? { [valueField]: value } : toJS(value), options);\r\n selected.isSelected = true;\r\n return selected;\r\n }));\r\n }\r\n this.modal = open({\r\n title,\r\n children: (<LovView dataSet={options} config={config} onDoubleClick={this.handleLovViewSelect} onEnterDown={this.handleLovViewSelect} multiple={this.multiple} values={this.getValues()}/>),\r\n onClose: this.handleLovViewClose,\r\n onOk: this.handleLovViewOk,\r\n destroyOnClose: true,\r\n closable: true,\r\n ...modalProps,\r\n style: {\r\n width: pxToRem(width),\r\n minHeight: pxToRem(Math.min(350, window.innerHeight)),\r\n ...(modalProps && modalProps.style),\r\n },\r\n });\r\n if (this.resetOptions(noCache)) {\r\n options.query();\r\n }\r\n else if (multiple) {\r\n options.releaseCachedSelected();\r\n }\r\n }\r\n });\r\n this.handleLovViewSelect = () => {\r\n this.modal.close();\r\n this.handleLovViewOk();\r\n };\r\n this.handleLovViewClose = async () => {\r\n delete this.modal;\r\n this.focus();\r\n };\r\n this.handleLovViewOk = async () => {\r\n const { options, multiple } = this;\r\n const result = [];\r\n const records = multiple ? options.selected : result.concat(options.current || []);\r\n const values = records.map(record => this.processRecordToObject(record));\r\n this.setValue(multiple ? values : values[0] || this.emptyValue);\r\n };\r\n }\r\n get searchMatcher() {\r\n const { searchMatcher } = this.observableProps;\r\n if (isString(searchMatcher)) {\r\n return searchMatcher;\r\n }\r\n return this.textField;\r\n }\r\n get searchable() {\r\n const config = this.getConfig();\r\n if (config) {\r\n return config.editableFlag === 'Y';\r\n }\r\n return !!this.props.searchable;\r\n }\r\n get lovCode() {\r\n const { field } = this;\r\n if (field) {\r\n return field.get('lovCode');\r\n }\r\n return undefined;\r\n }\r\n get popup() {\r\n return !this.filterText || this.modal ? false : this.statePopup;\r\n }\r\n get options() {\r\n const { field, lovCode } = this;\r\n if (lovCode) {\r\n const ds = lovStore.getLovDataSet(lovCode, field);\r\n if (ds) {\r\n return ds;\r\n }\r\n }\r\n return new DataSet();\r\n }\r\n searchRemote(text) {\r\n if (this.filterText !== text) {\r\n const { options, searchMatcher } = this;\r\n this.filterText = text;\r\n if (text && isString(searchMatcher)) {\r\n this.resetOptions(true);\r\n options.setQueryParameter(searchMatcher, text);\r\n options.query();\r\n }\r\n }\r\n }\r\n resetOptions(noCache = false) {\r\n const { field, record, options } = this;\r\n const { queryDataSet } = options;\r\n let dirty = noCache;\r\n if (queryDataSet && noCache) {\r\n const { current } = queryDataSet;\r\n if (current && current.dirty) {\r\n dirty = true;\r\n current.reset();\r\n }\r\n }\r\n if (field) {\r\n const lovPara = getLovPara(field, record);\r\n if (!isEqual(lovPara, options.queryParameter)) {\r\n options.queryParameter = lovPara;\r\n return true;\r\n }\r\n options.first();\r\n if (!options.length) {\r\n return true;\r\n }\r\n }\r\n return dirty;\r\n }\r\n handleKeyDown(e) {\r\n if (!this.popup && e.keyCode === KeyCode.DOWN) {\r\n stopEvent(e);\r\n this.openModal();\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n handleBlur(e) {\r\n if (this.modal) {\r\n e.preventDefault();\r\n }\r\n super.handleBlur(e);\r\n }\r\n syncValueOnBlur(value) {\r\n const { mode } = this.props;\r\n if (mode !== ViewMode.button) {\r\n super.syncValueOnBlur(value);\r\n }\r\n }\r\n getConfig() {\r\n const { lovCode } = this;\r\n if (lovCode) {\r\n return lovStore.getConfig(lovCode);\r\n }\r\n }\r\n getPlaceholders() {\r\n const placeholder = super.getPlaceholders();\r\n if (placeholder.length) {\r\n return placeholder;\r\n }\r\n const config = this.getConfig();\r\n if (config) {\r\n const { placeholder: holder } = config;\r\n const holders = [];\r\n return holder ? holders.concat(holder) : holders;\r\n }\r\n return [];\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['modalProps', 'noCache']);\r\n }\r\n getButtonProps() {\r\n const { className, type } = this.props;\r\n const props = {\r\n ...Button.defaultProps,\r\n ...omit(this.getOtherProps(), ['name']),\r\n className,\r\n type,\r\n };\r\n if (!this.isValid) {\r\n props.color = ButtonColor.red;\r\n }\r\n return props;\r\n }\r\n getSuffix() {\r\n const { suffix } = this.props;\r\n return this.wrapperSuffix(suffix || <Icon type=\"search\"/>, {\r\n onClick: this.isDisabled() || this.isReadOnly() ? undefined : this.openModal,\r\n });\r\n }\r\n componentWillUnmount() {\r\n super.componentWillUnmount();\r\n if (this.modal) {\r\n this.modal.close();\r\n }\r\n }\r\n select() {\r\n const { mode } = this.props;\r\n if (mode !== ViewMode.button) {\r\n super.select();\r\n }\r\n }\r\n renderWrapper() {\r\n const { mode, children, clearButton } = this.props;\r\n if (mode === ViewMode.button) {\r\n const elements = [\r\n <Button key=\"lov_button\" {...this.getButtonProps()} disabled={this.isDisabled()} onClick={this.openModal}>\n {children || this.getTextNode() || this.getPlaceholders()[0] || $l('Lov', 'choose')}\n </Button>,\r\n ];\r\n if (clearButton) {\r\n elements.push(<Button key=\"lov_clear_button\" size={Size.small} funcType={FuncType.flat} icon=\"close\" onClick={this.handleClearButtonClick}/>);\r\n }\r\n return elements;\r\n }\r\n return super.renderWrapper();\r\n }\r\n};\r\nLov.displayName = 'Lov';\r\nLov.propTypes = {\r\n ...Select.propTypes,\r\n ...Button.propTypes,\r\n modalProps: PropTypes.object,\r\n noCache: PropTypes.bool,\r\n};\r\nLov.defaultProps = {\r\n ...Select.defaultProps,\r\n clearButton: true,\r\n checkValueOnOptionsChange: false,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], Lov.prototype, \"filterText\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Lov.prototype, \"searchMatcher\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Lov.prototype, \"searchable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Lov.prototype, \"lovCode\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Lov.prototype, \"popup\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Lov.prototype, \"options\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Lov.prototype, \"searchRemote\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Lov.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Lov.prototype, \"handleBlur\", null);\r\nLov = tslib_1.__decorate([\r\n observer\r\n], Lov);\r\nexport default Lov;\r\n","import createDefaultSetter from './createDefaultSetter';\r\nimport EventManager from './EventManager';\r\nimport TaskRunner from './TaskRunner';\r\nfunction keep(fn, e) {\r\n if (e && e.target) {\r\n e.persist();\r\n const delayer = new TaskRunner();\r\n const keeper = new TaskRunner();\r\n const event = new EventManager(e.target);\r\n const delayFn = () => {\r\n keeper.run(40, fn.bind(this, e));\r\n };\r\n const stopFn = () => {\r\n delayer.cancel();\r\n keeper.cancel();\r\n event.clear();\r\n };\r\n delayer.delay(500, delayFn);\r\n event.addEventListener('mouseleave', stopFn);\r\n event.addEventListener('mouseup', stopFn);\r\n }\r\n fn.call(this, e);\r\n}\r\nexport default function keepRunning(target, key, descriptor) {\r\n const { constructor } = target;\r\n const { value: fn } = descriptor;\r\n return {\r\n configurable: true,\r\n get() {\r\n if (this === target) {\r\n return fn;\r\n }\r\n if (this.constructor !== constructor && Object.getPrototypeOf(this).constructor === constructor) {\r\n return fn;\r\n }\r\n const boundFn = keep.bind(this, fn);\r\n Object.defineProperty(this, key, {\r\n value: boundFn,\r\n configurable: true,\r\n writable: true,\r\n });\r\n return boundFn;\r\n },\r\n set: createDefaultSetter(key),\r\n };\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { computed } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport isString from 'lodash/isString';\r\nimport isNumber from 'lodash/isNumber';\r\nimport defaultTo from 'lodash/defaultTo';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { TextField } from '../text-field/TextField';\r\nimport autobind from '../_util/autobind';\r\nimport keepRunning from '../_util/keepRunning';\r\nimport Icon from '../icon';\r\nimport { getNearStepValues, getPrecision, MAX_SAFE_INTEGER, plus } from './utils';\r\nimport isEmpty from '../_util/isEmpty';\r\nimport { $l } from '../locale-context';\r\nimport { FieldType } from '../data-set/enum';\r\nimport formatNumber from '../formatter/formatNumber';\r\nfunction getCurrentValidValue(value) {\r\n return Number(value.replace(/\\.$/, '')) || 0;\r\n}\r\nexport class NumberField extends TextField {\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('NumberField', label ? 'value_missing' : 'value_missing_no_label', {\r\n label,\r\n }),\r\n };\r\n }\r\n get allowDecimal() {\r\n const { min } = this;\r\n const step = this.getProp('step');\r\n return !step || step % 1 !== 0 || (!!min && min % 1 !== 0);\r\n }\r\n get allowNegative() {\r\n const { min } = this;\r\n return min === undefined || min < 0;\r\n }\r\n get min() {\r\n return this.getLimit('min');\r\n }\r\n get max() {\r\n return this.getLimit('max');\r\n }\r\n getFieldType() {\r\n return FieldType.number;\r\n }\r\n getLimit(type) {\r\n const { record } = this;\r\n const limit = this.getProp(type);\r\n if (record && isString(limit)) {\r\n const num = record.get(limit);\r\n if (num !== undefined) {\r\n return num;\r\n }\r\n }\r\n return limit;\r\n }\r\n getValidatorProps() {\r\n const { min, max } = this;\r\n const step = this.getProp('step');\r\n return {\r\n ...super.getValidatorProps(),\r\n min,\r\n max,\r\n step,\r\n };\r\n }\r\n getInnerSpanButton() {\r\n const { prefixCls } = this;\r\n const step = this.getProp('step');\r\n if (step && !this.isReadOnly()) {\r\n return this.wrapperInnerSpanButton(<div>\n <Icon key=\"plus\" type=\"keyboard_arrow_up\" className={`${prefixCls}-plus`} onMouseDown={this.handlePlus}/>\n <Icon key=\"minus\" type=\"keyboard_arrow_down\" className={`${prefixCls}-minus`} onMouseDown={this.handleMinus}/>\n </div>);\r\n }\r\n }\r\n handleKeyDown(e) {\r\n if (!this.props.disabled && !this.isReadOnly()) {\r\n switch (e.keyCode) {\r\n case KeyCode.UP:\r\n this.handleKeyDownUp(e);\r\n break;\r\n case KeyCode.DOWN:\r\n this.handleKeyDownDown(e);\r\n break;\r\n default:\r\n }\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n handleKeyDownUp(e) {\r\n e.preventDefault();\r\n if (this.getProp('step')) {\r\n this.step(true);\r\n }\r\n }\r\n handleKeyDownDown(e) {\r\n e.preventDefault();\r\n if (this.getProp('step')) {\r\n this.step(false);\r\n }\r\n }\r\n handlePlus() {\r\n this.step(true);\r\n }\r\n handleMinus() {\r\n this.step(false);\r\n }\r\n step(isPlus) {\r\n const min = defaultTo(this.min, -MAX_SAFE_INTEGER);\r\n const max = defaultTo(this.max, MAX_SAFE_INTEGER);\r\n const step = defaultTo(this.getProp('step'), 1);\r\n let newValue;\r\n const value = this.multiple || this.isFocused ? Number(this.text || this.getValue()) : this.getValue();\r\n if (!isNumber(value)) {\r\n newValue = defaultTo(this.min, 0);\r\n }\r\n else {\r\n const currentValue = getCurrentValidValue(String(value));\r\n newValue = currentValue;\r\n const nearStep = getNearStepValues(currentValue, step, min, max);\r\n if (nearStep) {\r\n switch (nearStep.length) {\r\n case 1:\r\n newValue = nearStep[0];\r\n break;\r\n case 2:\r\n newValue = nearStep[isPlus ? 1 : 0];\r\n break;\r\n default:\r\n }\r\n }\r\n else {\r\n const nextValue = plus(currentValue, (isPlus ? step : -step));\r\n if (nextValue < min) {\r\n newValue = min;\r\n }\r\n else if (nextValue > max) {\r\n const nearMaxStep = getNearStepValues(max, step, min, max);\r\n if (nearMaxStep) {\r\n newValue = nearMaxStep[0];\r\n }\r\n else {\r\n newValue = max;\r\n }\r\n }\r\n else {\r\n newValue = nextValue;\r\n }\r\n }\r\n }\r\n if (this.value !== newValue) {\r\n if (this.multiple) {\r\n this.setText(String(newValue));\r\n }\r\n else {\r\n this.prepareSetValue(newValue);\r\n }\r\n }\r\n }\r\n prepareSetValue(value) {\r\n super.prepareSetValue(isNaN(value) || isEmpty(value) ? null : Number(value));\r\n }\r\n restrictInput(value) {\r\n if (value) {\r\n let restrict = '0-9';\r\n if (this.allowDecimal) {\r\n restrict += '.';\r\n }\r\n const isNegative = this.allowNegative && /^-/.test(value);\r\n value = super.restrictInput(value.replace(new RegExp(`[^${restrict}]+`, 'g'), ''));\r\n const values = value.split('.');\r\n if (values.length > 2) {\r\n value = `${values.shift()}.${values.join('')}`;\r\n }\r\n if (isNegative) {\r\n value = `-${value}`;\r\n }\r\n }\r\n return value;\r\n }\r\n getFormatOptions() {\r\n const precision = getPrecision(this.getValue() || 0);\r\n return {\r\n minimumFractionDigits: precision,\r\n maximumFractionDigits: precision,\r\n };\r\n }\r\n getFormatter() {\r\n return formatNumber;\r\n }\r\n processText(value) {\r\n return this.getFormatter()(value, this.lang, this.getFormatOptions());\r\n }\r\n}\r\nNumberField.displayName = 'NumberField';\r\nNumberField.propTypes = {\r\n /**\r\n * 最小值\r\n */\r\n min: PropTypes.number,\r\n /**\r\n * 最大值\r\n */\r\n max: PropTypes.number,\r\n /**\r\n * 步距\r\n */\r\n step: PropTypes.number,\r\n ...TextField.propTypes,\r\n};\r\nNumberField.defaultProps = {\r\n ...TextField.defaultProps,\r\n suffixCls: 'input-number',\r\n};\r\nNumberField.format = formatNumber;\r\ntslib_1.__decorate([\r\n computed\r\n], NumberField.prototype, \"defaultValidationMessages\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], NumberField.prototype, \"allowDecimal\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], NumberField.prototype, \"allowNegative\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], NumberField.prototype, \"min\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], NumberField.prototype, \"max\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], NumberField.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n keepRunning\r\n], NumberField.prototype, \"handlePlus\", null);\r\ntslib_1.__decorate([\r\n keepRunning\r\n], NumberField.prototype, \"handleMinus\", null);\r\nlet ObserverNumberField = class ObserverNumberField extends NumberField {\r\n};\r\nObserverNumberField.defaultProps = NumberField.defaultProps;\r\nObserverNumberField.format = formatNumber;\r\nObserverNumberField = tslib_1.__decorate([\r\n observer\r\n], ObserverNumberField);\r\nexport default ObserverNumberField;\r\n","import * as tslib_1 from \"tslib\";\r\nimport { observer } from 'mobx-react';\r\nimport { NumberField } from '../number-field/NumberField';\r\nimport { FieldType } from '../data-set/enum';\r\nimport formatCurrency from '../formatter/formatCurrency';\r\nlet Currency = class Currency extends NumberField {\r\n getFieldType() {\r\n return FieldType.currency;\r\n }\r\n getFormatter() {\r\n return formatCurrency;\r\n }\r\n getFormatOptions() {\r\n return {\r\n currency: this.getProp('currency'),\r\n };\r\n }\r\n};\r\nCurrency.displayName = 'Currency';\r\nCurrency.format = formatCurrency;\r\nCurrency = tslib_1.__decorate([\r\n observer\r\n], Currency);\r\nexport default Currency;\r\n","export var ViewMode;\r\n(function (ViewMode) {\r\n ViewMode[\"time\"] = \"time\";\r\n ViewMode[\"dateTime\"] = \"dateTime\";\r\n ViewMode[\"week\"] = \"week\";\r\n ViewMode[\"date\"] = \"date\";\r\n ViewMode[\"month\"] = \"month\";\r\n ViewMode[\"year\"] = \"year\";\r\n ViewMode[\"decade\"] = \"decade\";\r\n})(ViewMode || (ViewMode = {}));\r\nexport var TimeUnit;\r\n(function (TimeUnit) {\r\n TimeUnit[\"hour\"] = \"h\";\r\n TimeUnit[\"minute\"] = \"m\";\r\n TimeUnit[\"second\"] = \"s\";\r\n})(TimeUnit || (TimeUnit = {}));\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment from 'moment';\r\nimport classNames from 'classnames';\r\nimport noop from 'lodash/noop';\r\nimport ViewComponent from '../core/ViewComponent';\r\nimport autobind from '../_util/autobind';\r\nimport Icon from '../icon';\r\nimport { ViewMode } from './enum';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { $l } from '../locale-context';\r\nimport { stopEvent } from '../_util/EventManager';\r\nexport function alwaysValidDate() {\r\n return true;\r\n}\r\nexport default class DaysView extends ViewComponent {\r\n render() {\r\n const { prefixCls, props: { className }, } = this;\r\n const classString = classNames(`${prefixCls}-view`, className);\r\n return (<div className={classString}>\n {this.renderHeader()}\n {this.renderBody()}\n {this.renderFooter()}\n </div>);\r\n }\r\n handlePrevYearClick() {\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, 'y'), ViewMode.year);\r\n }\r\n handlePrevMonthClick() {\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, 'M'), ViewMode.month);\r\n }\r\n handleMonthSelect() {\r\n this.changeViewMode(ViewMode.month);\r\n }\r\n handleYearSelect() {\r\n this.changeViewMode(ViewMode.year);\r\n }\r\n handleNextYearClick() {\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'y'), ViewMode.year);\r\n }\r\n handleNextMonthClick() {\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'M'), ViewMode.month);\r\n }\r\n handleKeyDownHome(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().startOf('M'));\r\n }\r\n handleKeyDownEnd(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().endOf('M'));\r\n }\r\n handleKeyDownLeft(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n this.changeViewMode(ViewMode.month);\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, 'd'));\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n stopEvent(e);\r\n if (!e.altKey) {\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'd'));\r\n }\r\n }\r\n handleKeyDownUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, 'w'));\r\n }\r\n handleKeyDownDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'w'));\r\n }\r\n handleKeyDownPageUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, e.altKey ? 'y' : 'M'));\r\n }\r\n handleKeyDownPageDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(1, e.altKey ? 'y' : 'M'));\r\n }\r\n handleKeyDownEnter(e) {\r\n e.preventDefault();\r\n this.choose(this.props.date);\r\n }\r\n handleCellClick(date) {\r\n this.choose(date);\r\n }\r\n choose(date) {\r\n const { onSelect = noop } = this.props;\r\n onSelect(date);\r\n }\r\n changeSelectedDate(selectedDate, mode) {\r\n const { onSelectedDateChange = noop } = this.props;\r\n onSelectedDateChange(selectedDate, mode);\r\n }\r\n changeViewMode(mode) {\r\n const { onViewModeChange = noop } = this.props;\r\n onViewModeChange(mode);\r\n }\r\n renderHeader() {\r\n const { prefixCls, props: { date }, } = this;\r\n return (<div className={`${prefixCls}-header`}>\n <a className={`${prefixCls}-prev-year`} onClick={this.handlePrevYearClick}>\n <Icon type=\"first_page\"/>\n </a>\n <a className={`${prefixCls}-prev-month`} onClick={this.handlePrevMonthClick}>\n <Icon type=\"navigate_before\"/>\n </a>\n <a className={`${prefixCls}-view-select`} onClick={this.handleMonthSelect}>\n {date.localeData().monthsShort(date)}\n </a>\n <a className={`${prefixCls}-view-select`} onClick={this.handleYearSelect}>\n {date.year()}\n </a>\n <a className={`${prefixCls}-next-year`}>\n <Icon type=\"last_page\" onClick={this.handleNextYearClick}/>\n </a>\n <a className={`${prefixCls}-next-month`} onClick={this.handleNextMonthClick}>\n <Icon type=\"navigate_next\"/>\n </a>\n </div>);\r\n }\r\n renderBody() {\r\n return <div className={`${this.prefixCls}-body`}>{this.renderPanel()}</div>;\r\n }\r\n renderPanel() {\r\n return (<table className={this.getPanelClass()} cellSpacing={0}>\n {this.renderPanelHead()}\n <tbody>{this.renderPanelBody()}</tbody>\n </table>);\r\n }\r\n renderPanelHead() {\r\n return (<thead>\n <tr>{this.getDaysOfWeek()}</tr>\n </thead>);\r\n }\r\n renderFooter() {\r\n const { prefixCls } = this;\r\n return (<div className={`${prefixCls}-footer`}>\n <a onClick={this.choose.bind(this, moment().startOf('d'))}>{$l('DatePicker', 'today')}</a>\n </div>);\r\n }\r\n renderCell(props) {\r\n return <td {...props}/>;\r\n }\r\n renderInner(text) {\r\n const { prefixCls } = this;\r\n return <div className={`${prefixCls}-cell-inner`}>{text}</div>;\r\n }\r\n getFirstDay(date) {\r\n const firstDay = date.clone().subtract(1, 'M');\r\n return firstDay.date(firstDay.daysInMonth()).startOf('w');\r\n }\r\n renderPanelBody() {\r\n const { prefixCls, props: { date, renderer = this.renderCell, isValidDate = alwaysValidDate }, } = this;\r\n const selected = date.clone();\r\n const prevMonth = this.getFirstDay(date);\r\n const currentYear = date.year();\r\n const currentMonth = date.month();\r\n const lastDay = prevMonth.clone().add(42, 'd');\r\n const rows = [];\r\n let cells = [];\r\n while (prevMonth.isBefore(lastDay)) {\r\n const currentDate = prevMonth.clone();\r\n const isDisabled = !isValidDate(currentDate, selected);\r\n const className = classNames(`${prefixCls}-cell`, {\r\n [`${prefixCls}-old`]: prevMonth.year() < currentYear ||\r\n (prevMonth.year() === currentYear && prevMonth.month() < currentMonth),\r\n [`${prefixCls}-new`]: prevMonth.year() > currentYear ||\r\n (prevMonth.year() === currentYear && prevMonth.month() > currentMonth),\r\n [`${prefixCls}-selected`]: prevMonth.isSame(selected, 'd'),\r\n [`${prefixCls}-today`]: prevMonth.isSame(moment(), 'd'),\r\n [`${prefixCls}-disabled`]: isDisabled,\r\n });\r\n const text = String(currentDate.date());\r\n const dayProps = {\r\n key: prevMonth.format('M_D'),\r\n className,\r\n children: this.renderInner(text),\r\n };\r\n if (!isDisabled) {\r\n dayProps.onClick = this.handleCellClick.bind(this, currentDate);\r\n }\r\n cells.push(renderer(dayProps, text, currentDate, selected));\r\n if (cells.length === 7) {\r\n rows.push(<tr key={prevMonth.format('M_D')}>{cells}</tr>);\r\n cells = [];\r\n }\r\n prevMonth.add(1, 'd');\r\n }\r\n return rows;\r\n }\r\n getPanelClass() {\r\n return `${this.prefixCls}-day-panel`;\r\n }\r\n getDaysOfWeek() {\r\n const locale = this.props.date.localeData();\r\n const days = locale.weekdaysMin();\r\n const first = locale.firstDayOfWeek();\r\n const dow = [];\r\n let i = 0;\r\n days.forEach(day => {\r\n dow[(7 + i++ - first) % 7] = (<th key={day} title={day}>\n {day}\n </th>);\r\n });\r\n return dow;\r\n }\r\n getCloneDate() {\r\n return this.props.date.clone();\r\n }\r\n}\r\nDaysView.displayName = 'DaysView';\r\nDaysView.propTypes = {\r\n date: PropTypes.object,\r\n renderer: PropTypes.func,\r\n isValidDate: PropTypes.func,\r\n onSelect: PropTypes.func,\r\n onSelectedDateChange: PropTypes.func,\r\n onViewModeChange: PropTypes.func,\r\n ...ViewComponent.propTypes,\r\n};\r\nDaysView.defaultProps = {\r\n suffixCls: 'calendar',\r\n};\r\nDaysView.type = FieldType.date;\r\ntslib_1.__decorate([\r\n autobind\r\n], DaysView.prototype, \"handlePrevYearClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DaysView.prototype, \"handlePrevMonthClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DaysView.prototype, \"handleMonthSelect\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DaysView.prototype, \"handleYearSelect\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DaysView.prototype, \"handleNextYearClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DaysView.prototype, \"handleNextMonthClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DaysView.prototype, \"renderCell\", null);\r\n","var TimesView_1;\r\nimport * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport moment from 'moment';\r\nimport classNames from 'classnames';\r\nimport { action, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport autobind from '../_util/autobind';\r\nimport { TimeUnit, ViewMode } from './enum';\r\nimport DaysView, { alwaysValidDate } from './DaysView';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { $l } from '../locale-context';\r\nimport { getDateFormatByFieldType } from '../field/utils';\r\nimport { stopEvent } from '../_util/EventManager';\r\nconst TimeUnitQueue = [TimeUnit.hour, TimeUnit.minute, TimeUnit.second];\r\nlet TimesView = TimesView_1 = class TimesView extends DaysView {\r\n handleDateTimeSelect() {\r\n this.changeViewMode(ViewMode.dateTime);\r\n }\r\n handleKeyDownHome(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().set(this.getCurrentUnit(), 0));\r\n }\r\n handleKeyDownEnd(e) {\r\n stopEvent(e);\r\n const unit = this.getCurrentUnit();\r\n const size = unit === TimeUnit.hour ? 24 : 60;\r\n this.changeSelectedDate(this.getCloneDate().set(unit, size - 1));\r\n }\r\n handleKeyDownLeft(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n if (this.props.mode !== ViewMode.time) {\r\n this.changeViewMode(ViewMode.dateTime);\r\n }\r\n }\r\n else {\r\n this.changeUnit(this.getPrevUnit());\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n stopEvent(e);\r\n if (!e.altKey) {\r\n this.changeUnit(this.getNextUnit());\r\n }\r\n }\r\n handleKeyDownUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, this.getCurrentUnit()));\r\n }\r\n handleKeyDownDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(1, this.getCurrentUnit()));\r\n }\r\n handleKeyDownPageUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().set(this.getCurrentUnit(), 0));\r\n }\r\n handleKeyDownPageDown(e) {\r\n stopEvent(e);\r\n const unit = this.getCurrentUnit();\r\n const size = unit === TimeUnit.hour ? 24 : 60;\r\n this.changeSelectedDate(this.getCloneDate().set(unit, size - 1));\r\n }\r\n handleTimeCellClick(date, unit) {\r\n this.changeUnit(unit);\r\n this.changeSelectedDate(date);\r\n }\r\n async handleWheel(e) {\r\n e.preventDefault();\r\n if (e.deltaY > 0) {\r\n await this.changeSelectedDate(this.getCloneDate().add(1, this.getCurrentUnit()));\r\n }\r\n else if (e.deltaY < 0) {\r\n await this.changeSelectedDate(this.getCloneDate().subtract(1, this.getCurrentUnit()));\r\n }\r\n }\r\n renderHeader() {\r\n const { prefixCls, props: { date, mode }, } = this;\r\n if (mode === ViewMode.time) {\r\n return (<div className={`${prefixCls}-header`}>\n <span className={`${prefixCls}-view-select`}>\n {date.format(getDateFormatByFieldType(TimesView_1.type))}\n </span>\n </div>);\r\n }\r\n return (<div className={`${prefixCls}-header`}>\n <a className={`${prefixCls}-view-select`} onClick={this.handleMonthSelect}>\n {date.localeData().monthsShort(date)}\n </a>\n <a className={`${prefixCls}-view-select`} onClick={this.handleDateTimeSelect}>\n {date.date()}\n </a>\n <a className={`${prefixCls}-view-select`} onClick={this.handleYearSelect}>\n {date.year()}\n </a>\n </div>);\r\n }\r\n renderFooter() {\r\n const { prefixCls } = this;\r\n return (<div className={`${prefixCls}-footer`}>\n <a className={`${prefixCls}-footer-now-btn`} onClick={this.choose.bind(this, moment())}>\n {$l('DatePicker', 'now')}\n </a>\n <a className={`${prefixCls}-footer-view-select`} onClick={this.choose.bind(this, this.props.date)}>\n {$l('DatePicker', 'ok')}\n </a>\n </div>);\r\n }\r\n renderPanel() {\r\n const className = this.getPanelClass();\r\n return (<div className={`${className} ${this.prefixCls}-${this.getCurrentUnit()}`} onWheel={this.handleWheel}>\n <div className={`${className}-inner`}>{this.renderPanelBody()}</div>\n </div>);\r\n }\r\n renderPanelBody() {\r\n return [\r\n this.getTimeBar(TimeUnit.hour),\r\n this.getTimeBar(TimeUnit.minute),\r\n this.getTimeBar(TimeUnit.second),\r\n <div key=\"active\" className={`${this.prefixCls}-time-focus-active`}/>,\r\n ];\r\n }\r\n renderCell(props) {\r\n return <li {...props}/>;\r\n }\r\n getTimeBar(unit) {\r\n const { prefixCls, props: { date, renderer = this.renderCell, isValidDate = alwaysValidDate }, } = this;\r\n const size = unit === TimeUnit.hour ? 24 : 60;\r\n const selected = date.clone();\r\n const pre = date.clone().set(unit, 0);\r\n const last = pre.clone().add(size, unit);\r\n const items = [];\r\n while (pre.isBefore(last)) {\r\n const current = pre.clone();\r\n const isDisabled = !isValidDate(current, selected);\r\n const text = String(pre.get(unit));\r\n const className = classNames(`${prefixCls}-cell`, {\r\n [`${prefixCls}-selected`]: pre.isSame(selected, unit),\r\n [`${prefixCls}-disabled`]: isDisabled,\r\n });\r\n const props = {\r\n key: text,\r\n className,\r\n children: <div className={`${prefixCls}-cell-inner`}>{text}</div>,\r\n };\r\n if (!isDisabled) {\r\n props.onClick = this.handleTimeCellClick.bind(this, current, unit);\r\n }\r\n items.push(renderer(props, text, current, selected));\r\n pre.add(1, unit);\r\n }\r\n return (<div key={unit} className={`${prefixCls}-time-list`} onMouseEnter={this.changeUnit.bind(this, unit)}>\n <ul style={{ top: `${(-selected.get(unit) + 4.5) * 100}%` }}>{items}</ul>\n <div className={`${prefixCls}-time-focus`}/>\n </div>);\r\n }\r\n getPanelClass() {\r\n return `${this.prefixCls}-time-panel`;\r\n }\r\n getCurrentUnit() {\r\n const { currentUnit = TimeUnit.hour } = this;\r\n return currentUnit;\r\n }\r\n getPrevUnit() {\r\n return TimeUnitQueue[TimeUnitQueue.indexOf(this.getCurrentUnit()) - 1];\r\n }\r\n getNextUnit() {\r\n return TimeUnitQueue[TimeUnitQueue.indexOf(this.getCurrentUnit()) + 1];\r\n }\r\n changeUnit(unit) {\r\n if (unit !== undefined && unit !== this.currentUnit) {\r\n this.currentUnit = unit;\r\n }\r\n }\r\n choose(date) {\r\n const { mode } = this.props;\r\n if (mode !== ViewMode.time) {\r\n this.changeSelectedDate(date);\r\n this.changeViewMode(mode);\r\n }\r\n else {\r\n super.choose(date);\r\n }\r\n }\r\n};\r\nTimesView.displayName = 'TimesView';\r\nTimesView.type = FieldType.time;\r\ntslib_1.__decorate([\r\n observable\r\n], TimesView.prototype, \"currentUnit\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], TimesView.prototype, \"handleDateTimeSelect\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TimesView.prototype, \"handleWheel\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TimesView.prototype, \"renderCell\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TimesView.prototype, \"changeUnit\", null);\r\nTimesView = TimesView_1 = tslib_1.__decorate([\r\n observer\r\n], TimesView);\r\nexport default TimesView;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport moment from 'moment';\r\nimport DaysView from './DaysView';\r\nimport TimesView from './TimesView';\r\nimport autobind from '../_util/autobind';\r\nimport { ViewMode } from './enum';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { $l } from '../locale-context';\r\nimport { getDateFormatByFieldType } from '../field/utils';\r\nexport default class DateTimesView extends DaysView {\r\n handleTimeSelect() {\r\n this.changeViewMode(ViewMode.time);\r\n }\r\n handleKeyDownRight(e) {\r\n if (e.altKey) {\r\n this.changeViewMode(ViewMode.time);\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'd'));\r\n }\r\n }\r\n getFirstDay(date) {\r\n const firstDay = date.clone().subtract(1, 'M');\r\n const hour = firstDay.hour();\r\n const minute = firstDay.minute();\r\n const second = firstDay.second();\r\n firstDay.date(firstDay.daysInMonth()).startOf('w');\r\n firstDay.hour(hour);\r\n firstDay.minute(minute);\r\n firstDay.second(second);\r\n return firstDay;\r\n }\r\n renderFooter() {\r\n const { prefixCls, props: { date }, } = this;\r\n return (<div className={`${prefixCls}-footer`}>\n <a className={`${prefixCls}-footer-now-btn`} onClick={this.choose.bind(this, moment())}>\n {$l('DatePicker', 'now')}\n </a>\n <a className={`${prefixCls}-footer-view-select`} onClick={this.handleTimeSelect}>\n {date.format(getDateFormatByFieldType(TimesView.type))}\n </a>\n </div>);\r\n }\r\n}\r\nDateTimesView.displayName = 'DateTimesView';\r\nDateTimesView.type = FieldType.dateTime;\r\ntslib_1.__decorate([\r\n autobind\r\n], DateTimesView.prototype, \"handleTimeSelect\", null);\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport classNames from 'classnames';\r\nimport DaysView from './DaysView';\r\nimport { ViewMode } from './enum';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { $l } from '../locale-context';\r\nimport { stopEvent } from '../_util/EventManager';\r\nexport default class WeeksView extends DaysView {\r\n handleKeyDownLeft(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n this.changeViewMode(ViewMode.month);\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, 'M'));\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n stopEvent(e);\r\n if (!e.altKey) {\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'M'));\r\n }\r\n }\r\n renderPanelBody() {\r\n const { prefixCls, props: { date, renderer = this.renderCell }, } = this;\r\n const selected = date.clone();\r\n const firstDay = this.getFirstDay(date);\r\n const lastDay = firstDay.clone().add(42, 'd');\r\n const rows = [];\r\n let cells = [];\r\n while (firstDay.isBefore(lastDay)) {\r\n const currentDate = firstDay.clone();\r\n const className = classNames(`${prefixCls}-cell`, {\r\n [`${prefixCls}-selected`]: firstDay.isSame(selected, 'w'),\r\n });\r\n const text = String(currentDate.date());\r\n const dayProps = {\r\n key: firstDay.format('M_D'),\r\n className,\r\n children: this.renderInner(text),\r\n };\r\n if (cells.length === 0) {\r\n const weekProps = {\r\n key: firstDay.format('Wo'),\r\n className: `${className} ${prefixCls}-week-cell`,\r\n };\r\n cells.push(this.getWeekCell(weekProps, firstDay.week()));\r\n }\r\n cells.push(renderer(dayProps, text, currentDate, selected));\r\n if (cells.length === 8) {\r\n rows.push(<tr onClick={this.handleCellClick.bind(this, currentDate)} key={firstDay.format('M_D')}>\n {cells}\n </tr>);\r\n cells = [];\r\n }\r\n firstDay.add(1, 'd');\r\n }\r\n return rows;\r\n }\r\n choose(date) {\r\n super.choose(date.startOf('W'));\r\n }\r\n getPanelClass() {\r\n return `${this.prefixCls}-week-panel`;\r\n }\r\n renderFooter() {\r\n const { prefixCls } = this;\r\n return (<div className={`${prefixCls}-footer`}>\n <a onClick={this.choose.bind(this, moment())}>{$l('DatePicker', 'this_week')}</a>\n </div>);\r\n }\r\n getWeekCell(props, text) {\r\n const { prefixCls } = this;\r\n return (<td {...props}>\n <div className={`${prefixCls}-cell-inner`}>W{text}</div>\n </td>);\r\n }\r\n getDaysOfWeek() {\r\n return [<th key=\"null\">&nbsp;</th>, ...super.getDaysOfWeek()];\r\n }\r\n}\r\nWeeksView.displayName = 'WeeksView';\r\nWeeksView.type = FieldType.week;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport Icon from '../icon';\r\nimport DaysView, { alwaysValidDate } from './DaysView';\r\nimport { ViewMode } from './enum';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { stopEvent } from '../_util/EventManager';\r\nexport default class MonthsView extends DaysView {\r\n handleKeyDownHome(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().startOf('y'));\r\n }\r\n handleKeyDownEnd(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().endOf('y'));\r\n }\r\n handleKeyDownLeft(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n this.changeViewMode(ViewMode.year);\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, 'M'));\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n const { mode } = this.props;\r\n if (mode !== ViewMode.month) {\r\n this.changeViewMode(mode);\r\n }\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'M'));\r\n }\r\n }\r\n handleKeyDownUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(3, 'M'));\r\n }\r\n handleKeyDownDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(3, 'M'));\r\n }\r\n handleKeyDownPageUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(e.altKey ? 10 : 1, 'y'));\r\n }\r\n handleKeyDownPageDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(e.altKey ? 10 : 1, 'y'));\r\n }\r\n renderHeader() {\r\n const { prefixCls, props: { date }, } = this;\r\n return (<div className={`${prefixCls}-header`}>\n <a className={`${prefixCls}-prev-year`} onClick={this.handlePrevYearClick}>\n <Icon type=\"first_page\"/>\n </a>\n <a className={`${prefixCls}-view-select`} onClick={this.handleYearSelect}>\n {date.year()}\n </a>\n <a className={`${prefixCls}-next-year`}>\n <Icon type=\"last_page\" onClick={this.handleNextYearClick}/>\n </a>\n </div>);\r\n }\r\n renderPanelHead() {\r\n return undefined;\r\n }\r\n renderPanelBody() {\r\n const { prefixCls, props: { date, renderer = this.renderCell, isValidDate = alwaysValidDate }, } = this;\r\n const selected = date.clone();\r\n const prevMonth = date.clone().startOf('y');\r\n const lastMonth = prevMonth.clone().add(12, 'M');\r\n const rows = [];\r\n let cells = [];\r\n while (prevMonth.isBefore(lastMonth)) {\r\n const currentMonth = prevMonth.clone();\r\n const isDisabled = !isValidDate(currentMonth, selected);\r\n const className = classNames(`${prefixCls}-cell`, {\r\n [`${prefixCls}-selected`]: prevMonth.isSame(selected, 'M'),\r\n [`${prefixCls}-disabled`]: isDisabled,\r\n });\r\n const text = prevMonth.localeData().monthsShort(prevMonth);\r\n const monthProps = {\r\n key: text,\r\n className,\r\n children: this.renderInner(text),\r\n };\r\n if (!isDisabled) {\r\n monthProps.onClick = this.handleCellClick.bind(this, currentMonth);\r\n }\r\n cells.push(renderer(monthProps, text, currentMonth, selected));\r\n if (cells.length === 3) {\r\n rows.push(<tr key={text}>{cells}</tr>);\r\n cells = [];\r\n }\r\n prevMonth.add(1, 'M');\r\n }\r\n return rows;\r\n }\r\n renderFooter() {\r\n return undefined;\r\n }\r\n getPanelClass() {\r\n return `${this.prefixCls}-month-panel`;\r\n }\r\n choose(date) {\r\n const { mode } = this.props;\r\n if (mode !== ViewMode.month) {\r\n this.changeSelectedDate(date);\r\n this.changeViewMode(mode);\r\n }\r\n else {\r\n super.choose(date);\r\n }\r\n }\r\n}\r\nMonthsView.displayName = 'MonthsView';\r\nMonthsView.type = FieldType.month;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport classNames from 'classnames';\r\nimport autobind from '../_util/autobind';\r\nimport Icon from '../icon';\r\nimport { ViewMode } from './enum';\r\nimport DaysView, { alwaysValidDate } from './DaysView';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { stopEvent } from '../_util/EventManager';\r\nexport default class YearsView extends DaysView {\r\n handlePrevYearClick() {\r\n this.changeSelectedDate(this.getCloneDate().subtract(10, 'y'));\r\n }\r\n handleYearSelect() {\r\n this.changeViewMode(ViewMode.decade);\r\n }\r\n handleNextYearClick() {\r\n this.changeSelectedDate(this.getCloneDate().add(10, 'y'));\r\n }\r\n handleKeyDownHome(e) {\r\n stopEvent(e);\r\n const date = this.getCloneDate();\r\n this.changeSelectedDate(date.subtract(date.year() % 10, 'y'));\r\n }\r\n handleKeyDownEnd(e) {\r\n stopEvent(e);\r\n const date = this.getCloneDate();\r\n this.changeSelectedDate(date.add(9 - (date.year() % 10), 'y'));\r\n }\r\n handleKeyDownLeft(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n this.changeViewMode(ViewMode.decade);\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().subtract(1, 'y'));\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n if (this.props.mode !== ViewMode.year) {\r\n this.changeViewMode(ViewMode.month);\r\n }\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().add(1, 'y'));\r\n }\r\n }\r\n handleKeyDownUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(3, 'y'));\r\n }\r\n handleKeyDownDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(3, 'y'));\r\n }\r\n handleKeyDownPageUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(e.altKey ? 100 : 10, 'y'));\r\n }\r\n handleKeyDownPageDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(e.altKey ? 100 : 10, 'y'));\r\n }\r\n renderHeader() {\r\n const { prefixCls, props: { date }, } = this;\r\n const year = date.year() % 10;\r\n const from = date.clone().subtract(year, 'y');\r\n const to = from.clone().add(9, 'y');\r\n return (<div className={`${prefixCls}-header`}>\n <a className={`${prefixCls}-prev-year`} onClick={this.handlePrevYearClick}>\n <Icon type=\"first_page\"/>\n </a>\n <a className={`${prefixCls}-view-select`} onClick={this.handleYearSelect}>\n {from.year()} - {to.year()}\n </a>\n <a className={`${prefixCls}-next-year`}>\n <Icon type=\"last_page\" onClick={this.handleNextYearClick}/>\n </a>\n </div>);\r\n }\r\n renderPanelHead() {\r\n return undefined;\r\n }\r\n renderPanelBody() {\r\n const { prefixCls, props: { date, renderer = this.renderCell, isValidDate = alwaysValidDate }, } = this;\r\n const selected = date.clone();\r\n const from = date\r\n .clone()\r\n .startOf('y')\r\n .subtract(date.year() % 10, 'y');\r\n const to = from.clone().add(10, 'y');\r\n const prevYear = from.clone().subtract(1, 'y');\r\n const lastYear = to.clone().add(1, 'y');\r\n const rows = [];\r\n let cells = [];\r\n while (prevYear.isBefore(lastYear)) {\r\n const currentYear = prevYear.clone();\r\n const isDisabled = !isValidDate(currentYear, selected);\r\n const className = classNames(`${prefixCls}-cell`, {\r\n [`${prefixCls}-old`]: currentYear.isBefore(from, 'y'),\r\n [`${prefixCls}-new`]: currentYear.isSame(to, 'y'),\r\n [`${prefixCls}-selected`]: prevYear.isSame(selected, 'y'),\r\n [`${prefixCls}-disabled`]: isDisabled,\r\n });\r\n const text = String(prevYear.year());\r\n const yearProps = {\r\n key: text,\r\n className,\r\n children: this.renderInner(text),\r\n };\r\n if (!isDisabled) {\r\n yearProps.onClick = this.handleCellClick.bind(this, currentYear);\r\n }\r\n cells.push(renderer(yearProps, text, currentYear, selected));\r\n if (cells.length === 3) {\r\n rows.push(<tr key={text}>{cells}</tr>);\r\n cells = [];\r\n }\r\n prevYear.add(1, 'y');\r\n }\r\n return rows;\r\n }\r\n renderFooter() {\r\n return undefined;\r\n }\r\n getPanelClass() {\r\n return `${this.prefixCls}-year-panel`;\r\n }\r\n choose(date) {\r\n const { mode } = this.props;\r\n if (mode !== ViewMode.year) {\r\n this.changeSelectedDate(date);\r\n this.changeViewMode(ViewMode.month);\r\n }\r\n else {\r\n super.choose(date);\r\n }\r\n }\r\n}\r\nYearsView.displayName = 'YearsView';\r\nYearsView.type = FieldType.year;\r\ntslib_1.__decorate([\r\n autobind\r\n], YearsView.prototype, \"handlePrevYearClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], YearsView.prototype, \"handleYearSelect\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], YearsView.prototype, \"handleNextYearClick\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport classNames from 'classnames';\r\nimport autobind from '../_util/autobind';\r\nimport Icon from '../icon';\r\nimport DaysView, { alwaysValidDate } from './DaysView';\r\nimport { ViewMode } from './enum';\r\nimport { stopEvent } from '../_util/EventManager';\r\nexport default class DecadeYearsView extends DaysView {\r\n handlePrevYearClick() {\r\n this.changeSelectedDate(this.getCloneDate().subtract(100, 'y'));\r\n }\r\n handleNextYearClick() {\r\n this.changeSelectedDate(this.getCloneDate().add(100, 'y'));\r\n }\r\n handleKeyDownHome(e) {\r\n stopEvent(e);\r\n const date = this.getCloneDate();\r\n this.changeSelectedDate(date.subtract(date.year() % 100, 'y'));\r\n }\r\n handleKeyDownEnd(e) {\r\n stopEvent(e);\r\n const date = this.getCloneDate();\r\n this.changeSelectedDate(date.add(90 - (date.year() % 100), 'y'));\r\n }\r\n handleKeyDownLeft(e) {\r\n stopEvent(e);\r\n if (!e.altKey) {\r\n this.changeSelectedDate(this.getCloneDate().subtract(10, 'y'));\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n stopEvent(e);\r\n if (e.altKey) {\r\n this.changeViewMode(ViewMode.year);\r\n }\r\n else {\r\n this.changeSelectedDate(this.getCloneDate().add(10, 'y'));\r\n }\r\n }\r\n handleKeyDownUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(30, 'y'));\r\n }\r\n handleKeyDownDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(30, 'y'));\r\n }\r\n handleKeyDownPageUp(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().subtract(100, 'y'));\r\n }\r\n handleKeyDownPageDown(e) {\r\n stopEvent(e);\r\n this.changeSelectedDate(this.getCloneDate().add(100, 'y'));\r\n }\r\n renderHeader() {\r\n const { prefixCls, props: { date }, } = this;\r\n const year = date.year() % 100;\r\n const from = date.clone().subtract(year, 'y');\r\n const to = from.clone().add(99, 'y');\r\n return (<div className={`${prefixCls}-header`}>\n <a className={`${prefixCls}-prev-year`} onClick={this.handlePrevYearClick}>\n <Icon type=\"first_page\"/>\n </a>\n <span className={`${prefixCls}-view-select`}>\n {from.year()} - {to.year()}\n </span>\n <a className={`${prefixCls}-next-year`}>\n <Icon type=\"last_page\" onClick={this.handleNextYearClick}/>\n </a>\n </div>);\r\n }\r\n renderPanelHead() {\r\n return undefined;\r\n }\r\n renderPanelBody() {\r\n const { prefixCls, props: { date, renderer = this.renderCell, isValidDate = alwaysValidDate }, } = this;\r\n const selected = date.clone().subtract(date.year() % 10, 'y');\r\n const from = date\r\n .clone()\r\n .startOf('y')\r\n .subtract(date.year() % 100, 'y');\r\n const to = from.clone().add(100, 'y');\r\n const prevYear = from.clone().subtract(10, 'y');\r\n const lastYear = to.clone().add(10, 'y');\r\n const rows = [];\r\n let cells = [];\r\n while (prevYear.isBefore(lastYear)) {\r\n const currentYear = prevYear.clone();\r\n const isDisabled = !isValidDate(currentYear, selected);\r\n const className = classNames(`${prefixCls}-cell`, {\r\n [`${prefixCls}-old`]: currentYear.isBefore(from, 'y'),\r\n [`${prefixCls}-new`]: currentYear.isSame(to, 'y'),\r\n [`${prefixCls}-selected`]: prevYear.isSame(selected, 'y'),\r\n [`${prefixCls}-disabled`]: isDisabled,\r\n });\r\n const text = `${prevYear.year()}-${prevYear\r\n .clone()\r\n .add(9, 'y')\r\n .year()}`;\r\n const decadeProps = {\r\n key: text,\r\n className,\r\n };\r\n if (!isDisabled) {\r\n decadeProps.onClick = this.handleCellClick.bind(this, currentYear);\r\n }\r\n cells.push(renderer(decadeProps, text, currentYear, selected));\r\n if (cells.length === 3) {\r\n rows.push(<tr key={text}>{cells}</tr>);\r\n cells = [];\r\n }\r\n prevYear.add(10, 'y');\r\n }\r\n return rows;\r\n }\r\n renderFooter() {\r\n return undefined;\r\n }\r\n getPanelClass() {\r\n return `${this.prefixCls}-year-panel`;\r\n }\r\n choose(date) {\r\n this.changeSelectedDate(date);\r\n this.changeViewMode(ViewMode.year);\r\n }\r\n}\r\nDecadeYearsView.displayName = 'DecadeYearView';\r\ntslib_1.__decorate([\r\n autobind\r\n], DecadeYearsView.prototype, \"handlePrevYearClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DecadeYearsView.prototype, \"handleNextYearClick\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport { createElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment, { isMoment } from 'moment';\r\nimport isPlainObject from 'lodash/isPlainObject';\r\nimport isString from 'lodash/isString';\r\nimport isNil from 'lodash/isNil';\r\nimport omit from 'lodash/omit';\r\nimport noop from 'lodash/noop';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed, isArrayLike, observable, runInAction } from 'mobx';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport TriggerField from '../trigger-field/TriggerField';\r\nimport DaysView from './DaysView';\r\nimport DateTimesView from './DateTimesView';\r\nimport WeeksView from './WeeksView';\r\nimport TimesView from './TimesView';\r\nimport MonthsView from './MonthsView';\r\nimport YearsView from './YearsView';\r\nimport DecadeYearsView from './DecadeYearsView';\r\nimport autobind from '../_util/autobind';\r\nimport { ViewMode } from './enum';\r\nimport { stopEvent } from '../_util/EventManager';\r\nimport { $l } from '../locale-context';\r\nconst viewComponents = {\r\n [ViewMode.decade]: DecadeYearsView,\r\n [ViewMode.year]: YearsView,\r\n [ViewMode.month]: MonthsView,\r\n [ViewMode.date]: DaysView,\r\n [ViewMode.dateTime]: DateTimesView,\r\n [ViewMode.week]: WeeksView,\r\n [ViewMode.time]: TimesView,\r\n};\r\nlet DatePicker = class DatePicker extends TriggerField {\r\n get value() {\r\n const { value } = this.observableProps;\r\n const { range } = this;\r\n if (isArrayLike(value)) {\r\n return value.map(item => {\r\n if (isArrayLike(item)) {\r\n return item.map(this.checkMoment, this);\r\n }\r\n return this.checkMoment(item);\r\n });\r\n }\r\n if (isArrayLike(range)) {\r\n if (isPlainObject(value)) {\r\n const [start, end] = range;\r\n return {\r\n [start]: this.checkMoment(value[start]),\r\n [end]: this.checkMoment(value[end]),\r\n };\r\n }\r\n }\r\n return this.checkMoment(value);\r\n }\r\n set value(value) {\r\n runInAction(() => {\r\n this.observableProps.value = value;\r\n });\r\n }\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('DatePicker', label ? 'value_missing' : 'value_missing_no_label', {\r\n label,\r\n }),\r\n };\r\n }\r\n get editable() {\r\n return true;\r\n }\r\n get min() {\r\n return this.getLimit('min');\r\n }\r\n get max() {\r\n return this.getLimit('max');\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['mode', 'filter', 'cellRenderer']);\r\n }\r\n getDefaultViewMode() {\r\n const { mode } = this.props;\r\n if (mode === ViewMode.decade || mode === undefined) {\r\n return ViewMode.date;\r\n }\r\n return mode;\r\n }\r\n getPopupContent() {\r\n const mode = this.getViewMode();\r\n return createElement(viewComponents[mode], {\r\n ref: node => (this.view = node),\r\n date: this.getSelectedDate(),\r\n mode: this.getDefaultViewMode(),\r\n renderer: this.getCellRenderer(mode),\r\n onSelect: this.handleSelect,\r\n onSelectedDateChange: this.handleSelectedDateChange,\r\n onViewModeChange: this.handelViewModeChange,\r\n isValidDate: this.isValidDate,\r\n });\r\n }\r\n getCellRenderer(mode) {\r\n const { cellRenderer = noop } = this.props;\r\n return cellRenderer(mode);\r\n }\r\n getTriggerIconFont() {\r\n return 'date_range';\r\n }\r\n getFieldType() {\r\n return viewComponents[this.getDefaultViewMode()].type;\r\n }\r\n getViewMode() {\r\n const { mode = this.getDefaultViewMode() } = this;\r\n return mode;\r\n }\r\n checkMoment(item) {\r\n if (!isNil(item) && !isMoment(item)) {\r\n warning(false, `DatePicker: The value of DatePicker is not moment.`);\r\n const format = this.getDateFormat();\r\n if (item instanceof Date) {\r\n item = moment(item).format(format);\r\n }\r\n return moment(item, format);\r\n }\r\n return item;\r\n }\r\n // processValue(value: any): ReactNode {\r\n // return super.processValue(this.checkMoment(value));\r\n // }\r\n getSelectedDate() {\r\n const { range, multiple, rangeTarget, rangeValue } = this;\r\n const selectedDate = this.selectedDate ||\r\n (range && !multiple && rangeTarget !== undefined && rangeValue && rangeValue[rangeTarget]) ||\r\n (!multiple && this.getValue());\r\n if (isMoment(selectedDate) && selectedDate.isValid()) {\r\n return selectedDate.clone();\r\n }\r\n return this.getValidDate(moment().startOf('d'));\r\n }\r\n getLimit(minOrMax) {\r\n const limit = this.getProp(minOrMax);\r\n if (limit !== undefined) {\r\n const { record } = this;\r\n if (record && isString(limit) && record.getField(limit)) {\r\n return record.get(limit);\r\n }\r\n return this.getLimitWithType(moment(limit), minOrMax);\r\n }\r\n }\r\n getLimitWithType(limit, minOrMax) {\r\n if (minOrMax === 'min') {\r\n return limit.startOf('d');\r\n }\r\n return limit.endOf('d');\r\n }\r\n getPopupStyleFromAlign() {\r\n return undefined;\r\n }\r\n handleSelectedDateChange(selectedDate, mode) {\r\n if (this.isUnderRange(selectedDate, mode)) {\r\n this.changeSelectedDate(selectedDate);\r\n }\r\n }\r\n handelViewModeChange(mode) {\r\n runInAction(() => {\r\n this.mode = mode;\r\n });\r\n }\r\n handlePopupAnimateAppear() { }\r\n handlePopupAnimateEnd(key, exists) {\r\n if (!exists && key === 'align') {\r\n runInAction(() => {\r\n this.selectedDate = undefined;\r\n this.mode = undefined;\r\n });\r\n }\r\n }\r\n handleSelect(date) {\r\n if (this.multiple && this.isSelected(date)) {\r\n this.unChoose(date);\r\n }\r\n else {\r\n this.choose(date);\r\n }\r\n }\r\n handleKeyDown(e) {\r\n if (!this.isDisabled() && !this.isReadOnly()) {\r\n const el = this.popup ? this.view || this : this;\r\n switch (e.keyCode) {\r\n case KeyCode.RIGHT:\r\n el.handleKeyDownRight(e);\r\n break;\r\n case KeyCode.LEFT:\r\n el.handleKeyDownLeft(e);\r\n break;\r\n case KeyCode.DOWN:\r\n el.handleKeyDownDown(e);\r\n break;\r\n case KeyCode.UP:\r\n el.handleKeyDownUp(e);\r\n break;\r\n case KeyCode.END:\r\n el.handleKeyDownEnd(e);\r\n break;\r\n case KeyCode.HOME:\r\n el.handleKeyDownHome(e);\r\n break;\r\n case KeyCode.PAGE_UP:\r\n el.handleKeyDownPageUp(e);\r\n break;\r\n case KeyCode.PAGE_DOWN:\r\n el.handleKeyDownPageDown(e);\r\n break;\r\n case KeyCode.ENTER:\r\n el.handleKeyDownEnter(e);\r\n break;\r\n case KeyCode.TAB:\r\n this.handleKeyDownTab();\r\n break;\r\n case KeyCode.ESC:\r\n this.handleKeyDownEsc(e);\r\n break;\r\n case KeyCode.SPACE:\r\n this.handleKeyDownSpace(e);\r\n break;\r\n default:\r\n }\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n handleKeyDownHome(e) {\r\n if (!this.multiple && !this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().startOf('M'));\r\n }\r\n }\r\n handleKeyDownEnd(e) {\r\n if (!this.multiple && !this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().endOf('M'));\r\n }\r\n }\r\n handleKeyDownLeft(e) {\r\n if (!this.multiple && !this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().subtract(1, 'd'));\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n if (!this.multiple && !this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().add(1, 'd'));\r\n }\r\n }\r\n handleKeyDownUp(e) {\r\n if (!this.multiple && !this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().subtract(1, 'w'));\r\n }\r\n }\r\n handleKeyDownDown(e) {\r\n if (this.multiple) {\r\n this.expand();\r\n }\r\n else if (!this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().add(1, 'w'));\r\n }\r\n }\r\n handleKeyDownPageUp(e) {\r\n if (!this.multiple && !this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().subtract(1, e.altKey ? 'y' : 'M'));\r\n }\r\n }\r\n handleKeyDownPageDown(e) {\r\n if (!this.multiple && !this.editable) {\r\n stopEvent(e);\r\n this.choose(this.getSelectedDate().add(1, e.altKey ? 'y' : 'M'));\r\n }\r\n }\r\n handleKeyDownEnter(_e) {\r\n if (!this.multiple && !this.editable) {\r\n this.choose(this.getSelectedDate());\r\n }\r\n }\r\n handleKeyDownEsc(e) {\r\n if (this.popup) {\r\n e.preventDefault();\r\n this.collapse();\r\n }\r\n }\r\n handleKeyDownTab() {\r\n // this.collapse();\r\n }\r\n handleKeyDownSpace(e) {\r\n e.preventDefault();\r\n if (!this.popup) {\r\n this.expand();\r\n }\r\n }\r\n handleEnterDown(e) {\r\n super.handleEnterDown(e);\r\n if (this.multiple && this.range) {\r\n this.beginRange();\r\n }\r\n }\r\n syncValueOnBlur(value) {\r\n if (value) {\r\n if (!this.range) {\r\n this.addValue(this.checkMoment(value));\r\n }\r\n }\r\n else if (!this.multiple) {\r\n this.setValue(this.emptyValue);\r\n }\r\n }\r\n getValueKey(v) {\r\n if (isArrayLike(v)) {\r\n return v.map(this.getValueKey, this).join(',');\r\n }\r\n if (isMoment(v)) {\r\n return v.format();\r\n }\r\n return v;\r\n }\r\n changeSelectedDate(selectedDate) {\r\n this.selectedDate = this.getValidDate(selectedDate);\r\n }\r\n isSelected(date) {\r\n return this.getValues().some(value => date.isSame(value));\r\n }\r\n unChoose(date) {\r\n this.removeValue(date, -1);\r\n }\r\n choose(date) {\r\n date = this.getValidDate(date);\r\n this.prepareSetValue(date);\r\n this.changeSelectedDate(date);\r\n if (this.range ? this.rangeTarget === 1 : !this.multiple) {\r\n this.collapse();\r\n }\r\n if (this.range && this.rangeTarget === 0 && this.popup) {\r\n this.setRangeTarget(1);\r\n }\r\n }\r\n setRangeTarget(target) {\r\n if (target !== undefined && target !== this.rangeTarget) {\r\n this.expand();\r\n }\r\n this.selectedDate = undefined;\r\n super.setRangeTarget(target);\r\n }\r\n getValidDate(date) {\r\n const { min, max } = this;\r\n if (min && date.isBefore(min)) {\r\n date = min;\r\n }\r\n else if (max && date.isAfter(max)) {\r\n date = max;\r\n }\r\n return date;\r\n }\r\n isLowerRange(m1, m2) {\r\n return m1.isBefore(m2);\r\n }\r\n isUnderRange(date, mode) {\r\n const { min, max } = this;\r\n if (min || max) {\r\n let start = (min || date).clone();\r\n let end = (max || date).clone();\r\n switch (mode || this.getViewMode()) {\r\n case ViewMode.month:\r\n start = start.startOf('M');\r\n end = end.endOf('M');\r\n break;\r\n case ViewMode.year:\r\n start = start.startOf('y');\r\n end = end.endOf('y');\r\n break;\r\n case ViewMode.decade:\r\n start = start\r\n .startOf('y')\r\n .subtract(start.year() % 10, 'y')\r\n .startOf('d');\r\n end = end\r\n .endOf('y')\r\n .add(9 - (end.year() % 10), 'y')\r\n .endOf('d');\r\n break;\r\n case ViewMode.dateTime:\r\n start = start.startOf('d');\r\n end = end.endOf('d');\r\n break;\r\n default:\r\n }\r\n return date.isBetween(start, end, undefined, '[]');\r\n }\r\n return true;\r\n }\r\n isValidDate(currentDate, selected) {\r\n const { filter } = this.props;\r\n const isValid = this.isUnderRange(currentDate);\r\n if (isValid && filter) {\r\n return filter(currentDate, selected);\r\n }\r\n return isValid;\r\n }\r\n getValidatorProps() {\r\n const { min, max } = this;\r\n return {\r\n ...super.getValidatorProps(),\r\n min,\r\n max,\r\n format: this.getDateFormat(),\r\n };\r\n }\r\n};\r\nDatePicker.displayName = 'DatePicker';\r\nDatePicker.propTypes = {\r\n /**\r\n * 日期格式,如 `YYYY-MM-DD HH:mm:ss`\r\n */\r\n format: PropTypes.string,\r\n /**\r\n * 显示模式date|dateTime|time|year|month|week\r\n */\r\n mode: PropTypes.string,\r\n /**\r\n * 单元格渲染\r\n */\r\n cellRenderer: PropTypes.func,\r\n /**\r\n * 日期过滤\r\n */\r\n filter: PropTypes.func,\r\n /**\r\n * 最小日期\r\n */\r\n min: PropTypes.any,\r\n /**\r\n * 最大日期\r\n */\r\n max: PropTypes.any,\r\n ...TriggerField.propTypes,\r\n};\r\nDatePicker.defaultProps = {\r\n ...TriggerField.defaultProps,\r\n suffixCls: 'calendar-picker',\r\n mode: ViewMode.date,\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], DatePicker.prototype, \"value\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DatePicker.prototype, \"defaultValidationMessages\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DatePicker.prototype, \"editable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DatePicker.prototype, \"min\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], DatePicker.prototype, \"max\", null);\r\ntslib_1.__decorate([\r\n observable\r\n], DatePicker.prototype, \"selectedDate\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], DatePicker.prototype, \"mode\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], DatePicker.prototype, \"handleSelectedDateChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DatePicker.prototype, \"handelViewModeChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DatePicker.prototype, \"handlePopupAnimateEnd\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DatePicker.prototype, \"handleSelect\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DatePicker.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DatePicker.prototype, \"changeSelectedDate\", null);\r\ntslib_1.__decorate([\r\n action\r\n], DatePicker.prototype, \"setRangeTarget\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DatePicker.prototype, \"isUnderRange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], DatePicker.prototype, \"isValidDate\", null);\r\nDatePicker = tslib_1.__decorate([\r\n observer\r\n], DatePicker);\r\nexport default DatePicker;\r\n","import DatePicker from '../date-picker/DatePicker';\r\nimport { ViewMode } from '../date-picker/enum';\r\nexport default class DateTimePicker extends DatePicker {\r\n getLimitWithType(limit, _minOrMax) {\r\n return limit;\r\n }\r\n}\r\nDateTimePicker.displayName = 'DateTimePicker';\r\nDateTimePicker.defaultProps = {\r\n ...DatePicker.defaultProps,\r\n mode: ViewMode.dateTime,\r\n};\r\n","import DatePicker from '../date-picker/DatePicker';\r\nimport { ViewMode } from '../date-picker/enum';\r\nexport default class WeekPicker extends DatePicker {\r\n}\r\nWeekPicker.displayName = 'WeekPicker';\r\nWeekPicker.defaultProps = {\r\n ...DatePicker.defaultProps,\r\n mode: ViewMode.week,\r\n};\r\n","import DatePicker from '../date-picker/DatePicker';\r\nimport { ViewMode } from '../date-picker/enum';\r\nexport default class MonthPicker extends DatePicker {\r\n}\r\nMonthPicker.displayName = 'MonthPicker';\r\nMonthPicker.defaultProps = {\r\n ...DatePicker.defaultProps,\r\n mode: ViewMode.month,\r\n};\r\n","import DatePicker from '../date-picker/DatePicker';\r\nimport { ViewMode } from '../date-picker/enum';\r\nexport default class YearPicker extends DatePicker {\r\n}\r\nYearPicker.displayName = 'YearPicker';\r\nYearPicker.defaultProps = {\r\n ...DatePicker.defaultProps,\r\n mode: ViewMode.year,\r\n};\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport PropTypes from 'prop-types';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport ObserverTextField from '../text-field/TextField';\r\nimport Form from '../form/Form';\r\nimport localeContext from '../locale-context';\r\nlet IntlList = class IntlList extends Component {\r\n renderOptions() {\r\n const { name, lang } = this.props;\r\n const { supports } = localeContext;\r\n const tlsKey = getConfig('tlsKey');\r\n return Object.keys(supports).map(key => (<ObserverTextField name={name ? `${tlsKey}.${name}.${key}` : key} autoFocus={key === lang} key={key}/>));\r\n }\r\n render() {\r\n const { record } = this.props;\r\n return <Form record={record}>{this.renderOptions()}</Form>;\r\n }\r\n};\r\nIntlList.propTypes = {\r\n record: PropTypes.object,\r\n name: PropTypes.string,\r\n lang: PropTypes.string,\r\n};\r\nIntlList = tslib_1.__decorate([\r\n observer\r\n], IntlList);\r\nexport default IntlList;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { action, observable } from 'mobx';\r\nimport { ProgressType } from 'choerodon-ui/lib/progress/enum';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { TextField } from '../text-field/TextField';\r\nimport Icon from '../icon';\r\nimport { open } from '../modal-container/ModalContainer';\r\nimport IntlList from './IntlList';\r\nimport localeContext, { $l } from '../locale-context';\r\nimport autobind from '../_util/autobind';\r\nimport { stopEvent } from '../_util/EventManager';\r\nimport Progress from '../progress';\r\nimport { Size } from '../core/enum';\r\nimport exception from '../_util/exception';\r\nimport message from '../message';\r\nimport isSame from '../_util/isSame';\r\nlet IntlField = class IntlField extends TextField {\r\n constructor() {\r\n super(...arguments);\r\n this.openModal = async () => {\r\n if (!this.modal) {\r\n const { modalProps } = this.props;\r\n const { record, lang, name, element } = this;\r\n if (record) {\r\n this.setLoading(true);\r\n try {\r\n if (element && !isSame(this.getValue(), element.value)) {\r\n this.syncValueOnBlur(element.value);\r\n }\r\n await record.tls(name);\r\n }\r\n catch (err) {\r\n message.error(exception(err));\r\n return;\r\n }\r\n finally {\r\n this.setLoading(false);\r\n }\r\n }\r\n this.storeLocales();\r\n this.modal = open({\r\n title: $l('IntlField', 'modal_title'),\r\n children: <IntlList record={record} name={name} lang={lang}/>,\r\n onClose: this.handleIntlListClose,\r\n onOk: this.handleIntlListOk,\r\n onCancel: this.handleIntlListCancel,\r\n destroyOnClose: true,\r\n ...modalProps,\r\n });\r\n }\r\n };\r\n this.handleIntlListClose = async () => {\r\n delete this.modal;\r\n this.focus();\r\n };\r\n }\r\n setLoading(loading) {\r\n this.loading = loading;\r\n }\r\n async handleIntlListOk() {\r\n const { supports } = localeContext;\r\n const languages = Object.keys(supports);\r\n const { record, name, field } = this;\r\n if (record && field) {\r\n const tlsKey = getConfig('tlsKey');\r\n return (await Promise.all(languages.map(language => {\r\n const intlField = record.getField(`${tlsKey}.${name}.${language}`);\r\n return intlField ? intlField.checkValidity() : true;\r\n }))).every(Boolean);\r\n }\r\n }\r\n async handleIntlListCancel() {\r\n const { name, record } = this;\r\n if (record) {\r\n const tlsKey = getConfig('tlsKey');\r\n record.set(`${tlsKey}.${name}`, this.locales);\r\n }\r\n }\r\n handleKeyDown(e) {\r\n if (e.keyCode === KeyCode.DOWN) {\r\n stopEvent(e);\r\n this.openModal();\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n handleBlur(e) {\r\n if (this.modal) {\r\n e.preventDefault();\r\n }\r\n super.handleBlur(e);\r\n }\r\n storeLocales() {\r\n const { name, record } = this;\r\n if (record) {\r\n const tlsKey = getConfig('tlsKey');\r\n this.locales = { ...record.get(`${tlsKey}.${name}`) };\r\n }\r\n }\r\n getSuffix() {\r\n const { suffix } = this.props;\r\n return this.wrapperSuffix(this.loading ? (<Progress size={Size.small} type={ProgressType.loading}/>) : (suffix || <Icon type=\"language\"/>), {\r\n onClick: this.isDisabled() || this.isReadOnly() ? undefined : this.openModal,\r\n });\r\n }\r\n componentWillUnmount() {\r\n if (this.modal) {\r\n this.modal.close();\r\n }\r\n }\r\n};\r\nIntlField.displayName = 'IntlField';\r\ntslib_1.__decorate([\r\n observable\r\n], IntlField.prototype, \"loading\", void 0);\r\ntslib_1.__decorate([\r\n action\r\n], IntlField.prototype, \"setLoading\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IntlField.prototype, \"handleIntlListOk\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IntlField.prototype, \"handleIntlListCancel\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IntlField.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IntlField.prototype, \"handleBlur\", null);\r\nIntlField = tslib_1.__decorate([\r\n observer\r\n], IntlField);\r\nexport default IntlField;\r\n","import * as tslib_1 from \"tslib\";\r\nimport { observer } from 'mobx-react';\r\nimport { computed } from 'mobx';\r\nimport { TextField } from '../text-field/TextField';\r\nimport { $l } from '../locale-context';\r\nimport { FieldType } from '../data-set/enum';\r\nlet UrlField = class UrlField extends TextField {\r\n constructor() {\r\n super(...arguments);\r\n this.type = 'url';\r\n }\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('UrlField', label ? 'value_missing' : 'value_missing_no_label', { label }),\r\n typeMismatch: $l('UrlField', 'type_mismatch'),\r\n };\r\n }\r\n getFieldType() {\r\n return FieldType.url;\r\n }\r\n};\r\nUrlField.displayName = 'UrlField';\r\ntslib_1.__decorate([\r\n computed\r\n], UrlField.prototype, \"defaultValidationMessages\", null);\r\nUrlField = tslib_1.__decorate([\r\n observer\r\n], UrlField);\r\nexport default UrlField;\r\n","import * as tslib_1 from \"tslib\";\r\nimport { observer } from 'mobx-react';\r\nimport { computed } from 'mobx';\r\nimport { TextField } from '../text-field/TextField';\r\nimport { $l } from '../locale-context';\r\nimport { FieldType } from '../data-set/enum';\r\nlet EmailField = class EmailField extends TextField {\r\n constructor() {\r\n super(...arguments);\r\n this.type = 'email';\r\n }\r\n getFieldType() {\r\n return FieldType.email;\r\n }\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('EmailField', label ? 'value_missing' : 'value_missing_no_label', { label }),\r\n typeMismatch: $l('EmailField', 'type_mismatch'),\r\n };\r\n }\r\n};\r\nEmailField.displayName = 'EmailField';\r\ntslib_1.__decorate([\r\n computed\r\n], EmailField.prototype, \"defaultValidationMessages\", null);\r\nEmailField = tslib_1.__decorate([\r\n observer\r\n], EmailField);\r\nexport default EmailField;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed, observable } from 'mobx';\r\nimport TriggerField from '../trigger-field/TriggerField';\r\nimport autobind from '../_util/autobind';\r\nimport EventManager from '../_util/EventManager';\r\nimport { FieldType } from '../data-set/enum';\r\nimport { $l } from '../locale-context';\r\nfunction getNodeRect(node) {\r\n return node.getBoundingClientRect();\r\n}\r\nlet ColorPicker = class ColorPicker extends TriggerField {\r\n constructor() {\r\n super(...arguments);\r\n this.eventManager = new EventManager(typeof window !== 'undefined' && document);\r\n this.HSV = {\r\n h: 0,\r\n s: 1,\r\n v: 1,\r\n a: 1,\r\n };\r\n this.saveGradientRef = node => (this.gradient = node);\r\n this.saveSelectPointerRef = node => (this.selectPointer = node);\r\n this.saveHuePointerRef = node => (this.huePointer = node);\r\n this.saveHueRef = node => (this.hue = node);\r\n this.saveOpacityRef = node => (this.opacity = node);\r\n this.saveOpacityPointerRef = node => (this.opacityPointer = node);\r\n }\r\n get defaultValidationMessages() {\r\n const label = this.getProp('label');\r\n return {\r\n valueMissing: $l('ColorPicker', label ? 'value_missing' : 'value_missing_no_label', {\r\n label,\r\n }),\r\n typeMismatch: $l('ColorPicker', 'type_mismatch'),\r\n };\r\n }\r\n componentDidUpdate() {\r\n const { popup } = this;\r\n if (popup) {\r\n const { h, s, v } = this.HSV;\r\n const { huePointer, selectPointer, hue, gradient } = this;\r\n if (huePointer && hue) {\r\n const { width } = getNodeRect(hue);\r\n this.setHuePointer((width * h) / 360, huePointer, hue, false);\r\n }\r\n if (selectPointer && gradient) {\r\n const { width, height } = getNodeRect(gradient);\r\n const left = s * width;\r\n const top = height - v * height;\r\n this.setGradientPointer(left, top, selectPointer, gradient, false);\r\n }\r\n }\r\n }\r\n syncValueOnBlur(value) {\r\n if (value[0] !== '#' && !value.startsWith('rgb') && !value.startsWith('hls')) {\r\n value = `#${value}`;\r\n }\r\n super.syncValueOnBlur(value);\r\n }\r\n getFieldType() {\r\n return FieldType.color;\r\n }\r\n getValue() {\r\n return super.getValue() || this.hueColor;\r\n }\r\n getPrefix() {\r\n const { prefixCls } = this;\r\n return (<div className={`${prefixCls}-prefix`}>\n <span className={`${prefixCls}-color`} style={{ backgroundColor: this.getValue() }}/>\n </div>);\r\n }\r\n getPopupFooter() {\r\n const { prefixCls } = this;\r\n const huePointerProps = {\r\n onMouseDown: this.handleHPMouseDown,\r\n ref: this.saveHuePointerRef,\r\n className: `${prefixCls}-popup-footer-slider-pointer`,\r\n };\r\n return (<div className={`${prefixCls}-popup-footer`}>\n <div ref={this.saveHueRef} className={`${prefixCls}-popup-footer-slider`}>\n <div onClick={this.handleHueClick} className=\"hue\"/>\n <div {...huePointerProps}/>\n </div>\n <div ref={this.saveOpacityRef} className={`${prefixCls}-popup-footer-slider opacity`}>\n <div ref={this.saveOpacityPointerRef} className={`${prefixCls}-popup-footer-slider-pointer`}/>\n </div>\n </div>);\r\n }\r\n getPopupContent() {\r\n const { prefixCls } = this;\r\n const gradientProps = {\r\n className: `${prefixCls}-popup-body-gradient`,\r\n onClick: this.handleGPClick,\r\n ref: this.saveGradientRef,\r\n };\r\n const gradientPointerProps = {\r\n onMouseDown: this.handleGPMouseDown,\r\n ref: this.saveSelectPointerRef,\r\n className: `${prefixCls}-popup-body-selector`,\r\n };\r\n return (<div className={`${prefixCls}-popup-view`}>\n <div className={`${prefixCls}-popup-body`} style={{ backgroundColor: this.getValue() }}>\n <div {...gradientProps}/>\n <div {...gradientPointerProps}/>\n </div>\n {this.getPopupFooter()}\n </div>);\r\n }\r\n setHSV(h, s, v, a) {\r\n const { HSV } = this;\r\n if (h !== undefined && h !== HSV.h) {\r\n HSV.h = h;\r\n }\r\n if (v !== undefined && v !== HSV.v) {\r\n HSV.v = v;\r\n }\r\n if (s !== undefined && s !== HSV.s) {\r\n HSV.s = s;\r\n }\r\n if (a !== undefined && a !== HSV.a) {\r\n HSV.a = a;\r\n }\r\n }\r\n setHueColor(color) {\r\n if (color !== this.hueColor) {\r\n this.hueColor = color;\r\n }\r\n }\r\n setColor(color) {\r\n if (color !== undefined && color.slice(0, 1) === '#' && color.length > 3) {\r\n const { gradient, selectPointer, hue, huePointer } = this;\r\n const { r, g, b, a } = this.hexToRGB(color);\r\n const { h, s, v } = this.rgbToHSV(r / 255, g / 255, b / 255, a);\r\n this.setHSV(h, s, v, a);\r\n const { r: hr, g: hg, b: hb, a: ha } = this.hsvToRGB(h, 1, 1, 1);\r\n const hueColor = this.rgbToHEX(hr, hg, hb, ha);\r\n this.setHueColor(hueColor);\r\n const { height, width } = getNodeRect(gradient);\r\n const left = s * width;\r\n const top = height - v * height;\r\n const { width: hueWidth } = getNodeRect(hue);\r\n const hueLeft = (h / 360) * hueWidth;\r\n this.setHuePointer(hueLeft, huePointer, hue, false);\r\n this.setGradientPointer(left, top, selectPointer, gradient, false);\r\n }\r\n }\r\n positionToHSV(left, top, width, height) {\r\n const { h, a } = this.HSV;\r\n if (width < 0) {\r\n width = 0;\r\n }\r\n const s = left / width;\r\n const v = 1 - top / height;\r\n return { h, s, v, a };\r\n }\r\n rgbToHEX(r, g, b, a) {\r\n function hex(num) {\r\n const hexNum = num.toString(16);\r\n return hexNum.length === 1 ? `0${hexNum}` : hexNum;\r\n }\r\n if (a !== 1) {\r\n return `#${hex(r)}${hex(g)}${hex(b)}${hex((a * 255) / 10)}`;\r\n }\r\n return `#${hex(r)}${hex(g)}${hex(b)}`;\r\n }\r\n hexToRGB(hex) {\r\n hex = hex.split('#')[1] || hex.split('#')[0];\r\n const length = hex.length;\r\n let results = '';\r\n const hexArray = hex.split('');\r\n if (length === 3 || length === 4) {\r\n for (let i = 0; i < length; i++) {\r\n results = `${results}${hexArray[i]}${hexArray[i]}`;\r\n }\r\n }\r\n else if (length === 5) {\r\n results = `${hex}${hexArray[length - 1]}`;\r\n }\r\n else {\r\n results = hex;\r\n }\r\n results = results.slice(0, 6);\r\n const result = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(results);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n a: 1,\r\n }\r\n : {\r\n r: 255,\r\n g: 0,\r\n b: 0,\r\n a: 1,\r\n };\r\n }\r\n rgbToHSV(r, g, b, a) {\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n const v = max;\r\n let s;\r\n let h;\r\n if (v === 0) {\r\n s = 0;\r\n }\r\n else {\r\n s = (max - min) / max;\r\n }\r\n if (max === min) {\r\n h = 0;\r\n }\r\n else {\r\n const d = r === min ? g - b : b === min ? r - g : b - r;\r\n const m = r === min ? 3 : b === min ? 1 : 5;\r\n h = 60 * (m - d / (max - min));\r\n }\r\n if (h < 0) {\r\n h += 360;\r\n }\r\n return { h, s, v, a };\r\n }\r\n hsvToRGB(h, s, v, a) {\r\n h /= 60;\r\n const h1 = Math.floor(h);\r\n const f = h - h1;\r\n const p = v * (1 - s);\r\n const q = v * (1 - f * s);\r\n const t = v * (1 - (1 - f) * s);\r\n let rgb;\r\n switch (h1) {\r\n case 0:\r\n rgb = { r: v, g: t, b: p, a };\r\n break;\r\n case 1:\r\n rgb = { r: q, g: v, b: p, a };\r\n break;\r\n case 2:\r\n rgb = { r: p, g: v, b: t, a };\r\n break;\r\n case 3:\r\n rgb = { r: p, g: q, b: v, a };\r\n break;\r\n case 4:\r\n rgb = { r: t, g: p, b: v, a };\r\n break;\r\n default:\r\n rgb = { r: v, g: p, b: q, a };\r\n break;\r\n }\r\n rgb.r = Math.floor(rgb.r * 255);\r\n rgb.g = Math.floor(rgb.g * 255);\r\n rgb.b = Math.floor(rgb.b * 255);\r\n return rgb;\r\n }\r\n setGradientPointer(x, y, pointer, wrap, isClient) {\r\n const { left: wrapX, top: wrapY, width: wrapW, height: wrapH } = getNodeRect(wrap);\r\n const { height: pointerH, width: pointerW } = getNodeRect(pointer);\r\n let left;\r\n let top;\r\n if (isClient) {\r\n left = x - wrapX < 0 ? 0 : x - wrapX > wrapW ? wrapW : x - wrapX;\r\n top = y - wrapY < 0 ? 0 : y - wrapY > wrapH ? wrapH : y - wrapY;\r\n }\r\n else {\r\n left = x;\r\n top = y;\r\n }\r\n pointer.style.left = `${left - pointerH / 2}px`;\r\n pointer.style.top = `${top - pointerW / 2}px`;\r\n return { left, top };\r\n }\r\n handleGPClick(e) {\r\n const { gradient, selectPointer, setGradientPointer } = this;\r\n if (gradient && selectPointer) {\r\n const { positionToHSV, rgbToHEX, hsvToRGB } = this;\r\n const { left, top } = setGradientPointer(e.clientX, e.clientY, selectPointer, gradient, true);\r\n const { height, width } = getNodeRect(gradient);\r\n const { h, s, v, a: opacity } = positionToHSV(left, top, width, height);\r\n this.setHSV(undefined, s, v, undefined);\r\n const { r, g, b, a } = hsvToRGB(h, s, v, opacity);\r\n const hexColor = rgbToHEX(r, g, b, a);\r\n this.prepareSetValue(hexColor);\r\n }\r\n }\r\n setHuePointer(x, pointer, wrap, isClient) {\r\n const { left: wrapX, width: wrapW } = getNodeRect(wrap);\r\n const { width: pointerW } = getNodeRect(pointer);\r\n let left;\r\n if (isClient) {\r\n left = x - wrapX < 0 ? 0 : x - wrapX > wrapW ? wrapW : x - wrapX;\r\n }\r\n else {\r\n left = x;\r\n }\r\n pointer.style.left = `${left - pointerW / 2}px`;\r\n if (left === wrapW) {\r\n return { left: 0, wrapW };\r\n }\r\n return { left, wrapW };\r\n }\r\n handleHueClick(e) {\r\n const { hue, huePointer, setHuePointer, hsvToRGB, rgbToHEX } = this;\r\n if (hue && huePointer) {\r\n const { left, wrapW } = setHuePointer(e.clientX, huePointer, hue, true);\r\n const h = Math.floor((left / wrapW) * 360);\r\n const { s, v, a: opacity } = this.HSV;\r\n this.setHSV(h, undefined, undefined, undefined);\r\n const { r, g, b, a } = hsvToRGB(h, 1, 1, 1);\r\n const { r: valueR, g: valueG, b: valueB, a: valueA } = hsvToRGB(h, s, v, opacity);\r\n const hueColor = rgbToHEX(r, g, b, a);\r\n const valueColor = rgbToHEX(valueR, valueG, valueB, valueA);\r\n this.setHueColor(hueColor);\r\n this.prepareSetValue(valueColor);\r\n }\r\n }\r\n handleGPMouseDown() {\r\n this.eventManager\r\n .addEventListener('mousemove', this.handleGPClick)\r\n .addEventListener('mouseup', this.onGPMouseUp);\r\n }\r\n onGPMouseUp() {\r\n this.eventManager\r\n .removeEventListener('mousemove', this.handleGPClick)\r\n .removeEventListener('mouseup', this.onGPMouseUp);\r\n }\r\n handleHPMouseDown() {\r\n this.eventManager\r\n .addEventListener('mousemove', this.handleHueClick)\r\n .addEventListener('mouseup', this.onHPMouseUp);\r\n }\r\n onHPMouseUp() {\r\n this.eventManager\r\n .removeEventListener('mousemove', this.handleHueClick)\r\n .removeEventListener('mouseup', this.onHPMouseUp);\r\n }\r\n handlePopupAnimateAppear() {\r\n this.setColor(this.getValue());\r\n }\r\n handlePopupAnimateEnd() { }\r\n getPopupStyleFromAlign() {\r\n return undefined;\r\n }\r\n getTriggerIconFont() {\r\n return 'palette';\r\n }\r\n};\r\nColorPicker.displayName = 'ColorPicker';\r\nColorPicker.defaultProps = {\r\n ...TriggerField.defaultProps,\r\n suffixCls: 'color-picker',\r\n clearButton: false,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], ColorPicker.prototype, \"hueColor\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], ColorPicker.prototype, \"defaultValidationMessages\", null);\r\ntslib_1.__decorate([\r\n action\r\n], ColorPicker.prototype, \"setHueColor\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"setColor\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"positionToHSV\", null);\r\ntslib_1.__decorate([\r\n action\r\n], ColorPicker.prototype, \"hexToRGB\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"setGradientPointer\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"handleGPClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"setHuePointer\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"handleHueClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"handleGPMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"onGPMouseUp\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"handleHPMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"onHPMouseUp\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColorPicker.prototype, \"handlePopupAnimateAppear\", null);\r\nColorPicker = tslib_1.__decorate([\r\n observer\r\n], ColorPicker);\r\nexport default ColorPicker;\r\n","import React, { isValidElement } from 'react';\r\nimport isString from 'lodash/isString';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport ObserverCheckBox from '../check-box/CheckBox';\r\nimport Switch from '../switch/Switch';\r\nimport ObserverRadio from '../radio/Radio';\r\nimport { FieldType, RecordStatus } from '../data-set/enum';\r\nimport ObserverSelect from '../select/Select';\r\nimport SelectBox from '../select-box/SelectBox';\r\nimport Lov from '../lov/Lov';\r\nimport ObserverNumberField from '../number-field/NumberField';\r\nimport Currency from '../currency/Currency';\r\nimport DatePicker from '../date-picker/DatePicker';\r\nimport DateTimePicker from '../date-time-picker/DateTimePicker';\r\nimport WeekPicker from '../week-picker/WeekPicker';\r\nimport MonthPicker from '../month-picker/MonthPicker';\r\nimport YearPicker from '../year-picker/YearPicker';\r\nimport ObserverTextField from '../text-field/TextField';\r\nimport { ColumnAlign, ColumnLock, TablePaginationPosition } from './enum';\r\nimport IntlField from '../intl-field/IntlField';\r\nimport UrlField from '../url-field/UrlField';\r\nimport EmailField from '../email-field/EmailField';\r\nimport ColorPicker from '../color-picker/ColorPicker';\r\nexport function getEditorByField(field) {\r\n const lookupCode = field.get('lookupCode');\r\n const lookupUrl = field.get('lookupUrl');\r\n const lovCode = field.get('lovCode');\r\n const { type, name } = field;\r\n if (lookupCode ||\r\n isString(lookupUrl) ||\r\n (lovCode && type !== FieldType.object) ||\r\n field.getOptions()) {\r\n return <ObserverSelect />;\r\n }\r\n if (lovCode) {\r\n return <Lov />;\r\n }\r\n switch (type) {\r\n case FieldType.boolean:\r\n return <ObserverCheckBox />;\r\n case FieldType.number:\r\n return <ObserverNumberField />;\r\n case FieldType.currency:\r\n return <Currency />;\r\n case FieldType.date:\r\n return <DatePicker />;\r\n case FieldType.dateTime:\r\n return <DateTimePicker />;\r\n case FieldType.week:\r\n return <WeekPicker />;\r\n case FieldType.month:\r\n return <MonthPicker />;\r\n case FieldType.year:\r\n return <YearPicker />;\r\n case FieldType.intl:\r\n return <IntlField />;\r\n case FieldType.email:\r\n return <EmailField />;\r\n case FieldType.url:\r\n return <UrlField />;\r\n case FieldType.color:\r\n return <ColorPicker />;\r\n case FieldType.string:\r\n return <ObserverTextField />;\r\n default:\r\n warning(false, `Table auto editor: No editor exists on the field<${name}>'s type<${type}>, so use the TextField as default editor`);\r\n return <ObserverTextField />;\r\n }\r\n}\r\nexport function getAlignByField(field) {\r\n if (field) {\r\n const { type } = field;\r\n switch (type) {\r\n case FieldType.number:\r\n return ColumnAlign.right;\r\n case FieldType.boolean:\r\n return ColumnAlign.center;\r\n default:\r\n }\r\n }\r\n}\r\nexport function getEditorByColumnAndRecord(column, record) {\r\n const { name, editor } = column;\r\n if (record) {\r\n let cellEditor = editor;\r\n if (typeof editor === 'function') {\r\n cellEditor = editor(record, name);\r\n }\r\n if (cellEditor === true) {\r\n const field = record.getField(name);\r\n if (field) {\r\n if (!field.get('unique') ||\r\n field.get('multiple') ||\r\n field.get('range') ||\r\n record.status === RecordStatus.add) {\r\n return getEditorByField(field);\r\n }\r\n }\r\n }\r\n if (isValidElement(cellEditor)) {\r\n return cellEditor;\r\n }\r\n }\r\n}\r\nexport function isRadio(element) {\r\n if (element) {\r\n switch (element.type) {\r\n case ObserverCheckBox:\r\n case ObserverRadio:\r\n case Switch:\r\n case SelectBox:\r\n return true;\r\n default:\r\n }\r\n }\r\n return false;\r\n}\r\nexport function findCell(tableStore, prefixCls, name, lock) {\r\n const { node, dataSet, overflowX, currentEditRecord } = tableStore;\r\n const current = currentEditRecord || dataSet.current;\r\n const tableCellPrefixCls = `${prefixCls}-cell`;\r\n if (name !== undefined && current) {\r\n const wrapperSelector = overflowX && lock ? `.${prefixCls}-fixed-${lock === true ? ColumnLock.left : lock} ` : '';\r\n const selector = `${wrapperSelector}tr[data-index=\"${current.id}\"] td[data-index=\"${name}\"] span.${tableCellPrefixCls}-inner`;\r\n return node.element.querySelector(selector);\r\n }\r\n}\r\nexport function findFirstFocusableElement(node) {\r\n if (node.children) {\r\n let found;\r\n [...node.children].some(child => {\r\n if (child.tabIndex > -1) {\r\n found = child;\r\n }\r\n else {\r\n found = findFirstFocusableElement(child);\r\n }\r\n return !!found;\r\n });\r\n return found;\r\n }\r\n}\r\nexport function findIndexedSibling(element, direction) {\r\n const sibling = direction > 0 ? element.nextElementSibling : element.previousElementSibling;\r\n if (!sibling ||\r\n ('index' in sibling.dataset &&\r\n !sibling.getAttributeNodeNS('', 'disabled') &&\r\n (!document.defaultView || document.defaultView.getComputedStyle(sibling).display !== 'none'))) {\r\n return sibling;\r\n }\r\n return findIndexedSibling(sibling, direction);\r\n}\r\nexport function isDisabledRow(record) {\r\n return record.isCached || record.status === RecordStatus.delete;\r\n}\r\nexport function getHeader(column, dataSet) {\r\n const { header, name } = column;\r\n if (typeof header === 'function') {\r\n return header(dataSet, name);\r\n }\r\n if (header !== undefined) {\r\n return header;\r\n }\r\n const field = dataSet.getField(name);\r\n if (field) {\r\n return field.get('label');\r\n }\r\n}\r\nexport function getColumnKey({ name, key }) {\r\n return key || name;\r\n}\r\nexport function getPaginationPosition(pagination) {\r\n if (pagination) {\r\n const { position } = pagination;\r\n if (position) {\r\n return position;\r\n }\r\n }\r\n return TablePaginationPosition.bottom;\r\n}\r\nexport function getHeight(el) {\r\n return el.getBoundingClientRect().height;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport { computed } from 'mobx';\r\nimport ColumnGroups from './ColumnGroups';\r\nexport default class ColumnGroup {\r\n constructor(column, parent) {\r\n this.column = column;\r\n this.parent = parent;\r\n const { children } = column;\r\n if (children && children.length > 0) {\r\n this.children = new ColumnGroups(children);\r\n }\r\n }\r\n get rowSpan() {\r\n return this.parent.deep - this.deep + 1;\r\n }\r\n get colSpan() {\r\n return this.children ? this.children.wide : 1;\r\n }\r\n get deep() {\r\n return this.children ? this.children.deep + 1 : this.hidden ? 0 : 1;\r\n }\r\n get hidden() {\r\n return this.children ? this.children.hidden : !!this.column.hidden;\r\n }\r\n get lastLeaf() {\r\n return this.children ? this.children.lastLeaf : this.column;\r\n }\r\n}\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroup.prototype, \"rowSpan\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroup.prototype, \"colSpan\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroup.prototype, \"deep\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroup.prototype, \"hidden\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroup.prototype, \"lastLeaf\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport { computed } from 'mobx';\r\nimport ColumnGroup from './ColumnGroup';\r\nexport default class ColumnGroups {\r\n constructor(columns) {\r\n this.columns = columns.map(col => new ColumnGroup(col, this));\r\n }\r\n get wide() {\r\n return this.columns.reduce((sum, { colSpan, hidden }) => (hidden ? sum : sum + colSpan), 0);\r\n }\r\n get deep() {\r\n return Math.max(...this.columns.map(({ deep }) => deep));\r\n }\r\n get hidden() {\r\n return this.columns.every(({ hidden }) => hidden);\r\n }\r\n get lastLeaf() {\r\n return this.columns[this.columns.length - 1].lastLeaf;\r\n }\r\n}\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroups.prototype, \"wide\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroups.prototype, \"deep\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroups.prototype, \"hidden\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], ColumnGroups.prototype, \"lastLeaf\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Children, isValidElement } from 'react';\r\nimport { action, computed, observable, runInAction } from 'mobx';\r\nimport isNil from 'lodash/isNil';\r\nimport isPlainObject from 'lodash/isPlainObject';\r\nimport defer from 'lodash/defer';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport { getConfig, getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport Column, { columnWidth } from './Column';\r\nimport ObserverCheckBox from '../check-box';\r\nimport ObserverRadio from '../radio';\r\nimport { DataSetSelection, RecordStatus } from '../data-set/enum';\r\nimport { ColumnAlign, ColumnLock, SelectionMode, TableEditMode, TableMode, } from './enum';\r\nimport { stopPropagation } from '../_util/EventManager';\r\nimport { getColumnKey, getHeader } from './utils';\r\nimport getReactNodeText from '../_util/getReactNodeText';\r\nimport ColumnGroups from './ColumnGroups';\r\nimport autobind from '../_util/autobind';\r\nconst SELECTION_KEY = '__selection-column__';\r\nexport const EXPAND_KEY = '__expand-column__';\r\nfunction renderSelectionBox({ record }) {\r\n const { dataSet } = record;\r\n if (dataSet) {\r\n const { selection } = dataSet;\r\n const handleChange = value => {\r\n if (value) {\r\n dataSet.select(record);\r\n }\r\n else {\r\n dataSet.unSelect(record);\r\n }\r\n };\r\n const handleClick = e => {\r\n stopPropagation(e);\r\n if (record.isSelected) {\r\n dataSet.unSelect(record);\r\n }\r\n };\r\n if (selection === DataSetSelection.multiple) {\r\n return (<ObserverCheckBox checked={record.isSelected} onChange={handleChange} onClick={stopPropagation} disabled={!record.selectable} value/>);\r\n }\r\n if (selection === DataSetSelection.single) {\r\n return (<ObserverRadio checked={record.isSelected} onChange={handleChange} onClick={handleClick} disabled={!record.selectable} value/>);\r\n }\r\n }\r\n}\r\nfunction mergeDefaultProps(columns, defaultKey = [0]) {\r\n return columns.reduce((newColumns, column) => {\r\n if (isPlainObject(column)) {\r\n const newColumn = { ...Column.defaultProps, ...column };\r\n if (isNil(getColumnKey(newColumn))) {\r\n newColumn.key = `anonymous-${defaultKey[0]++}`;\r\n }\r\n const { children } = newColumn;\r\n if (children) {\r\n newColumn.children = mergeDefaultProps(children, defaultKey);\r\n }\r\n newColumns.push(newColumn);\r\n }\r\n return newColumns;\r\n }, []);\r\n}\r\nfunction normalizeColumns(elements, parent = null, defaultKey = [0]) {\r\n const columns = [];\r\n const leftFixedColumns = [];\r\n const rightFixedColumns = [];\r\n Children.forEach(elements, element => {\r\n if (!isValidElement(element) || element.type !== Column) {\r\n return;\r\n }\r\n const { props, key } = element;\r\n const column = {\r\n ...props,\r\n };\r\n if (isNil(getColumnKey(column))) {\r\n column.key = `anonymous-${defaultKey[0]++}`;\r\n }\r\n if (parent) {\r\n column.lock = parent.lock;\r\n }\r\n column.children = normalizeColumns(column.children, column, defaultKey);\r\n if (key) {\r\n column.key = key;\r\n }\r\n if (column.lock === ColumnLock.left || column.lock === true) {\r\n leftFixedColumns.push(column);\r\n }\r\n else if (column.lock === ColumnLock.right) {\r\n rightFixedColumns.push(column);\r\n }\r\n else {\r\n columns.push(column);\r\n }\r\n });\r\n return leftFixedColumns.concat(columns, rightFixedColumns);\r\n}\r\nasync function getHeaderTexts(dataSet, columns, headers = []) {\r\n const column = columns.shift();\r\n if (column) {\r\n headers.push({ name: column.name, label: await getReactNodeText(getHeader(column, dataSet)) });\r\n }\r\n if (columns.length) {\r\n await getHeaderTexts(dataSet, columns, headers);\r\n }\r\n return headers;\r\n}\r\nexport default class TableStore {\r\n constructor(node) {\r\n this.handleSelectAllChange = action(value => {\r\n const { dataSet, filter } = this.props;\r\n if (value) {\r\n dataSet.selectAll(filter);\r\n }\r\n else {\r\n dataSet.unSelectAll();\r\n if (this.showCachedSeletion) {\r\n dataSet.clearCachedSelected();\r\n }\r\n }\r\n });\r\n runInAction(() => {\r\n this.showCachedSeletion = false;\r\n this.lockColumnsHeadRowsHeight = {};\r\n this.lockColumnsBodyRowsHeight = {};\r\n this.lockColumnsFootRowsHeight = {};\r\n this.node = node;\r\n this.expandedRows = [];\r\n });\r\n this.setProps(node.props);\r\n }\r\n get dataSet() {\r\n return this.props.dataSet;\r\n }\r\n get hidden() {\r\n return !!this.styledHidden || this.props.hidden;\r\n }\r\n get columnResizable() {\r\n if (this.currentEditRecord) {\r\n return false;\r\n }\r\n if ('columnResizable' in this.props) {\r\n return this.props.columnResizable;\r\n }\r\n if (getConfig('tableColumnResizable') === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n get pagination() {\r\n if ('pagination' in this.props) {\r\n return this.props.pagination;\r\n }\r\n return getConfig('pagination');\r\n }\r\n get rowHeight() {\r\n if ('rowHeight' in this.props) {\r\n return this.props.rowHeight;\r\n }\r\n const rowHeight = getConfig('tableRowHeight');\r\n if (typeof rowHeight !== 'undefined') {\r\n return rowHeight;\r\n }\r\n return 30;\r\n }\r\n get emptyText() {\r\n return getConfig('renderEmpty')('Table');\r\n }\r\n get highLightRow() {\r\n if ('highLightRow' in this.props) {\r\n return this.props.highLightRow;\r\n }\r\n if (getConfig('tableHighLightRow') === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n get border() {\r\n if ('border' in this.props) {\r\n return this.props.border;\r\n }\r\n if (getConfig('tableBorder') === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n get queryBar() {\r\n return this.props.queryBar || getConfig('queryBar');\r\n }\r\n get expandIcon() {\r\n return this.props.expandIcon || getConfig('tableExpandIcon');\r\n }\r\n get pristine() {\r\n return this.props.pristine;\r\n }\r\n get currentEditRecord() {\r\n return this.dataSet.find(record => record.editing === true);\r\n }\r\n set currentEditRecord(record) {\r\n runInAction(() => {\r\n const { currentEditRecord, dataSet } = this;\r\n if (currentEditRecord) {\r\n if (currentEditRecord.status === RecordStatus.add) {\r\n dataSet.remove(currentEditRecord);\r\n }\r\n else {\r\n currentEditRecord.reset();\r\n currentEditRecord.editing = false;\r\n }\r\n }\r\n if (record) {\r\n defer(action(() => (record.editing = true)));\r\n }\r\n });\r\n }\r\n get isTree() {\r\n return this.props.mode === TableMode.tree;\r\n }\r\n get editing() {\r\n return this.currentEditorName !== undefined || this.currentEditRecord !== undefined;\r\n }\r\n get hasRowBox() {\r\n const { dataSet, selectionMode } = this.props;\r\n if (dataSet) {\r\n const { selection } = dataSet;\r\n return selection && selectionMode === SelectionMode.rowbox;\r\n }\r\n return false;\r\n }\r\n get overflowX() {\r\n if (this.width) {\r\n return this.totalLeafColumnsWidth > this.width;\r\n }\r\n return false;\r\n }\r\n get overflowY() {\r\n const { bodyHeight, height } = this;\r\n return (bodyHeight !== undefined &&\r\n height !== undefined &&\r\n height < bodyHeight + (this.overflowX ? measureScrollbar() : 0));\r\n }\r\n get columns() {\r\n const { columns, children } = this.props;\r\n return observable.array(this.addExpandColumn(this.addSelectionColumn(columns ? mergeDefaultProps(columns) : normalizeColumns(children))));\r\n }\r\n get leftColumns() {\r\n return this.columns.filter(column => column.lock === ColumnLock.left || column.lock === true);\r\n }\r\n get rightColumns() {\r\n return this.columns.filter(column => column.lock === ColumnLock.right);\r\n }\r\n get columnGroups() {\r\n return new ColumnGroups(this.columns);\r\n }\r\n get groupedColumns() {\r\n return this.columnGroups.columns;\r\n }\r\n get leftGroupedColumns() {\r\n return this.groupedColumns.filter(({ column: { lock } }) => lock === ColumnLock.left || lock === true);\r\n }\r\n get rightGroupedColumns() {\r\n return this.groupedColumns.filter(({ column: { lock } }) => lock === ColumnLock.right);\r\n }\r\n get leafColumns() {\r\n return this.getLeafColumns(this.columns);\r\n }\r\n get leftLeafColumns() {\r\n return this.getLeafColumns(this.leftColumns);\r\n }\r\n get rightLeafColumns() {\r\n return this.getLeafColumns(this.rightColumns);\r\n }\r\n get leafNamedColumns() {\r\n return this.leafColumns.filter(column => !!column.name);\r\n }\r\n get totalLeafColumnsWidth() {\r\n return this.leafColumns.reduce((total, column) => total + columnWidth(column), 0);\r\n }\r\n get leftLeafColumnsWidth() {\r\n return this.leftLeafColumns.reduce((total, column) => total + columnWidth(column), 0);\r\n }\r\n get rightLeafColumnsWidth() {\r\n return this.rightLeafColumns.reduce((total, column) => total + columnWidth(column), 0);\r\n }\r\n get hasCheckFieldColumn() {\r\n const { checkField } = this.dataSet.props;\r\n return this.leafColumns.some(({ name, editor }) => !!editor && checkField === name);\r\n }\r\n get hasFooter() {\r\n return this.leafColumns.some(column => !!column.footer && column.key !== SELECTION_KEY);\r\n }\r\n get isAnyColumnsResizable() {\r\n return this.leafColumns.some(column => column.resizable === true);\r\n }\r\n get isAnyColumnsLock() {\r\n return this.columns.some(column => !!column.lock);\r\n }\r\n get isAnyColumnsLeftLock() {\r\n return this.columns.some(column => column.lock === ColumnLock.left || column.lock === true);\r\n }\r\n get isAnyColumnsRightLock() {\r\n return this.columns.some(column => column.lock === ColumnLock.right);\r\n }\r\n get data() {\r\n const { filter, pristine } = this.props;\r\n const { dataSet, isTree, showCachedSeletion } = this;\r\n let data = isTree ? dataSet.treeRecords : dataSet.records;\r\n if (typeof filter === 'function') {\r\n data = data.filter(filter);\r\n }\r\n if (pristine) {\r\n data = data.filter(record => record.status !== RecordStatus.add);\r\n }\r\n if (showCachedSeletion) {\r\n return [...dataSet.cachedSelected, ...data];\r\n }\r\n return data;\r\n }\r\n get indeterminate() {\r\n const { dataSet, showCachedSeletion } = this;\r\n if (dataSet) {\r\n const { length } = dataSet.records.filter(record => record.selectable);\r\n const selectedLength = showCachedSeletion\r\n ? dataSet.selected.length\r\n : dataSet.currentSelected.length;\r\n return !!selectedLength && selectedLength !== length;\r\n }\r\n return false;\r\n }\r\n get allChecked() {\r\n const { dataSet, showCachedSeletion } = this;\r\n if (dataSet) {\r\n const { length } = dataSet.records.filter(record => record.selectable);\r\n const selectedLength = showCachedSeletion\r\n ? dataSet.selected.length\r\n : dataSet.currentSelected.length;\r\n return !!selectedLength && selectedLength === length;\r\n }\r\n return false;\r\n }\r\n get expandIconAsCell() {\r\n const { expandedRowRenderer } = this.props;\r\n return !!expandedRowRenderer && !this.isTree;\r\n }\r\n get expandIconColumnIndex() {\r\n const { expandIconAsCell, props: { expandIconColumnIndex = 0 }, } = this;\r\n if (expandIconAsCell) {\r\n return 0;\r\n }\r\n if (this.hasRowBox) {\r\n return expandIconColumnIndex + 1;\r\n }\r\n return expandIconColumnIndex;\r\n }\r\n get inlineEdit() {\r\n return this.props.editMode === TableEditMode.inline;\r\n }\r\n async getColumnHeaders() {\r\n const { leafNamedColumns, dataSet } = this;\r\n return getHeaderTexts(dataSet, leafNamedColumns.slice());\r\n }\r\n showEditor(name) {\r\n this.currentEditorName = name;\r\n }\r\n hideEditor() {\r\n this.currentEditorName = undefined;\r\n }\r\n showNextEditor(name, reserve) {\r\n if (reserve) {\r\n this.dataSet.pre();\r\n }\r\n else {\r\n this.dataSet.next();\r\n }\r\n this.showEditor(name);\r\n }\r\n setProps(props) {\r\n this.props = props;\r\n }\r\n isRowExpanded(record) {\r\n const { parent } = record;\r\n const expanded = (this.dataSet.props.expandField && record.isExpanded) ||\r\n this.expandedRows.indexOf(record.key) !== -1;\r\n return expanded && (!this.isTree || !parent || this.isRowExpanded(parent));\r\n }\r\n setRowExpanded(record, expanded) {\r\n if (this.dataSet.props.expandField) {\r\n record.isExpanded = expanded;\r\n }\r\n const index = this.expandedRows.indexOf(record.key);\r\n if (expanded) {\r\n if (index === -1) {\r\n this.expandedRows.push(record.key);\r\n }\r\n }\r\n else if (index !== -1) {\r\n this.expandedRows.splice(index, 1);\r\n }\r\n const { onExpand } = this.props;\r\n if (onExpand) {\r\n onExpand(expanded, record);\r\n }\r\n }\r\n isRowHover(record) {\r\n return this.hoverRow === record;\r\n }\r\n setRowHover(record, hover) {\r\n this.hoverRow = hover ? record : undefined;\r\n }\r\n expandAll() {\r\n this.dataSet.records.forEach(record => this.setRowExpanded(record, true));\r\n }\r\n collapseAll() {\r\n this.dataSet.records.forEach(record => this.setRowExpanded(record, false));\r\n }\r\n getLeafColumns(columns) {\r\n const leafColumns = [];\r\n columns.forEach(column => {\r\n if (!column.children || column.children.length === 0) {\r\n leafColumns.push(column);\r\n }\r\n else {\r\n leafColumns.push(...this.getLeafColumns(column.children));\r\n }\r\n });\r\n return leafColumns;\r\n }\r\n addExpandColumn(columns) {\r\n if (this.expandIconAsCell) {\r\n columns.unshift({\r\n key: EXPAND_KEY,\r\n resizable: false,\r\n align: ColumnAlign.center,\r\n width: 50,\r\n lock: true,\r\n });\r\n }\r\n return columns;\r\n }\r\n multipleSelectionRenderer() {\r\n return (<ObserverCheckBox checked={this.allChecked} indeterminate={this.indeterminate} onChange={this.handleSelectAllChange} value/>);\r\n }\r\n addSelectionColumn(columns) {\r\n if (this.hasRowBox) {\r\n const { dataSet } = this;\r\n const { suffixCls, prefixCls } = this.props;\r\n const selectionColumn = {\r\n key: SELECTION_KEY,\r\n resizable: false,\r\n className: `${getProPrefixCls(suffixCls, prefixCls)}-selection-column`,\r\n renderer: renderSelectionBox,\r\n align: ColumnAlign.center,\r\n width: 50,\r\n lock: true,\r\n };\r\n if (dataSet && dataSet.selection === DataSetSelection.multiple) {\r\n selectionColumn.header = this.multipleSelectionRenderer;\r\n selectionColumn.footer = this.multipleSelectionRenderer;\r\n }\r\n columns.unshift(selectionColumn);\r\n }\r\n return columns;\r\n }\r\n}\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"props\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"bodyHeight\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"width\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"height\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"lockColumnsBodyRowsHeight\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"lockColumnsFootRowsHeight\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"lockColumnsHeadRowsHeight\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"expandedRows\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"hoverRow\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"currentEditorName\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"styledHidden\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"dataSet\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"columnResizable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"pagination\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"rowHeight\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"emptyText\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"highLightRow\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"border\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"queryBar\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"expandIcon\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"currentEditRecord\", null);\r\ntslib_1.__decorate([\r\n observable\r\n], TableStore.prototype, \"showCachedSeletion\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"hasRowBox\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"overflowX\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"overflowY\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"columns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"leftColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"rightColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"columnGroups\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"groupedColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"leftGroupedColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"rightGroupedColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"leafColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"leftLeafColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"rightLeafColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"leafNamedColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"totalLeafColumnsWidth\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"leftLeafColumnsWidth\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"rightLeafColumnsWidth\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"hasCheckFieldColumn\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"hasFooter\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"isAnyColumnsResizable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"isAnyColumnsLock\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"isAnyColumnsLeftLock\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"isAnyColumnsRightLock\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"data\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"indeterminate\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"allChecked\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"expandIconAsCell\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"expandIconColumnIndex\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableStore.prototype, \"inlineEdit\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableStore.prototype, \"showEditor\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableStore.prototype, \"hideEditor\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableStore.prototype, \"setProps\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableStore.prototype, \"setRowExpanded\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableStore.prototype, \"setRowHover\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableStore.prototype, \"expandAll\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableStore.prototype, \"collapseAll\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableStore.prototype, \"multipleSelectionRenderer\", null);\r\n","import React from 'react';\r\nexport default React.createContext({});\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, Component, isValidElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport defaultTo from 'lodash/defaultTo';\r\nimport isString from 'lodash/isString';\r\nimport classes from 'component-classes';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport { minColumnWidth } from './Column';\r\nimport TableContext from './TableContext';\r\nimport Icon from '../icon';\r\nimport EventManager from '../_util/EventManager';\r\nimport { getAlignByField, getColumnKey, getHeader } from './utils';\r\nimport { ColumnAlign } from './enum';\r\nimport { ShowHelp } from '../field/enum';\r\nimport Tooltip from '../tooltip';\r\nimport autobind from '../_util/autobind';\r\nlet TableHeaderCell = class TableHeaderCell extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.resizeEvent = new EventManager(typeof window !== 'undefined' && document);\r\n this.resizeBoundary = 0;\r\n }\r\n handleClick() {\r\n const { column, dataSet } = this.props;\r\n const { name } = column;\r\n if (name) {\r\n dataSet.sort(name);\r\n }\r\n }\r\n getNode(column) {\r\n const { getHeaderNode } = this.props;\r\n const headerDom = getHeaderNode();\r\n if (headerDom) {\r\n return headerDom.querySelector(`[data-index=\"${getColumnKey(column)}\"]`);\r\n }\r\n }\r\n setResizeColumn(column) {\r\n this.resizeColumn = column;\r\n const node = this.getNode(column);\r\n if (node) {\r\n this.resizeBoundary = node.getBoundingClientRect().left;\r\n }\r\n }\r\n handleLeftResize(e) {\r\n const { prevColumn } = this.props;\r\n this.setResizeColumn(prevColumn);\r\n this.resizeStart(e);\r\n }\r\n handleRightResize(e) {\r\n const { resizeColumn } = this.props;\r\n this.setResizeColumn(resizeColumn);\r\n this.resizeStart(e);\r\n }\r\n resizeStart(e) {\r\n const { prefixCls } = this.props;\r\n const { tableStore: { node: { element }, }, } = this.context;\r\n classes(element).add(`${prefixCls}-resizing`);\r\n delete this.resizePosition;\r\n this.setSplitLinePosition(e.pageX);\r\n this.resizeEvent\r\n .addEventListener('mousemove', this.resize)\r\n .addEventListener('mouseup', this.resizeEnd);\r\n }\r\n resize(e) {\r\n const column = this.resizeColumn;\r\n const limit = this.resizeBoundary + minColumnWidth(column);\r\n let left = e.pageX;\r\n if (left < limit) {\r\n left = limit;\r\n }\r\n this.resizePosition = this.setSplitLinePosition(left);\r\n }\r\n resizeEnd() {\r\n const { prefixCls } = this.props;\r\n const { tableStore: { node: { element }, }, } = this.context;\r\n classes(element).remove(`${prefixCls}-resizing`);\r\n this.resizeEvent.removeEventListener('mousemove').removeEventListener('mouseup');\r\n const column = this.resizeColumn;\r\n if (this.resizePosition && column) {\r\n const newWidth = Math.max(this.resizePosition - this.resizeBoundary, minColumnWidth(column));\r\n if (newWidth !== column.width) {\r\n set(column, 'width', newWidth);\r\n }\r\n }\r\n }\r\n setSplitLinePosition(left) {\r\n const { tableStore: { node: { resizeLine }, }, } = this.context;\r\n const { left: rectLeft, width } = resizeLine.offsetParent.getBoundingClientRect();\r\n left -= rectLeft;\r\n if (left < 0) {\r\n left = 0;\r\n }\r\n else if (left >= width) {\r\n left = width - 1;\r\n }\r\n resizeLine.style.left = pxToRem(left) || null;\r\n return left + rectLeft;\r\n }\r\n renderResizer() {\r\n const { prevColumn, column, prefixCls } = this.props;\r\n const resizerPrefixCls = `${prefixCls}-resizer`;\r\n const pre = prevColumn && prevColumn.resizable && (<div key=\"pre\" className={`${resizerPrefixCls} ${resizerPrefixCls}-left`} onMouseDown={this.handleLeftResize}/>);\r\n const next = column.resizable && (<div key=\"next\" className={`${resizerPrefixCls} ${resizerPrefixCls}-right`} onMouseDown={this.handleRightResize}/>);\r\n return [pre, next];\r\n }\r\n render() {\r\n const { column, prefixCls, dataSet, rowSpan, colSpan } = this.props;\r\n const { tableStore: { rowHeight, columnResizable }, } = this.context;\r\n const sortPrefixCls = `${prefixCls}-sort`;\r\n const { headerClassName, headerStyle = {}, sortable, name, align, help, showHelp, children, command, } = column;\r\n const classList = [`${prefixCls}-cell`];\r\n const field = dataSet.getField(name);\r\n if (headerClassName) {\r\n classList.push(headerClassName);\r\n }\r\n const headerNode = getHeader(column, dataSet);\r\n const innerProps = {\r\n className: `${prefixCls}-cell-inner`,\r\n children: [\r\n isValidElement(headerNode) ? (cloneElement(headerNode, { key: 'text' })) : isString(headerNode) ? (<span key=\"text\">{headerNode}</span>) : (headerNode),\r\n ],\r\n };\r\n const cellStyle = {\r\n textAlign: align ||\r\n (command || (children && children.length) ? ColumnAlign.center : getAlignByField(field)),\r\n ...headerStyle,\r\n };\r\n if (rowHeight !== 'auto') {\r\n innerProps.style = {\r\n height: pxToRem(rowHeight),\r\n };\r\n }\r\n if (showHelp !== ShowHelp.none) {\r\n const fieldHelp = defaultTo(field && field.get('help'), help);\r\n if (fieldHelp) {\r\n const helpIcon = (<Tooltip title={fieldHelp} placement=\"bottom\" key=\"help\">\n <Icon type=\"help_outline\" className={`${prefixCls}-help-icon`}/>\n </Tooltip>);\r\n if (cellStyle.textAlign === ColumnAlign.right) {\r\n innerProps.children.unshift(helpIcon);\r\n }\r\n else {\r\n innerProps.children.push(helpIcon);\r\n }\r\n }\r\n }\r\n if (sortable && name) {\r\n if (field) {\r\n const { order } = field;\r\n if (order) {\r\n classList.push(`${sortPrefixCls}-${order}`);\r\n }\r\n }\r\n innerProps.onClick = this.handleClick;\r\n const icon = <Icon key=\"sort\" type=\"arrow_upward\" className={`${sortPrefixCls}-icon`}/>;\r\n if (cellStyle.textAlign === ColumnAlign.right) {\r\n innerProps.children.unshift(icon);\r\n }\r\n else {\r\n innerProps.children.push(icon);\r\n }\r\n }\r\n return (<th className={classList.join(' ')} style={omit(cellStyle, ['width', 'height'])} rowSpan={rowSpan} colSpan={colSpan} data-index={getColumnKey(column)}>\n <div {...innerProps}/>\n {columnResizable && this.renderResizer()}\n </th>);\r\n }\r\n componentWillUnmount() {\r\n this.resizeEvent.clear();\r\n }\r\n};\r\nTableHeaderCell.displayName = 'TableHeaderCell';\r\nTableHeaderCell.propTypes = {\r\n column: PropTypes.object.isRequired,\r\n};\r\nTableHeaderCell.contextType = TableContext;\r\ntslib_1.__decorate([\r\n autobind\r\n], TableHeaderCell.prototype, \"handleClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableHeaderCell.prototype, \"handleLeftResize\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableHeaderCell.prototype, \"handleRightResize\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableHeaderCell.prototype, \"resizeStart\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableHeaderCell.prototype, \"resize\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], TableHeaderCell.prototype, \"resizeEnd\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableHeaderCell.prototype, \"setSplitLinePosition\", null);\r\nTableHeaderCell = tslib_1.__decorate([\r\n observer\r\n], TableHeaderCell);\r\nexport default TableHeaderCell;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport classNames from 'classnames';\r\nimport { computed, get } from 'mobx';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport TableHeaderCell from './TableHeaderCell';\r\nimport TableContext from './TableContext';\r\nimport { ColumnLock } from './enum';\r\nimport { getColumnKey } from './utils';\r\nimport autobind from '../_util/autobind';\r\nlet TableHeader = class TableHeader extends Component {\r\n saveRef(node) {\r\n this.node = node;\r\n }\r\n getHeaderNode() {\r\n return this.node;\r\n }\r\n render() {\r\n const { prefixCls, lock, dataSet } = this.props;\r\n const { groupedColumns } = this;\r\n const { tableStore: { overflowY, columnResizable }, } = this.context;\r\n const rows = this.getTableHeaderRows(groupedColumns);\r\n const trs = rows.map((row, rowIndex) => {\r\n if (row.length) {\r\n let prevColumn;\r\n const tds = row.map(({ hidden, column, rowSpan, colSpan, lastLeaf }) => {\r\n if (!hidden) {\r\n const props = {\r\n key: getColumnKey(column),\r\n prefixCls,\r\n dataSet,\r\n prevColumn,\r\n column,\r\n resizeColumn: lastLeaf,\r\n getHeaderNode: this.getHeaderNode,\r\n };\r\n if (rowSpan > 1) {\r\n props.rowSpan = rowSpan;\r\n }\r\n if (colSpan > 1) {\r\n props.colSpan = colSpan;\r\n }\r\n prevColumn = lastLeaf;\r\n return <TableHeaderCell {...props}/>;\r\n }\r\n return undefined;\r\n });\r\n if (overflowY && lock !== ColumnLock.left && rowIndex === 0) {\r\n tds.push(<th key=\"fixed-column\" className={`${prefixCls}-cell`} rowSpan={rows.length}>\n &nbsp;\n </th>);\r\n }\r\n return (<tr key={String(rowIndex)} style={{ height: lock ? this.getHeaderRowStyle(rows, rowIndex) : undefined }}>\n {tds}\n </tr>);\r\n }\r\n return undefined;\r\n });\r\n const classString = classNames(`${prefixCls}-thead`, {\r\n [`${prefixCls}-column-resizable`]: columnResizable,\r\n });\r\n return (<thead ref={this.saveRef} className={classString}>\n {trs}\n </thead>);\r\n }\r\n getTableHeaderRows(columns, currentRow = 0, rows = []) {\r\n rows[currentRow] = rows[currentRow] || [];\r\n columns.forEach(column => {\r\n const { hidden, rowSpan, colSpan, children } = column;\r\n if (!hidden) {\r\n if (rowSpan && rows.length < rowSpan) {\r\n while (rows.length < rowSpan) {\r\n rows.push([]);\r\n }\r\n }\r\n if (children) {\r\n this.getTableHeaderRows(children.columns, currentRow + rowSpan, rows);\r\n }\r\n if (colSpan !== 0) {\r\n rows[currentRow].push(column);\r\n }\r\n }\r\n });\r\n return rows;\r\n }\r\n getHeaderRowStyle(rows, rowIndex) {\r\n const { tableStore: { rowHeight }, } = this.context;\r\n const height = rowHeight === 'auto' ? this.getRowHeight(rowIndex++) : rowHeight;\r\n return pxToRem(rows\r\n .slice(rowIndex)\r\n .reduce((total, r, index) => r.length\r\n ? total\r\n : total +\r\n (rowHeight === 'auto' ? this.getRowHeight(index + rowIndex) : rowHeight + 4), height));\r\n }\r\n getRowHeight(index) {\r\n const { tableStore } = this.context;\r\n return get(tableStore.lockColumnsHeadRowsHeight, index) || 0;\r\n }\r\n get groupedColumns() {\r\n const { tableStore } = this.context;\r\n const { lock } = this.props;\r\n switch (lock) {\r\n case ColumnLock.left:\r\n case true:\r\n return tableStore.leftGroupedColumns;\r\n case ColumnLock.right:\r\n return tableStore.rightGroupedColumns;\r\n default:\r\n return tableStore.groupedColumns;\r\n }\r\n }\r\n};\r\nTableHeader.displayName = 'TableHeader';\r\nTableHeader.propTypes = {\r\n prefixCls: PropTypes.string,\r\n lock: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.oneOf([ColumnLock.right, ColumnLock.left]),\r\n ]),\r\n};\r\nTableHeader.contextType = TableContext;\r\ntslib_1.__decorate([\r\n autobind\r\n], TableHeader.prototype, \"saveRef\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableHeader.prototype, \"getHeaderNode\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableHeader.prototype, \"groupedColumns\", null);\r\nTableHeader = tslib_1.__decorate([\r\n observer\r\n], TableHeader);\r\nexport default TableHeader;\r\n","export var SizeChangerPosition;\r\n(function (SizeChangerPosition) {\r\n SizeChangerPosition[\"left\"] = \"left\";\r\n SizeChangerPosition[\"right\"] = \"right\";\r\n})(SizeChangerPosition || (SizeChangerPosition = {}));\r\n","import React, { PureComponent } from 'react';\r\nimport Button from '../button/Button';\r\nimport { ButtonColor, FuncType } from '../button/enum';\r\nexport default class Pager extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.handleClick = () => {\r\n const { page, onClick } = this.props;\r\n if (onClick) {\r\n onClick(page);\r\n }\r\n };\r\n }\r\n render() {\r\n const { active, renderer, page, type, disabled, className } = this.props;\r\n return (<Button className={className} funcType={active ? FuncType.raised : FuncType.flat} onClick={this.handleClick} color={active ? ButtonColor.primary : undefined} disabled={disabled}>\n {renderer(page, type)}\n </Button>);\r\n }\r\n}\r\nPager.displayName = 'Pager';\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action, computed } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport defaultTo from 'lodash/defaultTo';\r\nimport DataSetComponent from '../data-set/DataSetComponent';\r\nimport ObserverSelect from '../select/Select';\r\nimport { $l } from '../locale-context';\r\nimport Pager from './Pager';\r\nimport Icon from '../icon';\r\nimport { SizeChangerPosition } from './enum';\r\nfunction defaultItemRender(page, type) {\r\n switch (type) {\r\n case 'first':\r\n return <Icon type=\"first_page\"/>;\r\n case 'last':\r\n return <Icon type=\"last_page\"/>;\r\n case 'prev':\r\n return <Icon type=\"navigate_before\"/>;\r\n case 'next':\r\n return <Icon type=\"navigate_next\"/>;\r\n case 'jump-prev':\r\n case 'jump-next':\r\n return '•••';\r\n default:\r\n return page;\r\n }\r\n}\r\nlet Pagination = class Pagination extends DataSetComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.handlePageSizeChange = (value) => {\r\n this.handleChange(this.page, Number(value));\r\n };\r\n this.handlePagerClick = page => {\r\n const { dataSet } = this.props;\r\n if (dataSet) {\r\n dataSet.page(page);\r\n }\r\n this.handleChange(page, this.pageSize);\r\n };\r\n }\r\n get pageSize() {\r\n const { dataSet, pageSize } = this.observableProps;\r\n if (dataSet) {\r\n return dataSet.pageSize;\r\n }\r\n return pageSize;\r\n }\r\n get page() {\r\n const { dataSet, page } = this.observableProps;\r\n if (dataSet) {\r\n return dataSet.currentPage;\r\n }\r\n return page;\r\n }\r\n get total() {\r\n const { dataSet, total } = this.observableProps;\r\n if (dataSet) {\r\n return dataSet.totalCount;\r\n }\r\n return total;\r\n }\r\n get totalPage() {\r\n const { dataSet } = this.observableProps;\r\n const { total, pageSize } = this;\r\n if (dataSet) {\r\n return dataSet.totalPage;\r\n }\r\n if (total !== undefined && pageSize !== undefined) {\r\n return Math.ceil(total / pageSize);\r\n }\r\n return 1;\r\n }\r\n getObservableProps(props, context) {\r\n return {\r\n ...super.getObservableProps(props, context),\r\n page: defaultTo(props.page, 1),\r\n pageSize: defaultTo(props.pageSize, 10),\r\n total: props.total,\r\n };\r\n }\r\n handleChange(page, pageSize) {\r\n const { dataSet, onChange } = this.props;\r\n if (this.pageSize !== pageSize) {\r\n this.observableProps.pageSize = pageSize;\r\n this.observableProps.page = 1;\r\n if (dataSet) {\r\n dataSet.pageSize = pageSize;\r\n dataSet.currentPage = 1;\r\n dataSet.query();\r\n }\r\n }\r\n else {\r\n this.observableProps.page = page;\r\n }\r\n if (onChange) {\r\n onChange(page, pageSize);\r\n }\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), [\r\n 'total',\r\n 'page',\r\n 'pageSize',\r\n 'onChange',\r\n 'pageSizeOptions',\r\n 'itemRender',\r\n 'showSizeChanger',\r\n 'showSizeChangerLabel',\r\n 'showTotal',\r\n 'showPager',\r\n 'sizeChangerPosition',\r\n 'sizeChangerOptionRenderer',\r\n ]);\r\n }\r\n getOptions() {\r\n const { pageSize } = this;\r\n const { pageSizeOptions } = this.props;\r\n const options = pageSizeOptions || [];\r\n if (options.indexOf(String(pageSize)) === -1) {\r\n options.unshift(String(pageSize));\r\n }\r\n const { Option } = ObserverSelect;\r\n return options.map(option => (<Option key={option} value={option}>\n {option}\n </Option>));\r\n }\r\n getPager(page, type, active = false, disabled) {\r\n const { prefixCls, props: { itemRender = defaultItemRender }, } = this;\r\n return (<Pager key={type === 'page' ? page : type} page={page} active={active} type={type} onClick={this.handlePagerClick} renderer={itemRender} disabled={disabled} className={`${prefixCls}-pager`}/>);\r\n }\r\n renderPagers(page) {\r\n const { totalPage } = this;\r\n const bufferSize = 2;\r\n const pagerList = [];\r\n if (totalPage <= 1 + bufferSize) {\r\n for (let i = 1; i <= totalPage; i++) {\r\n pagerList.push(this.getPager(i, 'page', page === i));\r\n }\r\n }\r\n else {\r\n let left = Math.max(1, page - bufferSize);\r\n let right = Math.min(totalPage, page + bufferSize);\r\n if (page - 1 <= bufferSize) {\r\n right = 1 + bufferSize * 2;\r\n }\r\n if (totalPage - page <= bufferSize) {\r\n left = totalPage - bufferSize * 2;\r\n }\r\n for (let i = left; i <= right; i++) {\r\n pagerList.push(this.getPager(i, 'page', page === i));\r\n }\r\n if (page - 1 >= bufferSize * 2 && page !== 1 + 2) {\r\n pagerList.unshift(this.getPager(Math.max(page - 5, 1), 'jump-prev'));\r\n }\r\n if (totalPage - page >= bufferSize * 2 && page !== totalPage - 2) {\r\n pagerList.push(this.getPager(Math.min(page + 5, totalPage), 'jump-next'));\r\n }\r\n if (left !== 1) {\r\n pagerList.unshift(this.getPager(1, 'page', page === 1));\r\n }\r\n if (totalPage > 1 && right !== totalPage) {\r\n pagerList.push(this.getPager(totalPage, 'page', page === totalPage));\r\n }\r\n }\r\n return pagerList;\r\n }\r\n renderSizeChange(pageSize) {\r\n const { showSizeChangerLabel, showSizeChanger, sizeChangerOptionRenderer } = this.props;\r\n if (showSizeChanger) {\r\n const select = (<ObserverSelect key=\"size-select\" onChange={this.handlePageSizeChange} value={String(pageSize)} clearButton={false} renderer={sizeChangerOptionRenderer} optionRenderer={sizeChangerOptionRenderer}>\n {this.getOptions()}\n </ObserverSelect>);\r\n return showSizeChangerLabel\r\n ? [<span key=\"size-info\">{$l('Pagination', 'records_per_page')}</span>, select]\r\n : select;\r\n }\r\n }\r\n renderTotal(pageSize, page, total) {\r\n const { prefixCls } = this;\r\n return (<span key=\"total\" className={`${prefixCls}-page-info`}>\n {pageSize * (page - 1) + 1} - {Math.min(pageSize * page, total)} / {total}\n </span>);\r\n }\r\n render() {\r\n const { total, pageSize, page } = this;\r\n if (total === undefined || pageSize === undefined || page === undefined) {\r\n return null;\r\n }\r\n const { totalPage, props: { children, sizeChangerPosition, showTotal, showPager }, } = this;\r\n const sizeChanger = this.renderSizeChange(pageSize);\r\n return (<nav {...this.getMergedProps()}>\n {children}\n {sizeChangerPosition === SizeChangerPosition.left && sizeChanger}\n {showTotal && this.renderTotal(pageSize, page, total)}\n {this.getPager(1, 'first', false, page === 1)}\n {this.getPager(page - 1, 'prev', false, page === 1)}\n {showPager && this.renderPagers(page)}\n {this.getPager(page + 1, 'next', false, page === totalPage)}\n {this.getPager(totalPage, 'last', false, page === totalPage)}\n {sizeChangerPosition === SizeChangerPosition.right && sizeChanger}\n </nav>);\r\n }\r\n};\r\nPagination.displayName = 'Pagination';\r\nPagination.propTypes = {\r\n total: PropTypes.number,\r\n page: PropTypes.number,\r\n pageSize: PropTypes.number,\r\n onChange: PropTypes.func,\r\n itemRender: PropTypes.func,\r\n sizeChangerPosition: PropTypes.oneOf([SizeChangerPosition.left, SizeChangerPosition.right]),\r\n sizeChangerOptionRenderer: PropTypes.func,\r\n showSizeChanger: PropTypes.bool,\r\n showSizeChangerLabel: PropTypes.bool,\r\n showTotal: PropTypes.bool,\r\n showPager: PropTypes.bool,\r\n ...DataSetComponent.propTypes,\r\n};\r\nPagination.defaultProps = {\r\n suffixCls: 'pagination',\r\n pageSizeOptions: ['10', '20', '50', '100'],\r\n sizeChangerPosition: SizeChangerPosition.left,\r\n sizeChangerOptionRenderer: ({ text }) => text,\r\n showSizeChanger: true,\r\n showSizeChangerLabel: true,\r\n showTotal: true,\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], Pagination.prototype, \"pageSize\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Pagination.prototype, \"page\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Pagination.prototype, \"total\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Pagination.prototype, \"totalPage\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Pagination.prototype, \"handleChange\", null);\r\nPagination = tslib_1.__decorate([\r\n observer\r\n], Pagination);\r\nexport default Pagination;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, Component, isValidElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { runInAction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport noop from 'lodash/noop';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport TableContext from './TableContext';\r\nimport { findCell, getColumnKey, getEditorByColumnAndRecord, isRadio } from './utils';\r\nimport { stopEvent } from '../_util/EventManager';\r\nimport { ShowHelp } from '../field/enum';\r\nimport autobind from '../_util/autobind';\r\nlet TableEditor = class TableEditor extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.editing = false;\r\n }\r\n saveRef(node) {\r\n this.editor = node;\r\n }\r\n handleEditorKeyEnterDown(e) {\r\n if (!e.isDefaultPrevented()) {\r\n this.showNextEditor(e.shiftKey);\r\n }\r\n }\r\n handleEditorKeyDown(e) {\r\n if (e.keyCode !== KeyCode.ESC || !e.isDefaultPrevented()) {\r\n const { tableStore } = this.context;\r\n switch (e.keyCode) {\r\n case KeyCode.ESC:\r\n case KeyCode.TAB: {\r\n const { prefixCls, column } = this.props;\r\n const cell = findCell(tableStore, prefixCls, getColumnKey(column));\r\n if (cell) {\r\n cell.focus();\r\n }\r\n this.hideEditor();\r\n break;\r\n }\r\n case KeyCode.PAGE_UP:\r\n case KeyCode.PAGE_DOWN:\r\n stopEvent(e);\r\n break;\r\n default:\r\n }\r\n }\r\n const { editorProps } = this;\r\n if (editorProps) {\r\n const { onKeyDown = noop } = editorProps;\r\n onKeyDown(e);\r\n }\r\n }\r\n handleEditorFocus() {\r\n const { currentEditorName, context: { tableStore }, } = this;\r\n if (!tableStore.currentEditorName && currentEditorName) {\r\n runInAction(() => {\r\n tableStore.currentEditorName = currentEditorName;\r\n });\r\n }\r\n }\r\n handleEditorBlur(e) {\r\n this.hideEditor();\r\n const { editorProps } = this;\r\n if (editorProps) {\r\n const { onBlur = noop } = editorProps;\r\n onBlur(e);\r\n }\r\n }\r\n hideEditor() {\r\n if (this.editing) {\r\n const { tableStore } = this.context;\r\n tableStore.hideEditor();\r\n }\r\n }\r\n showNextEditor(reserve) {\r\n if (this.editor) {\r\n this.editor.blur();\r\n }\r\n const { tableStore } = this.context;\r\n const { column } = this.props;\r\n tableStore.showNextEditor(column.name, reserve);\r\n }\r\n renderEditor() {\r\n const { column } = this.props;\r\n const { tableStore: { dataSet, currentEditRecord, rowHeight, pristine }, } = this.context;\r\n const record = currentEditRecord || dataSet.current;\r\n const cellEditor = getEditorByColumnAndRecord(column, record);\r\n if (!pristine && isValidElement(cellEditor) && !isRadio(cellEditor)) {\r\n this.editorProps = cellEditor.props;\r\n const { style = {}, ...otherProps } = this.editorProps;\r\n if (rowHeight !== 'auto') {\r\n style.height = pxToRem(rowHeight);\r\n }\r\n const newEditorProps = {\r\n ...otherProps,\r\n style,\r\n ref: this.saveRef,\r\n record,\r\n name: column.name,\r\n onKeyDown: this.handleEditorKeyDown,\r\n onEnterDown: this.handleEditorKeyEnterDown,\r\n onBlur: this.handleEditorBlur,\r\n tabIndex: -1,\r\n showHelp: ShowHelp.none,\r\n };\r\n return cloneElement(cellEditor, newEditorProps);\r\n }\r\n }\r\n render() {\r\n const editor = this.renderEditor();\r\n if (editor) {\r\n const { prefixCls, column, column: { lock, name }, } = this.props;\r\n const props = {\r\n className: `${prefixCls}-editor`,\r\n };\r\n const editorProps = {};\r\n const { tableStore } = this.context;\r\n if (tableStore.currentEditorName === name || tableStore.currentEditRecord) {\r\n this.currentEditorName = name;\r\n const cell = findCell(tableStore, prefixCls, getColumnKey(column), lock);\r\n if (cell) {\r\n this.editing = true;\r\n const { offsetLeft, offsetTop, offsetWidth, offsetHeight } = cell;\r\n props.style = {\r\n left: pxToRem(offsetLeft),\r\n top: pxToRem(offsetTop),\r\n };\r\n editorProps.style = {\r\n ...editor.props.style,\r\n width: pxToRem(offsetWidth),\r\n height: pxToRem(offsetHeight),\r\n };\r\n }\r\n }\r\n else if (this.editing) {\r\n this.editing = false;\r\n editorProps.onFocus = this.handleEditorFocus;\r\n }\r\n return <div {...props}>{cloneElement(editor, editorProps)}</div>;\r\n }\r\n return null;\r\n }\r\n componentDidUpdate() {\r\n const { column: { name }, } = this.props;\r\n const { tableStore } = this.context;\r\n if (this.editor && this.editing && tableStore.currentEditorName === name) {\r\n this.editor.focus();\r\n }\r\n }\r\n};\r\nTableEditor.displayName = 'TableEditor';\r\nTableEditor.propTypes = {\r\n column: PropTypes.object.isRequired,\r\n};\r\nTableEditor.contextType = TableContext;\r\ntslib_1.__decorate([\r\n autobind\r\n], TableEditor.prototype, \"saveRef\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableEditor.prototype, \"handleEditorKeyEnterDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableEditor.prototype, \"handleEditorKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableEditor.prototype, \"handleEditorFocus\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableEditor.prototype, \"handleEditorBlur\", null);\r\nTableEditor = tslib_1.__decorate([\r\n observer\r\n], TableEditor);\r\nexport default TableEditor;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classes from 'component-classes';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport TableContext from './TableContext';\r\nimport autobind from '../_util/autobind';\r\nexport default class TableCol extends PureComponent {\r\n render() {\r\n const { width, minWidth } = this.props;\r\n return (<col style={{ width: pxToRem(width), minWidth: pxToRem(minWidth) }} onTransitionEnd={this.handleTransitionEnd}/>);\r\n }\r\n componentDidMount() {\r\n const { prefixCls } = this.props;\r\n const { tableStore: { node: { element }, }, } = this.context;\r\n if (element && classes(element).has(`${prefixCls}-resizing`)) {\r\n this.fireResizeEnd();\r\n }\r\n }\r\n componentDidUpdate(prevProps) {\r\n const { width } = prevProps;\r\n if (!width || isNaN(width)) {\r\n this.fireResizeEnd();\r\n }\r\n }\r\n handleTransitionEnd() {\r\n this.fireResizeEnd();\r\n }\r\n fireResizeEnd() {\r\n const { onResizeEnd } = this.props;\r\n onResizeEnd();\r\n }\r\n}\r\nTableCol.displayName = 'TableCol';\r\nTableCol.contextType = TableContext;\r\nTableCol.propTypes = {\r\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n onResizeEnd: PropTypes.func.isRequired,\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCol.prototype, \"handleTransitionEnd\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed, get, set } from 'mobx';\r\nimport classNames from 'classnames';\r\nimport isNil from 'lodash/isNil';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport TableContext from './TableContext';\r\nimport { minColumnWidth } from './Column';\r\nimport { ColumnLock } from './enum';\r\nimport TableEditor from './TableEditor';\r\nimport TableCol from './TableCol';\r\nimport { getColumnKey } from './utils';\r\nimport autobind from '../_util/autobind';\r\nlet TableWrapper = class TableWrapper extends Component {\r\n get leafColumnsWidth() {\r\n const { tableStore } = this.context;\r\n const { lock } = this.props;\r\n switch (lock) {\r\n case ColumnLock.left:\r\n case true:\r\n return tableStore.leftLeafColumnsWidth;\r\n case ColumnLock.right:\r\n return tableStore.rightLeafColumnsWidth;\r\n default:\r\n if (tableStore.overflowX) {\r\n return tableStore.totalLeafColumnsWidth;\r\n }\r\n }\r\n return undefined;\r\n }\r\n get leafEditorColumns() {\r\n const { tableStore } = this.context;\r\n const { lock } = this.props;\r\n switch (lock) {\r\n case ColumnLock.left:\r\n case true:\r\n return tableStore.leftLeafColumns.filter(({ editor, name, hidden }) => editor && name && !hidden);\r\n case ColumnLock.right:\r\n return tableStore.rightLeafColumns.filter(({ editor, name, hidden }) => editor && name && !hidden);\r\n default:\r\n return tableStore.leafColumns.filter(({ editor, name, hidden, lock: columnLock }) => editor && name && !hidden && (!columnLock || !tableStore.overflowX));\r\n }\r\n }\r\n get leafColumns() {\r\n const { tableStore } = this.context;\r\n const { lock } = this.props;\r\n switch (lock) {\r\n case ColumnLock.left:\r\n case true:\r\n return tableStore.leftLeafColumns.filter(({ hidden }) => !hidden);\r\n case ColumnLock.right:\r\n return tableStore.rightLeafColumns.filter(({ hidden }) => !hidden);\r\n default:\r\n return tableStore.leafColumns.filter(({ hidden }) => !hidden);\r\n }\r\n }\r\n handleResizeEnd() {\r\n const { tableStore } = this.context;\r\n if (tableStore.rowHeight === 'auto') {\r\n this.syncFixedTableRowHeight();\r\n }\r\n }\r\n getCol(column, width) {\r\n if (!column.hidden) {\r\n const { prefixCls } = this.props;\r\n return (<TableCol key={getColumnKey(column)} prefixCls={prefixCls} width={width} minWidth={minColumnWidth(column)} onResizeEnd={this.handleResizeEnd}/>);\r\n }\r\n }\r\n getColGroup() {\r\n const { lock, hasHeader, hasFooter } = this.props;\r\n const { tableStore: { overflowY, overflowX }, } = this.context;\r\n let hasEmptyWidth = false;\r\n const cols = this.leafColumns.map((column, index, array) => {\r\n let width = get(column, 'width');\r\n if (!overflowX) {\r\n if (!hasEmptyWidth && index === array.length - 1) {\r\n width = undefined;\r\n }\r\n else if (isNil(width)) {\r\n hasEmptyWidth = true;\r\n }\r\n }\r\n return this.getCol(column, width);\r\n });\r\n if (overflowY && lock !== ColumnLock.left && (hasHeader || hasFooter)) {\r\n cols.push(<col key=\"fixed-column\" style={{ width: pxToRem(measureScrollbar()) }}/>);\r\n }\r\n return <colgroup>{cols}</colgroup>;\r\n }\r\n getEditors() {\r\n const { prefixCls } = this.props;\r\n return this.leafEditorColumns.map(column => (<TableEditor key={column.name} prefixCls={prefixCls} column={column}/>));\r\n }\r\n saveRef(node) {\r\n this.tableWrapper = node;\r\n }\r\n get tableWidth() {\r\n const { lock, hasBody } = this.props;\r\n const { tableStore: { overflowY, overflowX }, } = this.context;\r\n if (overflowX) {\r\n let tableWidth = this.leafColumnsWidth;\r\n if (tableWidth !== undefined && overflowY && lock !== ColumnLock.left && !hasBody) {\r\n tableWidth += measureScrollbar();\r\n }\r\n return pxToRem(tableWidth);\r\n }\r\n return '100%';\r\n }\r\n render() {\r\n const { children, lock, hasBody, prefixCls } = this.props;\r\n const { tableStore: { overflowY, height }, } = this.context;\r\n const editors = hasBody && this.getEditors();\r\n const className = classNames({\r\n [`${prefixCls}-last-row-bordered`]: hasBody && !overflowY && height !== undefined,\r\n });\r\n const table = (<table key=\"table\" ref={lock ? undefined : this.saveRef} className={className} style={{ width: this.tableWidth }}>\n {this.getColGroup()}\n {children}\n </table>);\r\n return [editors, table];\r\n }\r\n syncFixedTableRowHeight() {\r\n const { prefixCls, hasFooter, hasBody, hasHeader } = this.props;\r\n if (this.tableWrapper) {\r\n const { tableStore } = this.context;\r\n const { lockColumnsHeadRowsHeight, lockColumnsBodyRowsHeight, lockColumnsFootRowsHeight, } = tableStore;\r\n if (hasHeader) {\r\n const headRows = Array.from(this.tableWrapper.querySelectorAll('thead tr'));\r\n headRows.forEach((row, index) => set(lockColumnsHeadRowsHeight, index, row.offsetHeight));\r\n }\r\n if (hasBody) {\r\n const bodyRows = Array.from(this.tableWrapper.querySelectorAll(`.${prefixCls}-row`));\r\n bodyRows.forEach(row => set(lockColumnsBodyRowsHeight, row.dataset.index, row.offsetHeight));\r\n }\r\n if (hasFooter) {\r\n const footRows = Array.from(this.tableWrapper.querySelectorAll('tfoot tr'));\r\n footRows.forEach((row, index) => set(lockColumnsFootRowsHeight, index, row.offsetHeight));\r\n }\r\n }\r\n }\r\n};\r\nTableWrapper.contextType = TableContext;\r\nTableWrapper.propTypes = {\r\n lock: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.oneOf([ColumnLock.right, ColumnLock.left]),\r\n ]),\r\n hasBody: PropTypes.bool,\r\n hasHeader: PropTypes.bool,\r\n hasFooter: PropTypes.bool,\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], TableWrapper.prototype, \"leafColumnsWidth\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableWrapper.prototype, \"leafEditorColumns\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableWrapper.prototype, \"leafColumns\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableWrapper.prototype, \"handleResizeEnd\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableWrapper.prototype, \"saveRef\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableWrapper.prototype, \"tableWidth\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableWrapper.prototype, \"syncFixedTableRowHeight\", null);\r\nTableWrapper = tslib_1.__decorate([\r\n observer\r\n], TableWrapper);\r\nexport default TableWrapper;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { computed, isArrayLike } from 'mobx';\r\nimport isPlainObject from 'lodash/isPlainObject';\r\nimport isNil from 'lodash/isNil';\r\nimport omit from 'lodash/omit';\r\nimport { FormField } from '../field/FormField';\r\nimport autobind from '../_util/autobind';\r\nimport { BooleanValue, FieldType } from '../data-set/enum';\r\nimport ObserverCheckBox from '../check-box/CheckBox';\r\nimport { processFieldValue } from '../data-set/utils';\r\nlet Output = class Output extends FormField {\r\n get editable() {\r\n return false;\r\n }\r\n handleChange() { }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['name']);\r\n }\r\n getValueKey(value) {\r\n if (isArrayLike(value)) {\r\n return value.map(this.getValueKey, this).join(',');\r\n }\r\n return this.processValue(value);\r\n }\r\n processValue(value) {\r\n if (!isNil(value)) {\r\n const text = isPlainObject(value) ? value : super.processValue(value);\r\n const { field, lang } = this;\r\n if (field) {\r\n return processFieldValue(text, field, lang, true);\r\n }\r\n return text;\r\n }\r\n return '';\r\n }\r\n defaultRenderer({ value, text, repeat, maxTagTextLength }) {\r\n const { field } = this;\r\n if (field && field.type === FieldType.boolean) {\r\n return <ObserverCheckBox disabled checked={value === field.get(BooleanValue.trueValue)}/>;\r\n }\r\n return super.defaultRenderer({ text, repeat, maxTagTextLength });\r\n }\r\n getRenderedValue() {\r\n const { multiple, range } = this;\r\n if (multiple) {\r\n return this.renderMultipleValues(true);\r\n }\r\n if (range) {\r\n return this.renderRangeValue(true);\r\n }\r\n return this.getTextNode();\r\n }\r\n renderWrapper() {\r\n return <span {...this.getMergedProps()}>{this.getRenderedValue()}</span>;\r\n }\r\n};\r\nOutput.displayName = 'Output';\r\nOutput.defaultProps = {\r\n ...FormField.defaultProps,\r\n suffixCls: 'output',\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], Output.prototype, \"editable\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Output.prototype, \"handleChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Output.prototype, \"defaultRenderer\", null);\r\nOutput = tslib_1.__decorate([\r\n observer\r\n], Output);\r\nexport default Output;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, Component, isValidElement, } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed, isArrayLike, observable } from 'mobx';\r\nimport classNames from 'classnames';\r\nimport raf from 'raf';\r\nimport omit from 'lodash/omit';\r\nimport isString from 'lodash/isString';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport ReactResizeObserver from 'choerodon-ui/lib/_util/resizeObserver';\r\nimport Record from '../data-set/Record';\r\nimport TableContext from './TableContext';\r\nimport { findCell, findFirstFocusableElement, getAlignByField, getColumnKey, getEditorByColumnAndRecord, isDisabledRow, isRadio, } from './utils';\r\nimport { ColumnAlign, TableColumnTooltip, TableCommandType } from './enum';\r\nimport ObserverCheckBox from '../check-box/CheckBox';\r\nimport Output from '../output/Output';\r\nimport { ShowHelp } from '../field/enum';\r\nimport Button from '../button/Button';\r\nimport { ButtonColor, FuncType } from '../button/enum';\r\nimport { $l } from '../locale-context';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport { DataSetEvents, RecordStatus } from '../data-set/enum';\r\nimport { LabelLayout } from '../form/enum';\r\nimport autobind from '../_util/autobind';\r\nlet inTab = false;\r\nlet TableCell = class TableCell extends Component {\r\n get cellEditor() {\r\n const { column, record } = this.props;\r\n return getEditorByColumnAndRecord(column, record);\r\n }\r\n get cellEditorInCell() {\r\n return isRadio(this.cellEditor);\r\n }\r\n get hasEditor() {\r\n const { tableStore: { pristine }, } = this.context;\r\n return !pristine && this.cellEditor && !this.cellEditorInCell;\r\n }\r\n saveOutput(node) {\r\n this.disconnect();\r\n if (node) {\r\n this.element = node.element;\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.addEventListener(DataSetEvents.update, this.handleOutputChange);\r\n this.handleResize();\r\n }\r\n else {\r\n this.element = null;\r\n }\r\n }\r\n disconnect() {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.removeEventListener(DataSetEvents.update, this.handleOutputChange);\r\n }\r\n handleResize() {\r\n const { element } = this;\r\n const { tableStore } = this.context;\r\n if (element && !tableStore.hidden) {\r\n if (this.nextFrameActionId !== undefined) {\r\n raf.cancel(this.nextFrameActionId);\r\n }\r\n this.nextFrameActionId = raf(this.syncSize);\r\n }\r\n }\r\n handleOutputChange({ record, name }) {\r\n const { record: thisRecord, column: { name: thisName }, } = this.props;\r\n if (thisRecord && thisName) {\r\n const field = thisRecord.getField(thisName);\r\n const bind = field ? field.get('bind') : undefined;\r\n if (record === thisRecord &&\r\n (thisName === name || (isString(bind) && bind.startsWith(`${name}.`)))) {\r\n this.handleResize();\r\n }\r\n }\r\n }\r\n syncSize() {\r\n this.overflow = this.computeOverFlow();\r\n }\r\n computeOverFlow() {\r\n const { element } = this;\r\n if (element && element.textContent) {\r\n const { column: { tooltip }, } = this.props;\r\n if (tooltip === TableColumnTooltip.always) {\r\n return true;\r\n }\r\n if (tooltip === TableColumnTooltip.overflow) {\r\n const { width } = element.getBoundingClientRect();\r\n if (width !== 0) {\r\n element.style.position = 'absolute';\r\n const { width: measureWidth } = element.getBoundingClientRect();\r\n element.style.position = '';\r\n return measureWidth > width;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n handleEditorKeyDown(e) {\r\n switch (e.keyCode) {\r\n case KeyCode.TAB: {\r\n const { prefixCls, column } = this.props;\r\n const { tableStore } = this.context;\r\n const cell = findCell(tableStore, prefixCls, getColumnKey(column));\r\n if (cell) {\r\n if (cell.contains(document.activeElement)) {\r\n inTab = true;\r\n }\r\n else {\r\n const node = findFirstFocusableElement(cell);\r\n if (node) {\r\n inTab = true;\r\n node.focus();\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n handleFocus(e) {\r\n const { tableStore } = this.context;\r\n const { currentEditorName, dataSet, inlineEdit } = tableStore;\r\n const { prefixCls, record, column, column: { lock }, } = this.props;\r\n if (!currentEditorName && !isDisabledRow(record) && (!inlineEdit || record.editing)) {\r\n dataSet.current = record;\r\n this.showEditor(e.currentTarget, lock);\r\n if (!this.cellEditor || isRadio(this.cellEditor)) {\r\n const cell = findCell(tableStore, prefixCls, getColumnKey(column), lock);\r\n if (cell && !cell.contains(document.activeElement)) {\r\n const node = findFirstFocusableElement(cell);\r\n if (node && !inTab) {\r\n node.focus();\r\n }\r\n }\r\n }\r\n }\r\n inTab = false;\r\n }\r\n handleCommandEdit() {\r\n const { record } = this.props;\r\n const { tableStore } = this.context;\r\n if (tableStore.inlineEdit) {\r\n tableStore.currentEditRecord = record;\r\n }\r\n }\r\n handleCommandDelete() {\r\n const { record } = this.props;\r\n const { tableStore } = this.context;\r\n const { dataSet } = tableStore;\r\n dataSet.delete(record);\r\n }\r\n async handleCommandSave() {\r\n const { tableStore } = this.context;\r\n const { dataSet } = tableStore;\r\n if ((await dataSet.submit()) !== false) {\r\n tableStore.currentEditRecord = undefined;\r\n }\r\n }\r\n handleCommandCancel() {\r\n const { record } = this.props;\r\n const { tableStore } = this.context;\r\n if (record.status === RecordStatus.add) {\r\n const { dataSet } = tableStore;\r\n dataSet.remove(record);\r\n }\r\n else {\r\n record.reset();\r\n tableStore.currentEditRecord = undefined;\r\n }\r\n }\r\n getButtonProps(type, record) {\r\n const disabled = isDisabledRow(record);\r\n switch (type) {\r\n case TableCommandType.edit:\r\n return {\r\n icon: 'mode_edit',\r\n onClick: this.handleCommandEdit,\r\n disabled,\r\n title: $l('Table', 'edit_button'),\r\n };\r\n case TableCommandType.delete:\r\n return {\r\n icon: 'delete',\r\n onClick: this.handleCommandDelete,\r\n disabled,\r\n title: $l('Table', 'delete_button'),\r\n };\r\n default:\r\n }\r\n }\r\n renderCommand() {\r\n const { record } = this.props;\r\n const command = this.getCommand();\r\n if (record.editing) {\r\n return [\r\n <Tooltip key=\"save\" title={$l('Table', 'save_button')}>\n <Button color={ButtonColor.primary} funcType={FuncType.flat} icon=\"finished\" onClick={this.handleCommandSave}/>\n </Tooltip>,\r\n <Tooltip key=\"cancel\" title={$l('Table', 'cancel_button')}>\n <Button color={ButtonColor.primary} funcType={FuncType.flat} icon=\"cancle_a\" onClick={this.handleCommandCancel}/>\n </Tooltip>,\r\n ];\r\n }\r\n if (command) {\r\n const children = [];\r\n command.forEach(button => {\r\n let props = {};\r\n if (isArrayLike(button)) {\r\n props = button[1];\r\n button = button[0];\r\n }\r\n if (isString(button) && button in TableCommandType) {\r\n const defaultButtonProps = this.getButtonProps(button, record);\r\n if (defaultButtonProps) {\r\n const { title, ...otherProps } = defaultButtonProps;\r\n children.push(<Tooltip key={button} title={title}>\n <Button color={ButtonColor.primary} funcType={FuncType.flat} {...otherProps} {...props}/>\n </Tooltip>);\r\n }\r\n }\r\n else if (isValidElement(button)) {\r\n children.push(button);\r\n }\r\n });\r\n return children;\r\n }\r\n }\r\n renderEditor() {\r\n const { cellEditor } = this;\r\n if (isValidElement(cellEditor)) {\r\n const { tableStore: { dataSet, pristine, inlineEdit }, } = this.context;\r\n const { column: { name }, record, } = this.props;\r\n const { checkField } = dataSet.props;\r\n const newEditorProps = {\r\n ...cellEditor.props,\r\n record,\r\n name,\r\n pristine,\r\n disabled: isDisabledRow(record) || (inlineEdit && !record.editing),\r\n indeterminate: checkField && checkField === name && record.isIndeterminate,\r\n labelLayout: LabelLayout.none,\r\n };\r\n return cloneElement(cellEditor, newEditorProps);\r\n }\r\n }\r\n getCheckBox() {\r\n const { record } = this.props;\r\n const { tableStore: { dataSet }, } = this.context;\r\n const { checkField } = dataSet.props;\r\n if (checkField) {\r\n return (<ObserverCheckBox name={checkField} record={record} disabled={isDisabledRow(record)} indeterminate={record.isIndeterminate}/>);\r\n }\r\n }\r\n getCommand() {\r\n const { column: { command }, record, } = this.props;\r\n const { tableStore: { dataSet }, } = this.context;\r\n if (typeof command === 'function') {\r\n return command({ dataSet, record });\r\n }\r\n return command;\r\n }\r\n getCellRenderer(command) {\r\n const { column } = this.props;\r\n const { renderer } = column;\r\n if (command) {\r\n return this.renderCommand;\r\n }\r\n if (this.cellEditorInCell) {\r\n return this.renderEditor;\r\n }\r\n return renderer;\r\n }\r\n getInnerNode(prefixCls, command) {\r\n const { context: { tableStore: { rowHeight, expandIconAsCell, hasCheckFieldColumn, pristine }, }, props: { children }, } = this;\r\n if (expandIconAsCell && children) {\r\n return children;\r\n }\r\n const { column, record, indentSize } = this.props;\r\n const { name, tooltip } = column;\r\n const { hasEditor } = this;\r\n const innerProps = {\r\n className: `${prefixCls}-inner`,\r\n tabIndex: hasEditor && !isDisabledRow(record) ? 0 : -1,\r\n onFocus: this.handleFocus,\r\n pristine,\r\n };\r\n if (!hasEditor) {\r\n innerProps.onKeyDown = this.handleEditorKeyDown;\r\n }\r\n if (rowHeight !== 'auto') {\r\n innerProps.style = {\r\n height: pxToRem(rowHeight),\r\n };\r\n if (tooltip && tooltip !== TableColumnTooltip.none) {\r\n innerProps.ref = this.saveOutput;\r\n }\r\n }\r\n const indentText = children && (<span style={{ paddingLeft: pxToRem(indentSize * record.level) }}/>);\r\n const checkBox = children && !hasCheckFieldColumn && this.getCheckBox();\r\n const prefix = (indentText || children || checkBox) && (<span key=\"prefix\" className={`${prefixCls}-prefix`} style={innerProps.style}>\n {indentText}\n {children}\n {checkBox}\n </span>);\r\n const output = (<Output key=\"output\" {...innerProps} record={record} renderer={this.getCellRenderer(command)} name={name} disabled={isDisabledRow(record)} showHelp={ShowHelp.none}/>);\r\n const text = this.overflow ? (<Tooltip key=\"tooltip\" title={cloneElement(output, { ref: null, className: null })}>\n {output}\n </Tooltip>) : (output);\r\n return [prefix, text];\r\n }\r\n componentWillUnmount() {\r\n this.disconnect();\r\n }\r\n render() {\r\n const { column, prefixCls, record } = this.props;\r\n const { tableStore: { inlineEdit, pristine }, } = this.context;\r\n const { className, style, align, name, onCell, tooltip } = column;\r\n const command = this.getCommand();\r\n const field = name ? record.getField(name) : undefined;\r\n const cellPrefix = `${prefixCls}-cell`;\r\n const cellExternalProps = typeof onCell === 'function'\r\n ? onCell({\r\n dataSet: record.dataSet,\r\n record,\r\n column,\r\n })\r\n : {};\r\n const cellStyle = {\r\n textAlign: align || (command ? ColumnAlign.center : getAlignByField(field)),\r\n ...style,\r\n ...cellExternalProps.style,\r\n };\r\n const classString = classNames(cellPrefix, {\r\n [`${cellPrefix}-dirty`]: field && !pristine && field.dirty,\r\n [`${cellPrefix}-required`]: field && !inlineEdit && field.required,\r\n [`${cellPrefix}-editable`]: !inlineEdit && this.hasEditor,\r\n }, className, cellExternalProps.className);\r\n const td = (<td {...cellExternalProps} className={classString} style={omit(cellStyle, ['width', 'height'])} data-index={getColumnKey(column)}>\n {this.getInnerNode(cellPrefix, command)}\n </td>);\r\n return tooltip === TableColumnTooltip.overflow ? (<ReactResizeObserver onResize={this.handleResize} resizeProp=\"width\">\n {td}\n </ReactResizeObserver>) : (td);\r\n }\r\n showEditor(cell, lock) {\r\n const { column: { name }, } = this.props;\r\n const { tableStore } = this.context;\r\n const { cellEditor } = this;\r\n if (name && cellEditor && !isRadio(cellEditor)) {\r\n if (!lock) {\r\n const { node, overflowX } = tableStore;\r\n if (overflowX) {\r\n const tableBodyWrap = cell.offsetParent;\r\n if (tableBodyWrap) {\r\n const { leftLeafColumnsWidth, rightLeafColumnsWidth } = tableStore;\r\n const { offsetLeft, offsetWidth } = cell;\r\n const { scrollLeft } = tableBodyWrap;\r\n const { width } = tableBodyWrap.getBoundingClientRect();\r\n const leftSide = offsetLeft - leftLeafColumnsWidth;\r\n const rightSide = offsetLeft + offsetWidth - width + rightLeafColumnsWidth + measureScrollbar();\r\n let sl = scrollLeft;\r\n if (sl < rightSide) {\r\n sl = rightSide;\r\n }\r\n if (sl > leftSide) {\r\n sl = leftSide;\r\n }\r\n if (sl !== scrollLeft) {\r\n tableBodyWrap.scrollLeft = sl;\r\n node.handleBodyScrollLeft({\r\n target: tableBodyWrap,\r\n currentTarget: tableBodyWrap,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n tableStore.showEditor(name);\r\n }\r\n }\r\n};\r\nTableCell.displayName = 'TableCell';\r\nTableCell.propTypes = {\r\n prefixCls: PropTypes.string,\r\n column: PropTypes.object.isRequired,\r\n record: PropTypes.instanceOf(Record).isRequired,\r\n indentSize: PropTypes.number.isRequired,\r\n};\r\nTableCell.contextType = TableContext;\r\ntslib_1.__decorate([\r\n observable\r\n], TableCell.prototype, \"overflow\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], TableCell.prototype, \"cellEditor\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableCell.prototype, \"cellEditorInCell\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableCell.prototype, \"hasEditor\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], TableCell.prototype, \"saveOutput\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleResize\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleOutputChange\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], TableCell.prototype, \"syncSize\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleEditorKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleFocus\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleCommandEdit\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleCommandDelete\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleCommandSave\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"handleCommandCancel\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"renderCommand\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableCell.prototype, \"renderEditor\", null);\r\nTableCell = tslib_1.__decorate([\r\n observer\r\n], TableCell);\r\nexport default TableCell;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport shallowequal from 'lodash/isEqual';\r\nimport Icon from '../icon';\r\nimport autobind from '../_util/autobind';\r\nexport default class ExpandIcon extends Component {\r\n shouldComponentUpdate(nextProps) {\r\n return !shallowequal(nextProps, this.props);\r\n }\r\n handleClick(e) {\r\n e.stopPropagation();\r\n const { onChange } = this.props;\r\n onChange(e);\r\n }\r\n render() {\r\n const { prefixCls, expanded, expandable } = this.props;\r\n const iconPrefixCls = `${prefixCls}-expand-icon`;\r\n const classString = classNames(iconPrefixCls, {\r\n [`${iconPrefixCls}-expanded`]: expanded,\r\n [`${iconPrefixCls}-spaced`]: !expandable,\r\n });\r\n return (<Icon type=\"baseline-arrow_right\" className={classString} onClick={expandable ? this.handleClick : undefined} tabIndex={expandable ? 0 : -1}/>);\r\n }\r\n}\r\nExpandIcon.propTypes = {\r\n expandable: PropTypes.bool,\r\n expanded: PropTypes.bool,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], ExpandIcon.prototype, \"handleClick\", null);\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, Component, isValidElement, } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed, get, remove, set } from 'mobx';\r\nimport classNames from 'classnames';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport TableCell from './TableCell';\r\nimport Record from '../data-set/Record';\r\nimport TableContext from './TableContext';\r\nimport ExpandIcon from './ExpandIcon';\r\nimport { ColumnLock, SelectionMode } from './enum';\r\nimport { getColumnKey, isDisabledRow } from './utils';\r\nimport { EXPAND_KEY } from './TableStore';\r\nimport autobind from '../_util/autobind';\r\nlet TableRow = class TableRow extends Component {\r\n constructor() {\r\n super(...arguments);\r\n this.rowExternalProps = {};\r\n this.childrenRendered = false;\r\n }\r\n get expandable() {\r\n const { tableStore: { isTree, props: { expandedRowRenderer }, }, } = this.context;\r\n const { record } = this.props;\r\n return !!expandedRowRenderer || (isTree && !!record.children);\r\n }\r\n get isExpanded() {\r\n const { tableStore } = this.context;\r\n const { record } = this.props;\r\n return tableStore.isRowExpanded(record);\r\n }\r\n set isExpanded(expanded) {\r\n const { tableStore } = this.context;\r\n const { record } = this.props;\r\n tableStore.setRowExpanded(record, expanded);\r\n }\r\n get isHover() {\r\n const { tableStore } = this.context;\r\n const { record } = this.props;\r\n return tableStore.isRowHover(record);\r\n }\r\n set isHover(hover) {\r\n const { tableStore } = this.context;\r\n if (tableStore.highLightRow) {\r\n const { record } = this.props;\r\n tableStore.setRowHover(record, hover);\r\n }\r\n }\r\n saveRef(node) {\r\n if (node) {\r\n this.node = node;\r\n const { lock, record } = this.props;\r\n const { tableStore: { rowHeight, lockColumnsBodyRowsHeight }, } = this.context;\r\n if (rowHeight === 'auto' && !lock) {\r\n set(lockColumnsBodyRowsHeight, (this.rowKey = record.key), node.offsetHeight);\r\n }\r\n }\r\n }\r\n handleMouseEnter() {\r\n this.isHover = true;\r\n }\r\n handleMouseLeave() {\r\n this.isHover = false;\r\n }\r\n handleSelectionByClick(e) {\r\n this.handleSelection();\r\n this.handleClick(e);\r\n }\r\n handleSelectionByMouseDown(e) {\r\n this.handleSelection();\r\n const { onMouseDown } = this.rowExternalProps;\r\n if (typeof onMouseDown === 'function') {\r\n onMouseDown(e);\r\n }\r\n }\r\n handleSelectionByDblClick(e) {\r\n this.handleSelection();\r\n const { onDoubleClick } = this.rowExternalProps;\r\n if (typeof onDoubleClick === 'function') {\r\n onDoubleClick(e);\r\n }\r\n }\r\n handleExpandChange() {\r\n if (this.expandable) {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n }\r\n handleClickCapture(e) {\r\n const { record, record: { dataSet }, } = this.props;\r\n if (dataSet && !isDisabledRow(record)) {\r\n dataSet.current = record;\r\n }\r\n const { onClickCapture } = this.rowExternalProps;\r\n if (typeof onClickCapture === 'function') {\r\n onClickCapture(e);\r\n }\r\n }\r\n handleClick(e) {\r\n const { onClick } = this.rowExternalProps;\r\n if (typeof onClick === 'function') {\r\n onClick(e);\r\n }\r\n }\r\n getCell(column, index) {\r\n const { prefixCls, record, indentSize } = this.props;\r\n return (<TableCell key={getColumnKey(column)} prefixCls={prefixCls} column={column} record={record} indentSize={indentSize}>\n {this.hasExpandIcon(index) && this.renderExpandIcon()}\n </TableCell>);\r\n }\r\n focusRow(row) {\r\n if (row) {\r\n const { tableStore: { node, overflowY, currentEditorName }, } = this.context;\r\n const { lock, record } = this.props;\r\n if (!lock && !currentEditorName) {\r\n const { element } = node;\r\n if (element &&\r\n element.contains(document.activeElement) &&\r\n Array.from(element.querySelectorAll(`tr[data-index=\"${record.id}\"]`)).every(tr => !tr.contains(document.activeElement))) {\r\n row.focus();\r\n }\r\n }\r\n if (overflowY) {\r\n const { offsetParent } = row;\r\n if (offsetParent) {\r\n const tableBodyWrap = offsetParent.parentNode;\r\n if (tableBodyWrap) {\r\n const { offsetTop, offsetHeight } = row;\r\n const { scrollTop, offsetHeight: height } = tableBodyWrap;\r\n const bottomSide = offsetTop + offsetHeight - height + measureScrollbar();\r\n let st = scrollTop;\r\n if (st < bottomSide) {\r\n st = bottomSide;\r\n }\r\n if (st > offsetTop) {\r\n st = offsetTop + 1;\r\n }\r\n if (st !== scrollTop) {\r\n tableBodyWrap.scrollTop = st;\r\n node.handleBodyScrollTop({\r\n target: tableBodyWrap,\r\n currentTarget: tableBodyWrap,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n componentDidMount() {\r\n const { record } = this.props;\r\n if (record.isCurrent) {\r\n this.focusRow(this.node);\r\n }\r\n }\r\n componentDidUpdate() {\r\n const { record } = this.props;\r\n if (record.isCurrent) {\r\n this.focusRow(this.node);\r\n }\r\n }\r\n componentWillUnmount() {\r\n const { record } = this.props;\r\n const { tableStore } = this.context;\r\n tableStore.setRowExpanded(record, false);\r\n remove(tableStore.lockColumnsBodyRowsHeight, this.rowKey);\r\n }\r\n handleSelection() {\r\n const { record } = this.props;\r\n const { dataSet } = record;\r\n if (dataSet) {\r\n dataSet.select(record);\r\n }\r\n }\r\n hasExpandIcon(columnIndex) {\r\n const { tableStore } = this.context;\r\n const { props: { expandRowByClick, expandedRowRenderer }, expandIconColumnIndex, isTree, } = tableStore;\r\n return (!expandRowByClick && (expandedRowRenderer || isTree) && columnIndex === expandIconColumnIndex);\r\n }\r\n renderExpandIcon() {\r\n const { prefixCls, record } = this.props;\r\n const { tableStore: { expandIcon }, } = this.context;\r\n const { isExpanded: expanded, expandable, handleExpandChange } = this;\r\n if (typeof expandIcon === 'function') {\r\n return expandIcon({\r\n prefixCls,\r\n expanded,\r\n expandable,\r\n needIndentSpaced: !expandable,\r\n record,\r\n onExpand: handleExpandChange,\r\n });\r\n }\r\n return (<ExpandIcon prefixCls={prefixCls} expandable={expandable} onChange={handleExpandChange} expanded={expanded}/>);\r\n }\r\n renderExpandRow() {\r\n const { isExpanded, props: { children, columns, record, prefixCls, index }, } = this;\r\n const { tableStore } = this.context;\r\n const { props: { expandedRowRenderer, onRow }, expandIconAsCell, overflowX, } = tableStore;\r\n const expandRows = [];\r\n if (isExpanded || this.childrenRendered) {\r\n this.childrenRendered = true;\r\n if (expandedRowRenderer) {\r\n const rowExternalProps = typeof onRow === 'function'\r\n ? onRow({\r\n dataSet: record.dataSet,\r\n record,\r\n expandedRow: true,\r\n index,\r\n })\r\n : {};\r\n const classString = classNames(`${prefixCls}-expanded-row`, rowExternalProps.className);\r\n const rowProps = {\r\n key: `${record.key}-expanded-row`,\r\n className: classString,\r\n style: { ...rowExternalProps.style },\r\n };\r\n if (overflowX || !record.isCurrent) {\r\n rowProps.onMouseEnter = this.handleMouseEnter;\r\n rowProps.onMouseLeave = this.handleMouseLeave;\r\n }\r\n if (!isExpanded) {\r\n rowProps.style.display = 'none';\r\n }\r\n expandRows.push(<tr {...rowExternalProps} {...rowProps}>\n {expandIconAsCell && <td key={EXPAND_KEY}/>}\n <td key={`${EXPAND_KEY}-rest`} className={`${prefixCls}-cell`} colSpan={columns.length - (expandIconAsCell ? 1 : 0)}>\n <div className={`${prefixCls}-cell-inner`}>\n {expandedRowRenderer({ dataSet: record.dataSet, record })}\n </div>\n </td>\n </tr>);\r\n }\r\n if (isValidElement(children)) {\r\n expandRows.push(cloneElement(children, { isExpanded, key: `${record.key}-expanded-rows` }));\r\n }\r\n }\r\n return expandRows;\r\n }\r\n render() {\r\n const { prefixCls, columns, record, lock, hidden, index } = this.props;\r\n const { tableStore: { rowHeight, lockColumnsBodyRowsHeight, overflowX, highLightRow, props: { onRow, rowRenderer, selectionMode }, }, } = this.context;\r\n const { dataSet, isCurrent, key, id } = record;\r\n const rowExternalProps = {\r\n ...(typeof rowRenderer === 'function' ? rowRenderer(record, index) : {}),\r\n ...(typeof onRow === 'function'\r\n ? onRow({\r\n dataSet: dataSet,\r\n record,\r\n expandedRow: false,\r\n index,\r\n })\r\n : {}),\r\n };\r\n this.rowExternalProps = rowExternalProps;\r\n const disabled = isDisabledRow(record);\r\n const rowPrefixCls = `${prefixCls}-row`;\r\n const classString = classNames(rowPrefixCls, {\r\n [`${rowPrefixCls}-current`]: highLightRow && isCurrent,\r\n [`${rowPrefixCls}-hover`]: highLightRow && !isCurrent && this.isHover,\r\n [`${rowPrefixCls}-highlight`]: highLightRow,\r\n [`${rowPrefixCls}-disabled`]: disabled,\r\n }, rowExternalProps.className);\r\n const rowProps = {\r\n ref: this.saveRef,\r\n className: classString,\r\n style: { ...rowExternalProps.style },\r\n onClick: this.handleClick,\r\n onClickCapture: this.handleClickCapture,\r\n tabIndex: -1,\r\n disabled,\r\n 'data-index': id,\r\n };\r\n if (overflowX) {\r\n rowProps.onMouseEnter = this.handleMouseEnter;\r\n rowProps.onMouseLeave = this.handleMouseLeave;\r\n }\r\n if (hidden) {\r\n rowProps.style.display = 'none';\r\n }\r\n if (lock) {\r\n if (rowHeight === 'auto') {\r\n rowProps.style.height = pxToRem(get(lockColumnsBodyRowsHeight, key));\r\n }\r\n }\r\n if (selectionMode === SelectionMode.click) {\r\n rowProps.onClick = this.handleSelectionByClick;\r\n }\r\n else if (selectionMode === SelectionMode.dblclick) {\r\n rowProps.onDoubleClick = this.handleSelectionByDblClick;\r\n }\r\n else if (selectionMode === SelectionMode.mousedown) {\r\n rowProps.onMouseDown = this.handleSelectionByMouseDown;\r\n }\r\n return [\r\n <tr key={key} {...rowExternalProps} {...rowProps}>\n {columns.map(this.getCell)}\n </tr>,\r\n ...this.renderExpandRow(),\r\n ];\r\n }\r\n};\r\nTableRow.displayName = 'TableRow';\r\nTableRow.propTypes = {\r\n prefixCls: PropTypes.string,\r\n lock: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.oneOf([ColumnLock.right, ColumnLock.left]),\r\n ]),\r\n columns: PropTypes.array.isRequired,\r\n record: PropTypes.instanceOf(Record).isRequired,\r\n indentSize: PropTypes.number.isRequired,\r\n};\r\nTableRow.contextType = TableContext;\r\ntslib_1.__decorate([\r\n computed\r\n], TableRow.prototype, \"expandable\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableRow.prototype, \"isExpanded\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TableRow.prototype, \"isHover\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], TableRow.prototype, \"saveRef\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleMouseEnter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleMouseLeave\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleSelectionByClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleSelectionByMouseDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleSelectionByDblClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleExpandChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleClickCapture\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"handleClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableRow.prototype, \"getCell\", null);\r\ntslib_1.__decorate([\r\n action\r\n], TableRow.prototype, \"componentWillUnmount\", null);\r\nTableRow = tslib_1.__decorate([\r\n observer\r\n], TableRow);\r\nexport default TableRow;\r\n","import isFunction from 'lodash/isFunction';\r\nconst ExpandedRow = props => {\r\n const { isExpanded, children = null, columns, record, lock } = props;\r\n if (isFunction(children)) {\r\n const child = children(columns, record, isExpanded, lock);\r\n if (child) {\r\n return child;\r\n }\r\n }\r\n return children;\r\n};\r\nexport default ExpandedRow;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed } from 'mobx';\r\nimport classes from 'component-classes';\r\nimport raf from 'raf';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport ReactResizeObserver from 'choerodon-ui/lib/_util/resizeObserver';\r\nimport TableContext from './TableContext';\r\nimport TableRow from './TableRow';\r\nimport { ColumnLock } from './enum';\r\nimport ExpandedRow from './ExpandedRow';\r\nimport { DataSetStatus } from '../data-set/enum';\r\nimport autobind from '../_util/autobind';\r\nlet TableTBody = class TableTBody extends Component {\r\n get leafColumns() {\r\n const { tableStore } = this.context;\r\n const { lock } = this.props;\r\n if (lock === 'right') {\r\n return tableStore.rightLeafColumns.filter(({ hidden }) => !hidden);\r\n }\r\n if (lock) {\r\n return tableStore.leftLeafColumns.filter(({ hidden }) => !hidden);\r\n }\r\n return tableStore.leafColumns.filter(({ hidden }) => !hidden);\r\n }\r\n handleResize() {\r\n if (this.nextFrameActionId !== undefined) {\r\n raf.cancel(this.nextFrameActionId);\r\n }\r\n this.nextFrameActionId = raf(this.syncBodyHeight);\r\n }\r\n saveRef(node) {\r\n this.tableBody = node;\r\n this.handleResize();\r\n }\r\n render() {\r\n const { prefixCls, lock } = this.props;\r\n const { leafColumns } = this;\r\n const { tableStore: { data }, } = this.context;\r\n const rows = data.length\r\n ? this.getRows(data, leafColumns, true, lock)\r\n : this.getEmptyRow(leafColumns, lock);\r\n const body = (<tbody ref={lock ? undefined : this.saveRef} className={`${prefixCls}-tbody`}>\n {rows}\n </tbody>);\r\n return lock ? (body) : (<ReactResizeObserver onResize={this.handleResize} resizeProp=\"height\">\n {body}\n </ReactResizeObserver>);\r\n }\r\n componentDidUpdate() {\r\n const { lock, prefixCls } = this.props;\r\n if (!lock) {\r\n const { tableStore: { node }, } = this.context;\r\n if (classes(node.wrapper).has(`${prefixCls}-focused`) &&\r\n !node.wrapper.contains(document.activeElement)) {\r\n node.focus();\r\n }\r\n }\r\n }\r\n getRows(records, columns, expanded, lock) {\r\n return records.map((record, index) => this.getRow(columns, record, index, expanded, lock));\r\n }\r\n getEmptyRow(columns, lock) {\r\n const { tableStore: { dataSet, emptyText, width }, } = this.context;\r\n const { prefixCls } = this.props;\r\n const style = width\r\n ? {\r\n marginLeft: pxToRem(width / 2),\r\n }\r\n : {\r\n transform: 'none',\r\n display: 'inline-block',\r\n };\r\n const tdStyle = width ? {} : { textAlign: 'center' };\r\n return (<tr className={`${prefixCls}-empty-row`}>\n <td colSpan={columns.length} style={tdStyle}>\n <div style={style}>{!lock && dataSet.status === DataSetStatus.ready && emptyText}</div>\n </td>\n </tr>);\r\n }\r\n renderExpandedRows(columns, record, isExpanded, lock) {\r\n return this.getRows(record.children || [], columns, isExpanded, lock);\r\n }\r\n getRow(columns, record, index, expanded, lock) {\r\n const { prefixCls, indentSize } = this.props;\r\n const { tableStore: { isTree }, } = this.context;\r\n const children = isTree && (<ExpandedRow record={record} columns={columns} lock={lock}>\n {this.renderExpandedRows}\n </ExpandedRow>);\r\n return (<TableRow key={record.key} hidden={!expanded} lock={lock} indentSize={indentSize} prefixCls={prefixCls} columns={columns} record={record} index={index}>\n {children}\n </TableRow>);\r\n }\r\n syncBodyHeight() {\r\n const { tableStore } = this.context;\r\n if (this.tableBody && !tableStore.hidden) {\r\n tableStore.bodyHeight = this.tableBody.offsetHeight;\r\n }\r\n }\r\n};\r\nTableTBody.displayName = 'TableTBody';\r\nTableTBody.propTypes = {\r\n lock: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.oneOf([ColumnLock.right, ColumnLock.left]),\r\n ]),\r\n prefixCls: PropTypes.string,\r\n indentSize: PropTypes.number.isRequired,\r\n};\r\nTableTBody.contextType = TableContext;\r\ntslib_1.__decorate([\r\n computed\r\n], TableTBody.prototype, \"leafColumns\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableTBody.prototype, \"handleResize\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableTBody.prototype, \"saveRef\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableTBody.prototype, \"renderExpandedRows\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], TableTBody.prototype, \"syncBodyHeight\", null);\r\nTableTBody = tslib_1.__decorate([\r\n observer\r\n], TableTBody);\r\nexport default TableTBody;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport classNames from 'classnames';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport TableContext from './TableContext';\r\nimport { getAlignByField } from './utils';\r\nimport { ColumnAlign } from './enum';\r\nlet TableFooterCell = class TableFooterCell extends Component {\r\n getFooter(footer, dataSet) {\r\n switch (typeof footer) {\r\n case 'function': {\r\n const { column } = this.props;\r\n return footer(dataSet, column.name);\r\n }\r\n case 'string':\r\n return <span>{footer}</span>;\r\n default:\r\n return footer;\r\n }\r\n }\r\n render() {\r\n const { column, prefixCls, dataSet } = this.props;\r\n const { tableStore: { rowHeight }, } = this.context;\r\n const { footer, footerClassName, footerStyle = {}, align, name, command } = column;\r\n const classString = classNames(`${prefixCls}-cell`, footerClassName);\r\n const innerProps = {\r\n className: `${prefixCls}-cell-inner`,\r\n };\r\n if (rowHeight !== 'auto') {\r\n innerProps.style = {\r\n height: pxToRem(rowHeight),\r\n };\r\n }\r\n const cellStyle = {\r\n textAlign: align || (command ? ColumnAlign.center : getAlignByField(dataSet.getField(name))),\r\n ...footerStyle,\r\n };\r\n return (<th className={classString} style={omit(cellStyle, ['width', 'height'])}>\n <div {...innerProps}>{this.getFooter(footer, dataSet)}</div>\n </th>);\r\n }\r\n};\r\nTableFooterCell.displayName = 'TableFooterCell';\r\nTableFooterCell.propTypes = {\r\n column: PropTypes.object.isRequired,\r\n};\r\nTableFooterCell.contextType = TableContext;\r\nTableFooterCell = tslib_1.__decorate([\r\n observer\r\n], TableFooterCell);\r\nexport default TableFooterCell;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { computed, get } from 'mobx';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport TableContext from './TableContext';\r\nimport { ColumnLock } from './enum';\r\nimport TableFooterCell from './TableFooterCell';\r\nimport { getColumnKey } from './utils';\r\nlet TableFooter = class TableFooter extends Component {\r\n render() {\r\n const { prefixCls, lock, dataSet } = this.props;\r\n const { tableStore: { lockColumnsFootRowsHeight, overflowY, rowHeight }, } = this.context;\r\n const tds = this.leafColumns.map(column => {\r\n return (<TableFooterCell key={getColumnKey(column)} prefixCls={prefixCls} dataSet={dataSet} column={column}/>);\r\n });\r\n if (overflowY && lock !== ColumnLock.left) {\r\n tds.push(<th key=\"fixed-column\" className={`${prefixCls}-cell`}>\n &nbsp;\n </th>);\r\n }\r\n return (<tfoot className={`${prefixCls}-tfoot`}>\n <tr style={{\r\n height: lock && rowHeight === 'auto' ? pxToRem(get(lockColumnsFootRowsHeight, 0)) : undefined,\r\n }}>\n {tds}\n </tr>\n </tfoot>);\r\n }\r\n get leafColumns() {\r\n const { tableStore } = this.context;\r\n const { lock } = this.props;\r\n if (lock === 'right') {\r\n return tableStore.rightLeafColumns.filter(({ hidden }) => !hidden);\r\n }\r\n if (lock) {\r\n return tableStore.leftLeafColumns.filter(({ hidden }) => !hidden);\r\n }\r\n return tableStore.leafColumns.filter(({ hidden }) => !hidden);\r\n }\r\n};\r\nTableFooter.displayName = 'TableFooter';\r\nTableFooter.propTypes = {\r\n prefixCls: PropTypes.string,\r\n lock: PropTypes.oneOfType([\r\n PropTypes.bool,\r\n PropTypes.oneOf([ColumnLock.right, ColumnLock.left]),\r\n ]),\r\n};\r\nTableFooter.contextType = TableContext;\r\ntslib_1.__decorate([\r\n computed\r\n], TableFooter.prototype, \"leafColumns\", null);\r\nTableFooter = tslib_1.__decorate([\r\n observer\r\n], TableFooter);\r\nexport default TableFooter;\r\n","import React from 'react';\r\nexport default function TableButtons({ prefixCls, buttons, children }) {\r\n const buttonGroup = buttons.length ? (<span className={`${prefixCls}-toolbar-button-group`}>{buttons}</span>) : null;\r\n if (buttonGroup || children) {\r\n return (<div className={`${prefixCls}-toolbar`}>\n {buttonGroup}\n {children}\n </div>);\r\n }\r\n return null;\r\n}\r\n","import Modal from './Modal';\r\nimport { getKey, open } from '../modal-container/ModalContainer';\r\nimport confirm from './confirm';\r\nimport { normalizeProps } from './utils';\r\nModal.key = getKey;\r\nModal.open = open;\r\nModal.confirm = confirm;\r\nModal.info = function (props) {\r\n return confirm({\r\n type: 'info',\r\n okCancel: false,\r\n ...normalizeProps(props),\r\n });\r\n};\r\nModal.success = function (props) {\r\n return confirm({\r\n type: 'success',\r\n iconType: 'check_circle',\r\n okCancel: false,\r\n ...normalizeProps(props),\r\n });\r\n};\r\nModal.error = function (props) {\r\n return confirm({\r\n type: 'error',\r\n iconType: 'cancel',\r\n okCancel: false,\r\n ...normalizeProps(props),\r\n });\r\n};\r\nModal.warning = function (props) {\r\n return confirm({\r\n type: 'warning',\r\n iconType: 'warning',\r\n okCancel: false,\r\n ...normalizeProps(props),\r\n });\r\n};\r\nexport default Modal;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, Component } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport Button from '../../button/Button';\r\nimport { ButtonColor, FuncType } from '../../button/enum';\r\nimport Modal from '../../modal';\r\nimport Form from '../../form/Form';\r\nimport Icon from '../../icon';\r\nimport TableContext from '../TableContext';\r\nimport { $l } from '../../locale-context';\r\nimport autobind from '../../_util/autobind';\r\nimport TableButtons from './TableButtons';\r\n/**\r\n * 去除级联字段\r\n *\r\n * @export\r\n * @param {Fields} fields 待筛选的字段数组\r\n * @returns {{ [key: string]: Field }} 不含级联字段的字段数组\r\n */\r\nexport function filterBindField(fields) {\r\n return [...fields.entries()].reduce((newFields, [key, field]) => {\r\n if (!field.get('bind')) {\r\n newFields[key] = field;\r\n }\r\n return newFields;\r\n }, {});\r\n}\r\nlet TableToolBar = class TableToolBar extends Component {\r\n handleFieldEnter() {\r\n this.handleQuery();\r\n if (this.modal) {\r\n this.modal.close();\r\n }\r\n }\r\n handleQueryReset() {\r\n const { queryDataSet } = this.props;\r\n if (queryDataSet) {\r\n const { current } = queryDataSet;\r\n if (current) {\r\n current.reset();\r\n }\r\n this.handleQuery();\r\n }\r\n }\r\n handleQuery() {\r\n const { dataSet } = this.props;\r\n dataSet.query();\r\n }\r\n componentWillUnmount() {\r\n if (this.modal) {\r\n this.modal.close(true);\r\n }\r\n }\r\n getQueryBar() {\r\n const { prefixCls, queryFieldsLimit, queryFields, queryDataSet } = this.props;\r\n if (queryDataSet && queryFields.length) {\r\n const currentFields = this.createFields(queryFields.slice(0, queryFieldsLimit), queryDataSet, false);\r\n const moreFields = this.createFields(queryFields.slice(queryFieldsLimit), queryDataSet, true);\r\n let more;\r\n let dirtyInfo;\r\n if (moreFields.length) {\r\n more = this.getMoreButton(moreFields);\r\n dirtyInfo = this.getDirtyInfo(queryDataSet.current, moreFields);\r\n }\r\n return (<span className={`${prefixCls}-query-bar`}>\n {dirtyInfo}\n {currentFields}\n <Button color={ButtonColor.primary} onClick={this.handleQuery}>\n {$l('Table', 'query_button')}\n </Button>\n {more}\n </span>);\r\n }\r\n }\r\n getDirtyInfo(current, moreFields) {\r\n if (current &&\r\n moreFields.some(element => {\r\n const { name } = element.props;\r\n const field = current.getField(name);\r\n return field ? field.dirty : false;\r\n })) {\r\n const { prefixCls } = this.props;\r\n return (<span className={`${prefixCls}-query-bar-dirty-info`}>\n <Icon type=\"info\"/>\n <span>{$l('Table', 'dirty_info')}</span>\n <a onClick={this.handleQueryReset}>{$l('Table', 'restore')}</a>\n </span>);\r\n }\r\n }\r\n getMoreButton(moreFields) {\r\n return (<Button color={ButtonColor.primary} funcType={FuncType.flat} onClick={() => this.openMore(moreFields)}>\n {$l('Table', 'advanced_search')}\n </Button>);\r\n }\r\n createFields(elements, dataSet, isMore) {\r\n return elements.map((element, index) => {\r\n const { name } = element.props;\r\n const props = {\r\n autoFocus: isMore && index === 0,\r\n onEnterDown: this.handleFieldEnter,\r\n style: isMore ? undefined : { width: pxToRem(130) },\r\n };\r\n const field = dataSet.getField(name);\r\n if (field) {\r\n const label = field.get('label');\r\n if (label) {\r\n if (isMore) {\r\n props.label = label;\r\n }\r\n else {\r\n props.placeholder = label;\r\n }\r\n }\r\n }\r\n return cloneElement(element, props);\r\n });\r\n }\r\n openMore(children) {\r\n this.modal = Modal.open({\r\n title: $l('Table', 'advanced_search'),\r\n children: <Form>{children}</Form>,\r\n okText: $l('Table', 'query_button'),\r\n onOk: this.handleQuery,\r\n style: {\r\n width: pxToRem(400),\r\n },\r\n drawer: true,\r\n });\r\n }\r\n render() {\r\n const { prefixCls, pagination = null, buttons } = this.props;\r\n return [\r\n <TableButtons key=\"toolbar\" prefixCls={prefixCls} buttons={buttons}>\n {this.getQueryBar()}\n </TableButtons>,\r\n pagination,\r\n ];\r\n }\r\n};\r\nTableToolBar.displayName = 'TableToolBar';\r\nTableToolBar.contextType = TableContext;\r\nTableToolBar.defaultProps = {\r\n queryFieldsLimit: 1,\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], TableToolBar.prototype, \"handleFieldEnter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableToolBar.prototype, \"handleQueryReset\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableToolBar.prototype, \"handleQuery\", null);\r\nTableToolBar = tslib_1.__decorate([\r\n observer\r\n], TableToolBar);\r\nexport default TableToolBar;\r\n","import * as tslib_1 from \"tslib\";\r\nimport Set from 'core-js/library/fn/set';\r\nimport React, { cloneElement } from 'react';\r\nimport omit from 'lodash/omit';\r\nimport isPlainObject from 'lodash/isPlainObject';\r\nimport isNil from 'lodash/isNil';\r\nimport defer from 'lodash/defer';\r\nimport noop from 'lodash/noop';\r\nimport debounce from 'lodash/debounce';\r\nimport throttle from 'lodash/throttle';\r\nimport isString from 'lodash/isString';\r\nimport { observer } from 'mobx-react';\r\nimport { action, computed, get, isArrayLike, observable, reaction, runInAction, toJS, } from 'mobx';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport Icon from '../../icon';\r\nimport { TextField } from '../../text-field/TextField';\r\nimport autobind from '../../_util/autobind';\r\nimport measureTextWidth from '../../_util/measureTextWidth';\r\nimport { getEditorByField } from '../utils';\r\nimport ObserverSelect from '../../select/Select';\r\nimport Option from '../../option/Option';\r\nimport isSameLike from '../../_util/isSameLike';\r\nimport { DataSetEvents } from '../../data-set/enum';\r\nimport { processFieldValue } from '../../data-set/utils';\r\nlet FilterSelect = class FilterSelect extends TextField {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.setFilterText = debounce(action((text) => {\r\n this.filterText = text;\r\n }), 500);\r\n this.doQuery = throttle(() => {\r\n const { optionDataSet } = this.observableProps;\r\n optionDataSet.query();\r\n }, 500);\r\n const { observableProps } = this;\r\n this.on(observableProps.queryDataSet);\r\n this.reaction = reaction(() => observableProps.queryDataSet, this.on);\r\n }\r\n get value() {\r\n const { filter } = this.props;\r\n const { value, queryDataSet } = this.observableProps;\r\n if (value) {\r\n return filter ? value.filter(filter) : value;\r\n }\r\n const { paramName } = this.props;\r\n if (queryDataSet) {\r\n const { current } = queryDataSet;\r\n if (current) {\r\n const result = [];\r\n const keys = queryDataSet.fields.keys();\r\n [...new Set(paramName ? [...keys, paramName] : keys)].forEach((key) => {\r\n if (key && (!filter || filter(key))) {\r\n const values = current.get(key);\r\n if (isArrayLike(values)) {\r\n values.forEach(item => !isNil(item) && result.push(key));\r\n }\r\n else if (!isNil(values)) {\r\n result.push(key);\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n }\r\n return undefined;\r\n }\r\n set value(value) {\r\n runInAction(() => {\r\n this.observableProps.value = value;\r\n });\r\n }\r\n getObservableProps(props, context) {\r\n return {\r\n ...super.getObservableProps(props, context),\r\n optionDataSet: props.optionDataSet,\r\n queryDataSet: props.queryDataSet,\r\n };\r\n }\r\n on(ds) {\r\n this.off();\r\n if (ds) {\r\n ds.addEventListener(DataSetEvents.update, this.handleDataSetUpdate);\r\n ds.addEventListener(DataSetEvents.reset, this.handleDataSetReset);\r\n }\r\n this.queryDataSet = ds;\r\n }\r\n off() {\r\n const { queryDataSet } = this;\r\n if (queryDataSet) {\r\n queryDataSet.removeEventListener(DataSetEvents.update, this.handleDataSetUpdate);\r\n queryDataSet.removeEventListener(DataSetEvents.reset, this.handleDataSetReset);\r\n }\r\n }\r\n componentWillUnmount() {\r\n super.componentWillUnmount();\r\n this.setFilterText.cancel();\r\n this.off();\r\n this.reaction();\r\n }\r\n setText(text) {\r\n super.setText(text);\r\n this.setFilterText(text);\r\n }\r\n getPlaceholders() {\r\n if (!this.selectField) {\r\n return super.getPlaceholders();\r\n }\r\n return [];\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), [\r\n 'paramName',\r\n 'optionDataSet',\r\n 'queryDataSet',\r\n 'dropdownMenuStyle',\r\n 'hiddenIfNone',\r\n 'editable',\r\n 'filter',\r\n ]);\r\n }\r\n getRootDomNode() {\r\n return this.element;\r\n }\r\n defaultRenderer({ value, repeat = 0 }) {\r\n const { paramName } = this.props;\r\n const { queryDataSet } = this.observableProps;\r\n if (queryDataSet) {\r\n const { current } = queryDataSet;\r\n if (current) {\r\n let fieldValue = current.get(value);\r\n if (value === paramName) {\r\n return fieldValue;\r\n }\r\n const field = queryDataSet.getField(value);\r\n if (field) {\r\n if (field.get('multiple')) {\r\n fieldValue = (fieldValue || [])[repeat];\r\n }\r\n return `${this.getFieldLabel(field)}: ${processFieldValue(isPlainObject(fieldValue) ? fieldValue : super.processValue(fieldValue), field, this.lang)}`;\r\n }\r\n return value;\r\n }\r\n }\r\n }\r\n getQueryRecord() {\r\n const { queryDataSet } = this.observableProps;\r\n if (queryDataSet) {\r\n return queryDataSet.current;\r\n }\r\n }\r\n getQueryField(fieldName) {\r\n const { queryDataSet } = this.observableProps;\r\n if (queryDataSet) {\r\n return queryDataSet.getField(fieldName);\r\n }\r\n }\r\n addQueryParams(value) {\r\n const { paramName } = this.props;\r\n if (paramName) {\r\n this.setQueryValue(paramName, value);\r\n }\r\n }\r\n afterRemoveValue(value, repeat) {\r\n const values = this.getQueryValues(value);\r\n if (repeat === -1) {\r\n values.pop();\r\n }\r\n else {\r\n values.splice(repeat, 1);\r\n }\r\n const multiple = this.getQueryFieldMultiple(value);\r\n this.setQueryValue(value, multiple ? values : values[0]);\r\n }\r\n getQueryFieldMultiple(value) {\r\n const { paramName } = this.props;\r\n if (paramName !== value) {\r\n const field = this.getQueryField(value);\r\n if (field && field.get('multiple')) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n handleDataSetReset() {\r\n this.setValue(undefined);\r\n }\r\n handleDataSetUpdate({ name, value }) {\r\n const values = this.getValues();\r\n if (isArrayLike(value)) {\r\n const { length } = value;\r\n if (length) {\r\n let repeat = 0;\r\n const filtered = values.filter(item => {\r\n if (item === name) {\r\n repeat += 1;\r\n if (repeat > length) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n for (let i = 0, n = length - repeat; i < n; i += 1) {\r\n filtered.push(name);\r\n }\r\n this.setValue(filtered);\r\n }\r\n else {\r\n this.setValue(values.filter(item => item === name));\r\n }\r\n }\r\n else if (isNil(value)) {\r\n this.setValue(values.filter(item => item !== name));\r\n }\r\n else {\r\n if (values.indexOf(name) === -1) {\r\n values.push(name);\r\n }\r\n this.setValue(values);\r\n }\r\n this.doQuery();\r\n }\r\n handleBlur(e) {\r\n super.handleBlur(e);\r\n this.setSelectField(undefined);\r\n }\r\n isEditorReadOnly() {\r\n const { paramName, editable } = this.props;\r\n return (this.getQueryValues(paramName).length > 0 && !this.selectField) || !editable;\r\n }\r\n handleFieldChange(value) {\r\n const { selectField } = this;\r\n if (selectField) {\r\n const { name } = selectField;\r\n this.setQueryValue(name, value);\r\n }\r\n else if (isString(value)) {\r\n this.addQueryParams(value);\r\n if (this.isFocused) {\r\n this.element.expand();\r\n }\r\n }\r\n else {\r\n this.setSelectField(value);\r\n }\r\n }\r\n handleInput(e) {\r\n this.setText(e.target.value);\r\n }\r\n handleFieldEnterDown() {\r\n defer(() => this.focus());\r\n }\r\n handleKeyDown(e) {\r\n if (this.selectField) {\r\n if (e.keyCode === KeyCode.BACKSPACE && !this.text) {\r\n this.setSelectField(undefined);\r\n }\r\n }\r\n else {\r\n super.handleKeyDown(e);\r\n }\r\n }\r\n handleEnterDown() { }\r\n setSelectField(value) {\r\n this.selectField = value;\r\n this.setFilterText(undefined);\r\n }\r\n getQueryValues(fieldName) {\r\n const current = this.getQueryRecord();\r\n if (current) {\r\n return [].concat(toJS(current.get(fieldName)) || []);\r\n }\r\n return [];\r\n }\r\n syncValueOnBlur() { }\r\n setQueryValue(fieldName, value) {\r\n const current = this.getQueryRecord();\r\n if (current) {\r\n current.set(fieldName, value);\r\n }\r\n this.setSelectField(undefined);\r\n }\r\n getFieldLabel(field) {\r\n return field.get('label') || field.name;\r\n }\r\n multipleFieldExistsValue(field, current) {\r\n if (field.get('multiple')) {\r\n const { lookup } = field;\r\n if (lookup && current) {\r\n const values = current.get(field.name);\r\n return lookup.some(obj => !values.some(value => isSameLike(get(obj, field.get('valueField')), value)));\r\n }\r\n }\r\n return false;\r\n }\r\n getInputFilterOptions(filterText) {\r\n const { optionDataSet, optionDataSet: { fields }, } = this.observableProps;\r\n const values = new Set();\r\n optionDataSet.forEach(record => {\r\n [...fields.keys()].forEach(key => {\r\n const value = record.get(key);\r\n if (isString(value) && value.toLowerCase().indexOf(filterText.toLowerCase()) !== -1) {\r\n values.add(value);\r\n }\r\n });\r\n });\r\n return [...values].map(value => (<Option key={value} value={value}>\n {value}\n </Option>));\r\n }\r\n getFieldSelectOptions() {\r\n const { paramName } = this.props;\r\n const { queryDataSet } = this.observableProps;\r\n const data = [];\r\n if (queryDataSet) {\r\n [...queryDataSet.fields.entries()].forEach(([key, field]) => {\r\n if (key !== paramName &&\r\n (this.getValues().indexOf(key) === -1 ||\r\n this.multipleFieldExistsValue(field, this.getQueryRecord()))) {\r\n data.push(<Option key={key} value={field}>\n {this.getFieldLabel(field)}\n </Option>);\r\n }\r\n });\r\n }\r\n return data;\r\n }\r\n getFieldEditor(props, selectField) {\r\n const editor = getEditorByField(selectField);\r\n const editorProps = {\r\n ...props,\r\n key: 'value',\r\n record: this.getQueryRecord(),\r\n name: selectField.name,\r\n autoFocus: true,\r\n onInput: this.handleInput,\r\n onEnterDown: this.handleFieldEnterDown,\r\n renderer: noop,\r\n };\r\n if (editor.type === ObserverSelect) {\r\n editorProps.dropdownMenuStyle = this.props.dropdownMenuStyle;\r\n }\r\n return cloneElement(editor, editorProps);\r\n }\r\n getFieldSelect(props) {\r\n const { filterText, props: { dropdownMenuStyle }, } = this;\r\n const editable = !this.isEditorReadOnly();\r\n const options = editable\r\n ? filterText\r\n ? this.getInputFilterOptions(filterText)\r\n : this.getFieldSelectOptions()\r\n : null;\r\n return (<ObserverSelect {...props} key=\"key\" combo={editable} searchable={editable} value={null} onInput={this.handleInput} onEnterDown={this.handleFieldEnterDown} autoFocus={this.isFocused} dropdownMenuStyle={dropdownMenuStyle}>\n {options}\n </ObserverSelect>);\r\n }\r\n clear() {\r\n const record = this.getQueryRecord();\r\n if (record) {\r\n record.clear();\r\n }\r\n }\r\n renderWrapper() {\r\n const { hiddenIfNone } = this.props;\r\n if (this.isEmpty() && hiddenIfNone) {\r\n return null;\r\n }\r\n return super.renderWrapper();\r\n }\r\n renderMultipleEditor(props) {\r\n const { text, selectField, prefixCls } = this;\r\n const editorProps = {\r\n ...omit(props, ['multiple', 'prefixCls']),\r\n clearButton: false,\r\n prefix: null,\r\n suffix: null,\r\n elementClassName: `${prefixCls}-inner-editor`,\r\n onChange: this.handleFieldChange,\r\n };\r\n if (text) {\r\n editorProps.style = { width: pxToRem(measureTextWidth(text)) };\r\n }\r\n return (<li key=\"text\">\n {selectField ? (<span className={`${prefixCls}-select-field`}>{this.getFieldLabel(selectField)}:</span>) : null}\n {selectField\r\n ? this.getFieldEditor(editorProps, selectField)\r\n : this.getFieldSelect(editorProps)}\n </li>);\r\n }\r\n};\r\nFilterSelect.defaultProps = {\r\n ...TextField.defaultProps,\r\n multiple: true,\r\n clearButton: true,\r\n editable: true,\r\n prefix: <Icon type=\"filter_list\"/>,\r\n dropdownMenuStyle: { minWidth: pxToRem(180) },\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], FilterSelect.prototype, \"selectField\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], FilterSelect.prototype, \"filterText\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], FilterSelect.prototype, \"value\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"on\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FilterSelect.prototype, \"setText\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"getRootDomNode\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"defaultRenderer\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"handleDataSetReset\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], FilterSelect.prototype, \"handleDataSetUpdate\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"handleBlur\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"handleFieldChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"handleInput\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"handleFieldEnterDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], FilterSelect.prototype, \"handleEnterDown\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FilterSelect.prototype, \"setSelectField\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FilterSelect.prototype, \"setQueryValue\", null);\r\ntslib_1.__decorate([\r\n action\r\n], FilterSelect.prototype, \"clear\", null);\r\nFilterSelect = tslib_1.__decorate([\r\n observer\r\n], FilterSelect);\r\nexport default FilterSelect;\r\n","export var Placements;\r\n(function (Placements) {\r\n Placements[\"bottomLeft\"] = \"bottomLeft\";\r\n Placements[\"bottomCenter\"] = \"bottomCenter\";\r\n Placements[\"bottomRight\"] = \"bottomRight\";\r\n Placements[\"topLeft\"] = \"topLeft\";\r\n Placements[\"topCenter\"] = \"topCenter\";\r\n Placements[\"topRight\"] = \"topRight\";\r\n})(Placements || (Placements = {}));\r\n","const autoAdjustOverflow = {\r\n adjustX: 1,\r\n adjustY: 1,\r\n};\r\nconst targetOffset = [0, 0];\r\nexport const placements = {\r\n topLeft: {\r\n points: ['bl', 'tl'],\r\n overflow: autoAdjustOverflow,\r\n offset: [0, -4],\r\n targetOffset,\r\n },\r\n topCenter: {\r\n points: ['bc', 'tc'],\r\n overflow: autoAdjustOverflow,\r\n offset: [0, -4],\r\n targetOffset,\r\n },\r\n topRight: {\r\n points: ['br', 'tr'],\r\n overflow: autoAdjustOverflow,\r\n offset: [0, -4],\r\n targetOffset,\r\n },\r\n bottomLeft: {\r\n points: ['tl', 'bl'],\r\n overflow: autoAdjustOverflow,\r\n offset: [0, 4],\r\n targetOffset,\r\n },\r\n bottomCenter: {\r\n points: ['tc', 'bc'],\r\n overflow: autoAdjustOverflow,\r\n offset: [0, 4],\r\n targetOffset,\r\n },\r\n bottomRight: {\r\n points: ['tr', 'br'],\r\n overflow: autoAdjustOverflow,\r\n offset: [0, 4],\r\n targetOffset,\r\n },\r\n};\r\nexport default placements;\r\n","import React, { cloneElement, isValidElement, PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { getProPrefixCls } from 'choerodon-ui/lib/configure';\r\nimport Trigger from '../trigger/Trigger';\r\nimport { Action } from '../trigger/enum';\r\nimport { Placements } from './enum';\r\nimport builtinPlacements from './placements';\r\nconst popupStyle = { whiteSpace: 'nowrap' };\r\nexport default class Dropdown extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n /**\r\n * 调用传入的onHiddenChange方法\r\n *\r\n * @param {boolean} hidden\r\n */\r\n this.handlePopupHiddenChange = (hidden) => {\r\n const { onHiddenChange, onVisibleChange, hidden: propsHidden, visible: propsVisible, } = this.props;\r\n if (propsHidden === undefined && propsVisible === undefined) {\r\n this.setState({\r\n hidden,\r\n });\r\n }\r\n if (onHiddenChange) {\r\n onHiddenChange(hidden);\r\n }\r\n if (onVisibleChange) {\r\n onVisibleChange(!hidden);\r\n }\r\n };\r\n this.handleClick = e => {\r\n const { onOverlayClick, overlay, hidden, visible } = this.props;\r\n const { onClick } = ((isValidElement(overlay) && overlay.props) || {});\r\n if (onOverlayClick) {\r\n onOverlayClick(e);\r\n }\r\n if (onClick) {\r\n onClick(e);\r\n }\r\n if (hidden === undefined && visible === undefined) {\r\n this.setState({\r\n hidden: true,\r\n });\r\n }\r\n };\r\n if ('hidden' in props) {\r\n this.state = {\r\n hidden: props.hidden,\r\n };\r\n }\r\n else if ('visible' in props) {\r\n this.state = {\r\n hidden: !props.visible,\r\n };\r\n }\r\n else if ('defaultHidden' in props) {\r\n this.state = {\r\n hidden: props.defaultHidden,\r\n };\r\n }\r\n else {\r\n this.state = {\r\n hidden: !props.defaultVisible,\r\n };\r\n }\r\n }\r\n get triggerAction() {\r\n const { trigger } = this.props;\r\n return trigger;\r\n }\r\n get transitionName() {\r\n const { placement } = this.props;\r\n let result = 'slide-up';\r\n if (placement && placement.startsWith('top')) {\r\n result = 'slide-down';\r\n }\r\n return result;\r\n }\r\n get prefixCls() {\r\n const { suffixCls, prefixCls } = this.props;\r\n return getProPrefixCls(suffixCls, prefixCls);\r\n }\r\n getMenuElement() {\r\n const { overlay } = this.props;\r\n if (isValidElement(overlay)) {\r\n return cloneElement(overlay, {\r\n onClick: this.handleClick,\r\n });\r\n }\r\n }\r\n componentWillReceiveProps({ hidden, visible }) {\r\n if (hidden !== undefined) {\r\n this.setState({\r\n hidden,\r\n });\r\n }\r\n else if (visible !== undefined) {\r\n this.setState({\r\n hidden: !visible,\r\n });\r\n }\r\n }\r\n render() {\r\n const { prefixCls, state: { hidden }, props: { children, placement }, } = this;\r\n return (<Trigger prefixCls={prefixCls} action={this.triggerAction} builtinPlacements={builtinPlacements} popupPlacement={placement} popupContent={this.getMenuElement()} popupStyle={popupStyle} onPopupHiddenChange={this.handlePopupHiddenChange} popupHidden={hidden}>\n {children}\n </Trigger>);\r\n }\r\n}\r\nDropdown.displayName = 'Dropdown';\r\nDropdown.propTypes = {\r\n trigger: PropTypes.arrayOf(PropTypes.oneOf([Action.focus, Action.hover, Action.click, Action.contextMenu])),\r\n overlay: PropTypes.any,\r\n placement: PropTypes.oneOf([\r\n Placements.bottomLeft,\r\n Placements.bottomCenter,\r\n Placements.bottomRight,\r\n Placements.topLeft,\r\n Placements.topCenter,\r\n Placements.topRight,\r\n ]),\r\n hidden: PropTypes.bool,\r\n visible: PropTypes.bool,\r\n onHiddenChange: PropTypes.func,\r\n onVisibleChange: PropTypes.func,\r\n onOverlayClick: PropTypes.func,\r\n suffixCls: PropTypes.string,\r\n prefixCls: PropTypes.string,\r\n defaultHidden: PropTypes.bool,\r\n defaultVisible: PropTypes.bool,\r\n};\r\nDropdown.defaultProps = {\r\n suffixCls: 'dropdown',\r\n placement: Placements.bottomLeft,\r\n trigger: [Action.hover, Action.focus],\r\n defaultHidden: true,\r\n};\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport { action, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport Menu, { Item } from 'choerodon-ui/lib/rc-components/menu/index';\r\nimport Button from '../../button/Button';\r\nimport Dropdown from '../../dropdown/Dropdown';\r\nimport { Size } from '../../core/enum';\r\nimport { FuncType } from '../../button/enum';\r\nimport TableContext from '../TableContext';\r\nimport { getColumnKey, getHeader } from '../utils';\r\nimport { Placements } from '../../dropdown/enum';\r\nimport { stopEvent, stopPropagation } from '../../_util/EventManager';\r\nimport autobind from '../../_util/autobind';\r\nfunction handleMenuClick({ domEvent }) {\r\n domEvent.preventDefault();\r\n}\r\nlet ColumnFilter = class ColumnFilter extends Component {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.setDropDownHidden(true);\r\n }\r\n saveMenu(node) {\r\n this.menu = node;\r\n }\r\n handleHiddenChange(hidden) {\r\n this.setDropDownHidden(hidden);\r\n }\r\n handleKeyDown(e) {\r\n if (this.menu && this.menu.onKeyDown(e)) {\r\n stopEvent(e);\r\n }\r\n }\r\n setDropDownHidden(hidden) {\r\n this.hidden = hidden;\r\n }\r\n render() {\r\n const { prefixCls: rootPrefixCls } = this.props;\r\n const prefixCls = `${rootPrefixCls}-columns-chooser`;\r\n return (<div className={prefixCls} onFocus={stopPropagation} onMouseDown={stopPropagation} tabIndex={-1}>\n <Dropdown placement={Placements.bottomRight} overlay={this.getMenu(prefixCls)} hidden={this.hidden} onHiddenChange={this.handleHiddenChange}>\n <Button funcType={FuncType.flat} icon=\"view_column\" size={Size.small} onKeyDown={this.handleKeyDown}/>\n </Dropdown>\n </div>);\r\n }\r\n handleMenuSelect({ item: { props: { value }, }, }) {\r\n value.hidden = false;\r\n }\r\n handleMenuUnSelect({ item: { props: { value }, }, }) {\r\n value.hidden = true;\r\n }\r\n getMenu(prefixCls) {\r\n const { tableStore: { leafColumns, dataSet }, } = this.context;\r\n const selectedKeys = [];\r\n const columns = [];\r\n leafColumns.forEach(column => {\r\n if (column.hideable) {\r\n const header = getHeader(column, dataSet);\r\n if (header) {\r\n const key = getColumnKey(column);\r\n if (!column.hidden) {\r\n selectedKeys.push(key);\r\n }\r\n columns.push([column, header, key]);\r\n }\r\n }\r\n });\r\n return (<Menu ref={this.saveMenu} multiple defaultActiveFirst prefixCls={`${prefixCls}-dropdown-menu`} selectedKeys={selectedKeys} onSelect={this.handleMenuSelect} onDeselect={this.handleMenuUnSelect} onClick={handleMenuClick}>\n {this.getOptions(columns)}\n </Menu>);\r\n }\r\n getOptions(columns) {\r\n return columns.map(([column, header, key]) => (<Item key={key} value={column}>\n <span>{header}</span>\n </Item>));\r\n }\r\n};\r\nColumnFilter.displayName = 'ColumnFilter';\r\nColumnFilter.contextType = TableContext;\r\ntslib_1.__decorate([\r\n observable\r\n], ColumnFilter.prototype, \"hidden\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColumnFilter.prototype, \"saveMenu\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColumnFilter.prototype, \"handleHiddenChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], ColumnFilter.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n action\r\n], ColumnFilter.prototype, \"setDropDownHidden\", null);\r\ntslib_1.__decorate([\r\n action\r\n], ColumnFilter.prototype, \"handleMenuSelect\", null);\r\ntslib_1.__decorate([\r\n action\r\n], ColumnFilter.prototype, \"handleMenuUnSelect\", null);\r\nColumnFilter = tslib_1.__decorate([\r\n observer\r\n], ColumnFilter);\r\nexport default ColumnFilter;\r\n","import React, { PureComponent } from 'react';\r\nimport FilterSelect from './FilterSelect';\r\nimport ColumnFilter from './ColumnFilter';\r\nimport { $l } from '../../locale-context';\r\nexport default class TableFilterBar extends PureComponent {\r\n renderSuffix() {\r\n const { prefixCls } = this.props;\r\n return <ColumnFilter prefixCls={prefixCls}/>;\r\n }\r\n getButtons() {\r\n const { prefixCls, buttons } = this.props;\r\n if (buttons.length) {\r\n return (<div key=\"toolbar\" className={`${prefixCls}-toolbar`}>\n <span className={`${prefixCls}-toolbar-button-group`}>{buttons}</span>\n </div>);\r\n }\r\n }\r\n render() {\r\n const { prefixCls, dataSet, queryDataSet, paramName, placeholder = $l('Table', 'filter_bar_placeholder'), pagination, } = this.props;\r\n const buttons = this.getButtons();\r\n return [\r\n buttons,\r\n pagination,\r\n <FilterSelect key=\"filter\" prefixCls={`${prefixCls}-filter-select`} optionDataSet={dataSet} queryDataSet={queryDataSet} placeholder={placeholder} suffix={this.renderSuffix()} paramName={paramName}/>,\r\n ];\r\n }\r\n}\r\n","import Button from './Button';\r\nexport default Button;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, Component } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport Button from '../../button';\r\nimport TableContext from '../TableContext';\r\nimport { ButtonColor, FuncType } from '../../button/enum';\r\nimport { $l } from '../../locale-context';\r\nimport autobind from '../../_util/autobind';\r\nimport TableButtons from './TableButtons';\r\nimport FilterSelect from './FilterSelect';\r\nimport Modal from '../../modal';\r\nimport Form from '../../form/Form';\r\nimport { LabelLayout } from '../../form/enum';\r\nlet TableAdvancedQueryBar = class TableAdvancedQueryBar extends Component {\r\n componentWillUnmount() {\r\n if (this.modal) {\r\n this.modal.close(true);\r\n }\r\n }\r\n handleFieldEnter() {\r\n this.handleQuery();\r\n if (this.modal) {\r\n this.modal.close();\r\n }\r\n }\r\n handleQuery() {\r\n const { dataSet } = this.props;\r\n dataSet.query();\r\n }\r\n valueFilter(value) {\r\n const { queryFields, queryFieldsLimit } = this.props;\r\n return queryFields.slice(0, queryFieldsLimit).every(element => element.props.name !== value);\r\n }\r\n getMoreFieldsButton(fields) {\r\n if (fields.length) {\r\n return (<Button funcType={FuncType.raised} color={ButtonColor.primary} onClick={() => this.openMore(fields)}>\n {$l('Table', 'advanced_query')}\n </Button>);\r\n }\r\n }\r\n openMore(children) {\r\n this.modal = Modal.open({\r\n title: $l('Table', 'advanced_query'),\r\n children: <Form labelLayout={LabelLayout.float}>{children}</Form>,\r\n okText: $l('Table', 'query_button'),\r\n onOk: this.handleQuery,\r\n style: {\r\n width: pxToRem(380),\r\n },\r\n drawer: true,\r\n });\r\n }\r\n getResetButton() {\r\n return (<Button funcType={FuncType.raised} onClick={this.handleQueryReset}>\n {$l('Table', 'reset_button')}\n </Button>);\r\n }\r\n getQueryBar() {\r\n const { prefixCls, queryFieldsLimit, queryFields, buttons, queryDataSet } = this.props;\r\n if (queryDataSet && queryFields.length) {\r\n const currentFields = this.createFields(queryFields.slice(0, queryFieldsLimit), queryDataSet, false);\r\n const moreFields = this.createFields(queryFields.slice(queryFieldsLimit), queryDataSet, true);\r\n const moreFieldsButton = this.getMoreFieldsButton(moreFields);\r\n return (<div key=\"toolbar\" className={`${prefixCls}-advanced-query-bar`}>\n {currentFields}\n <span className={`${prefixCls}-advanced-query-bar-button`}>\n {this.getResetButton()}\n {moreFieldsButton}\n {buttons}\n </span>\n </div>);\r\n }\r\n }\r\n createFields(elements, dataSet, isMore) {\r\n return elements.map(element => {\r\n const { name, style } = element.props;\r\n const newStyle = {};\r\n if (!isMore) {\r\n newStyle.width = pxToRem(260);\r\n newStyle.marginRight = pxToRem(10);\r\n }\r\n const props = {\r\n onEnterDown: this.handleFieldEnter,\r\n labelLayout: LabelLayout.float,\r\n style: {\r\n marginRight: !isMore ? pxToRem(10) : 0,\r\n ...style,\r\n },\r\n };\r\n const field = dataSet.getField(name);\r\n if (field) {\r\n const label = field.get('label');\r\n if (label) {\r\n if (isMore) {\r\n props.label = label;\r\n }\r\n else {\r\n props.placeholder = label;\r\n }\r\n }\r\n }\r\n return cloneElement(element, props);\r\n });\r\n }\r\n handleQueryReset() {\r\n const { queryDataSet } = this.props;\r\n if (queryDataSet) {\r\n const { current } = queryDataSet;\r\n if (current) {\r\n current.reset();\r\n }\r\n this.handleQuery();\r\n }\r\n }\r\n getFilterSelect() {\r\n const { prefixCls, dataSet, queryDataSet } = this.props;\r\n return (<FilterSelect key=\"filter\" prefixCls={`${prefixCls}-filter-select`} className={`${prefixCls}-advanced-query-bar-options`} optionDataSet={dataSet} queryDataSet={queryDataSet} prefix={`${$l('Table', 'advanced_query_conditions')}:`} editable={false} filter={this.valueFilter} hiddenIfNone/>);\r\n }\r\n render() {\r\n const { buttons, prefixCls } = this.props;\r\n const queryBar = this.getQueryBar();\r\n if (queryBar) {\r\n return [queryBar, this.getFilterSelect()];\r\n }\r\n return <TableButtons key=\"toolbar\" prefixCls={prefixCls} buttons={buttons}/>;\r\n }\r\n};\r\nTableAdvancedQueryBar.contextType = TableContext;\r\nTableAdvancedQueryBar.defaultProps = {\r\n queryFieldsLimit: 1,\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], TableAdvancedQueryBar.prototype, \"handleFieldEnter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableAdvancedQueryBar.prototype, \"handleQuery\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableAdvancedQueryBar.prototype, \"valueFilter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableAdvancedQueryBar.prototype, \"handleQueryReset\", null);\r\nTableAdvancedQueryBar = tslib_1.__decorate([\r\n observer\r\n], TableAdvancedQueryBar);\r\nexport default TableAdvancedQueryBar;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { cloneElement, Component, isValidElement } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { isArrayLike } from 'mobx';\r\nimport isObject from 'lodash/isObject';\r\nimport isString from 'lodash/isString';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport { TableButtonType, TableQueryBarType } from '../enum';\r\nimport TableButtons from './TableButtons';\r\nimport Table from '../Table';\r\nimport Button from '../../button/Button';\r\nimport { ButtonColor, ButtonType, FuncType } from '../../button/enum';\r\nimport { DataSetStatus, FieldType } from '../../data-set/enum';\r\nimport { $l } from '../../locale-context';\r\nimport TableContext from '../TableContext';\r\nimport autobind from '../../_util/autobind';\r\nimport DataSet from '../../data-set';\r\nimport Modal from '../../modal';\r\nimport Column from '../Column';\r\nimport { getEditorByField } from '../utils';\r\nimport TableToolBar from './TableToolBar';\r\nimport TableFilterBar from './TableFilterBar';\r\nimport TableAdvancedQueryBar from './TableAdvancedQueryBar';\r\nimport { findBindFieldBy } from '../../data-set/utils';\r\nlet TableQueryBar = class TableQueryBar extends Component {\r\n get showQueryBar() {\r\n const { props: { showQueryBar }, context: { tableStore: { queryBar }, }, } = this;\r\n return showQueryBar !== false && queryBar !== TableQueryBarType.none;\r\n }\r\n componentWillUnmount() {\r\n if (this.exportModal) {\r\n this.exportModal.close(true);\r\n }\r\n }\r\n handleButtonCreate() {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.create({}, 0);\r\n }\r\n handleButtonSubmit() {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.submit();\r\n }\r\n handleButtonDelete() {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.delete(dataSet.selected);\r\n }\r\n handleButtonRemove() {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.remove(dataSet.selected);\r\n }\r\n handleButtonReset() {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.reset();\r\n }\r\n handleQueryReset() {\r\n const { tableStore: { dataSet: { queryDataSet }, }, } = this.context;\r\n if (queryDataSet) {\r\n const { current } = queryDataSet;\r\n if (current) {\r\n current.reset();\r\n }\r\n this.handleQuery();\r\n }\r\n }\r\n handleExpandAll() {\r\n const { tableStore } = this.context;\r\n tableStore.expandAll();\r\n }\r\n handleCollapseAll() {\r\n const { tableStore } = this.context;\r\n tableStore.collapseAll();\r\n }\r\n async handleButtonExport() {\r\n const { tableStore } = this.context;\r\n const columnHeaders = await tableStore.getColumnHeaders();\r\n this.exportDataSet = new DataSet({ data: columnHeaders, paging: false });\r\n this.exportDataSet.selectAll();\r\n this.exportModal = Modal.open({\r\n title: $l('Table', 'choose_export_columns'),\r\n children: (<Table dataSet={this.exportDataSet} style={{ height: pxToRem(300) }}>\n <Column header={$l('Table', 'column_name')} name=\"label\" resizable={false}/>\n </Table>),\r\n okText: $l('Table', 'export_button'),\r\n onOk: this.handleExport,\r\n style: {\r\n width: pxToRem(400),\r\n },\r\n });\r\n }\r\n handleQuery() {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.query();\r\n }\r\n handleExport() {\r\n const { selected } = this.exportDataSet;\r\n if (selected.length) {\r\n const { tableStore: { dataSet }, } = this.context;\r\n dataSet.export(selected.reduce((columns, record) => {\r\n let myName = record.get('name');\r\n const myField = dataSet.getField(myName);\r\n if (myField && myField.type === FieldType.object) {\r\n const bindField = findBindFieldBy(myField, dataSet.fields, 'textField');\r\n if (bindField) {\r\n myName = bindField.name;\r\n }\r\n }\r\n columns[myName] = record.get('label');\r\n return columns;\r\n }, {}));\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n getButtonProps(type) {\r\n const { tableStore: { isTree, dataSet }, } = this.context;\r\n const disabled = dataSet.status !== DataSetStatus.ready;\r\n switch (type) {\r\n case TableButtonType.add:\r\n return {\r\n icon: 'playlist_add',\r\n onClick: this.handleButtonCreate,\r\n children: $l('Table', 'create_button'),\r\n disabled: disabled || (dataSet.parent ? !dataSet.parent.current : false),\r\n };\r\n case TableButtonType.save:\r\n return {\r\n icon: 'save',\r\n onClick: this.handleButtonSubmit,\r\n children: $l('Table', 'save_button'),\r\n type: ButtonType.submit,\r\n disabled,\r\n };\r\n case TableButtonType.delete:\r\n return {\r\n icon: 'delete',\r\n onClick: this.handleButtonDelete,\r\n children: $l('Table', 'delete_button'),\r\n disabled: disabled || dataSet.selected.length === 0,\r\n };\r\n case TableButtonType.remove:\r\n return {\r\n icon: 'remove_circle',\r\n onClick: this.handleButtonRemove,\r\n children: $l('Table', 'remove_button'),\r\n disabled: disabled || dataSet.selected.length === 0,\r\n };\r\n case TableButtonType.reset:\r\n return {\r\n icon: 'undo',\r\n onClick: this.handleButtonReset,\r\n children: $l('Table', 'reset_button'),\r\n type: ButtonType.reset,\r\n };\r\n case TableButtonType.query:\r\n return { icon: 'search', onClick: this.handleQuery, children: $l('Table', 'query_button') };\r\n case TableButtonType.export:\r\n return {\r\n icon: 'export',\r\n onClick: this.handleButtonExport,\r\n children: $l('Table', 'export_button'),\r\n };\r\n case TableButtonType.expandAll:\r\n return isTree\r\n ? {\r\n icon: 'add_box',\r\n onClick: this.handleExpandAll,\r\n children: $l('Table', 'expand_button'),\r\n }\r\n : undefined;\r\n case TableButtonType.collapseAll:\r\n return isTree\r\n ? {\r\n icon: 'short_text',\r\n onClick: this.handleCollapseAll,\r\n children: $l('Table', 'collapse_button'),\r\n }\r\n : undefined;\r\n default:\r\n }\r\n }\r\n getButtons() {\r\n const { buttons } = this.props;\r\n const children = [];\r\n if (buttons) {\r\n buttons.forEach(button => {\r\n let props = {};\r\n if (isArrayLike(button)) {\r\n props = button[1];\r\n button = button[0];\r\n }\r\n if (isString(button) && button in TableButtonType) {\r\n const defaultButtonProps = this.getButtonProps(button);\r\n if (defaultButtonProps) {\r\n children.push(<Button color={ButtonColor.primary} funcType={FuncType.flat} key={button} {...defaultButtonProps} {...props}/>);\r\n }\r\n }\r\n else if (isValidElement(button)) {\r\n children.push(button);\r\n }\r\n });\r\n }\r\n return children;\r\n }\r\n getQueryFields() {\r\n const { context: { tableStore: { dataSet }, }, props: { queryFields }, } = this;\r\n const { queryDataSet } = dataSet;\r\n const result = [];\r\n if (queryDataSet) {\r\n const { fields } = queryDataSet;\r\n return [...fields.entries()].reduce((list, [name, field]) => {\r\n if (!field.get('bind')) {\r\n const props = {\r\n key: name,\r\n name,\r\n dataSet: queryDataSet,\r\n };\r\n const element = queryFields[name];\r\n list.push(isValidElement(element)\r\n ? cloneElement(element, props)\r\n : cloneElement(getEditorByField(field), {\r\n ...props,\r\n ...(isObject(element) ? element : {}),\r\n }));\r\n }\r\n return list;\r\n }, result);\r\n }\r\n return result;\r\n }\r\n renderToolBar(props) {\r\n const { prefixCls } = this.props;\r\n return <TableToolBar key=\"toolbar\" prefixCls={prefixCls} {...props}/>;\r\n }\r\n renderFilterBar(props) {\r\n const { props: { prefixCls, filterBarFieldName, filterBarPlaceholder }, } = this;\r\n return (<TableFilterBar key=\"toolbar\" prefixCls={prefixCls} paramName={filterBarFieldName} placeholder={filterBarPlaceholder} {...props}/>);\r\n }\r\n renderAdvancedQueryBar(props) {\r\n const { prefixCls } = this.props;\r\n return <TableAdvancedQueryBar key=\"toolbar\" prefixCls={prefixCls} {...props}/>;\r\n }\r\n render() {\r\n const buttons = this.getButtons();\r\n const { context: { tableStore: { dataSet, queryBar }, }, props: { queryFieldsLimit, prefixCls, pagination }, showQueryBar, } = this;\r\n if (showQueryBar) {\r\n const { queryDataSet } = dataSet;\r\n const queryFields = this.getQueryFields();\r\n const props = {\r\n dataSet,\r\n queryDataSet,\r\n buttons,\r\n pagination,\r\n queryFields,\r\n queryFieldsLimit: queryFieldsLimit,\r\n };\r\n if (typeof queryBar === 'function') {\r\n return queryBar(props);\r\n }\r\n switch (queryBar) {\r\n case TableQueryBarType.normal:\r\n return this.renderToolBar(props);\r\n case TableQueryBarType.bar:\r\n return this.renderFilterBar(props);\r\n case TableQueryBarType.advancedBar:\r\n return this.renderAdvancedQueryBar(props);\r\n default:\r\n }\r\n }\r\n return [<TableButtons key=\"toolbar\" prefixCls={prefixCls} buttons={buttons}/>, pagination];\r\n }\r\n};\r\nTableQueryBar.displayName = 'TableQueryBar';\r\nTableQueryBar.contextType = TableContext;\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleButtonCreate\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleButtonSubmit\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleButtonDelete\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleButtonRemove\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleButtonReset\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleQueryReset\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleExpandAll\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleCollapseAll\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleButtonExport\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleQuery\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TableQueryBar.prototype, \"handleExport\", null);\r\nTableQueryBar = tslib_1.__decorate([\r\n observer\r\n], TableQueryBar);\r\nexport default TableQueryBar;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport autobind from '../_util/autobind';\r\nimport { ColumnLock } from './enum';\r\nimport TableContext from './TableContext';\r\nlet TableBody = class TableBody extends Component {\r\n saveRef(node) {\r\n const { getRef } = this.props;\r\n if (getRef) {\r\n getRef(node);\r\n }\r\n }\r\n render() {\r\n const { children, lock, prefixCls, height, onScroll } = this.props;\r\n const { tableStore: { leftLeafColumnsWidth, hasFooter }, } = this.context;\r\n const fixedLeft = lock === true || lock === ColumnLock.left;\r\n const scrollbar = measureScrollbar();\r\n const hasFooterAndNotLock = !lock && hasFooter && scrollbar;\r\n const tableBody = (<div ref={this.saveRef} className={`${prefixCls}-body`} style={{\r\n height: pxToRem(hasFooterAndNotLock && height !== undefined ? height + scrollbar : height),\r\n marginBottom: hasFooterAndNotLock ? pxToRem(-scrollbar) : undefined,\r\n width: fixedLeft ? pxToRem(leftLeafColumnsWidth + (scrollbar || 20)) : undefined,\r\n }} onScroll={onScroll}>\n {children}\n </div>);\r\n if (fixedLeft) {\r\n return (<div style={{ width: pxToRem(leftLeafColumnsWidth), overflow: 'hidden' }}>{tableBody}</div>);\r\n }\r\n return tableBody;\r\n }\r\n};\r\nTableBody.displayName = 'TableBody';\r\nTableBody.contextType = TableContext;\r\ntslib_1.__decorate([\r\n autobind\r\n], TableBody.prototype, \"saveRef\", null);\r\nTableBody = tslib_1.__decorate([\r\n observer\r\n], TableBody);\r\nexport default TableBody;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport raf from 'raf';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport isNumber from 'lodash/isNumber';\r\nimport noop from 'lodash/noop';\r\nimport classes from 'component-classes';\r\nimport { action } from 'mobx';\r\nimport warning from 'choerodon-ui/lib/_util/warning';\r\nimport { pxToRem, toPx } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport ReactResizeObserver from 'choerodon-ui/lib/_util/resizeObserver';\r\nimport Column, { defaultMinWidth } from './Column';\r\nimport TableStore from './TableStore';\r\nimport TableHeader from './TableHeader';\r\nimport autobind from '../_util/autobind';\r\nimport Pagination from '../pagination/Pagination';\r\nimport Spin from '../spin';\r\nimport DataSetComponent from '../data-set/DataSetComponent';\r\nimport TableContext from './TableContext';\r\nimport TableWrapper from './TableWrapper';\r\nimport TableTBody from './TableTBody';\r\nimport TableFooter from './TableFooter';\r\nimport { ColumnLock, ScrollPosition, SelectionMode, TableButtonType, TableEditMode, TableMode, TablePaginationPosition, TableQueryBarType, } from './enum';\r\nimport Switch from '../switch/Switch';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport { $l } from '../locale-context';\r\nimport TableQueryBar from './query-bar';\r\nimport { findIndexedSibling, getHeight, getPaginationPosition } from './utils';\r\nimport TableBody from './TableBody';\r\nexport const buttonsEnumType = PropTypes.oneOf([\r\n TableButtonType.add,\r\n TableButtonType.save,\r\n TableButtonType.remove,\r\n TableButtonType.delete,\r\n TableButtonType.reset,\r\n TableButtonType.query,\r\n TableButtonType.export,\r\n TableButtonType.expandAll,\r\n TableButtonType.collapseAll,\r\n]);\r\nlet Table = class Table extends DataSetComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.tableStore = new TableStore(this);\r\n }\r\n get currentRow() {\r\n return this.element.querySelector(`.${this.prefixCls}-row-current`);\r\n }\r\n get firstRow() {\r\n return this.element.querySelector(`.${this.prefixCls}-row:first-child`);\r\n }\r\n get lastRow() {\r\n return this.element.querySelector(`.${this.prefixCls}-row:last-child`);\r\n }\r\n saveResizeRef(node) {\r\n this.resizeLine = node;\r\n }\r\n handleSwitchChange(value) {\r\n this.tableStore.showCachedSeletion = !!value;\r\n }\r\n handleResize(width) {\r\n const { element, tableStore } = this;\r\n if (!element.offsetParent) {\r\n tableStore.styledHidden = true;\r\n }\r\n else if (!tableStore.hidden) {\r\n this.syncSizeInFrame(width);\r\n }\r\n else {\r\n tableStore.styledHidden = false;\r\n }\r\n }\r\n handleDataSetLoad() {\r\n this.initDefaultExpandedRows();\r\n }\r\n handleDataSetCreate({ record, dataSet }) {\r\n const { tableStore } = this;\r\n if (tableStore.inlineEdit) {\r\n if (tableStore.currentEditRecord) {\r\n tableStore.currentEditRecord.reset();\r\n dataSet.remove(record);\r\n }\r\n else {\r\n tableStore.currentEditRecord = record;\r\n }\r\n }\r\n }\r\n handleKeyDown(e) {\r\n const { tableStore } = this;\r\n if (!tableStore.editing) {\r\n try {\r\n const { dataSet } = this.props;\r\n switch (e.keyCode) {\r\n case KeyCode.UP:\r\n this.handleKeyDownUp(e);\r\n break;\r\n case KeyCode.DOWN:\r\n this.handleKeyDownDown(e);\r\n break;\r\n case KeyCode.RIGHT:\r\n this.handleKeyDownRight(e);\r\n break;\r\n case KeyCode.LEFT:\r\n this.handleKeyDownLeft(e);\r\n break;\r\n case KeyCode.PAGE_UP:\r\n e.preventDefault();\r\n dataSet.prePage();\r\n break;\r\n case KeyCode.PAGE_DOWN:\r\n e.preventDefault();\r\n dataSet.nextPage();\r\n break;\r\n case KeyCode.HOME:\r\n this.handleKeyDownHome(e);\r\n break;\r\n case KeyCode.END:\r\n this.handleKeyDownEnd(e);\r\n break;\r\n default:\r\n }\r\n }\r\n catch (error) {\r\n warning(false, error.message);\r\n }\r\n }\r\n const { onKeyDown = noop } = this.props;\r\n onKeyDown(e);\r\n }\r\n focusRow(row) {\r\n if (row) {\r\n const { index } = row.dataset;\r\n if (index) {\r\n const { dataSet } = this.props;\r\n const record = dataSet.findRecordById(index);\r\n if (record) {\r\n dataSet.current = record;\r\n }\r\n }\r\n }\r\n }\r\n async handleKeyDownHome(e) {\r\n e.preventDefault();\r\n const { dataSet } = this.props;\r\n if (!this.tableStore.isTree) {\r\n await dataSet.first();\r\n }\r\n this.focusRow(this.firstRow);\r\n }\r\n async handleKeyDownEnd(e) {\r\n e.preventDefault();\r\n const { dataSet } = this.props;\r\n if (!this.tableStore.isTree) {\r\n await dataSet.last();\r\n }\r\n this.focusRow(this.lastRow);\r\n }\r\n async handleKeyDownUp(e) {\r\n e.preventDefault();\r\n const { currentRow } = this;\r\n if (currentRow) {\r\n const previousElementSibling = findIndexedSibling(currentRow, -1);\r\n if (previousElementSibling) {\r\n this.focusRow(previousElementSibling);\r\n }\r\n else {\r\n const { dataSet } = this.props;\r\n await dataSet.prePage();\r\n this.focusRow(this.lastRow);\r\n }\r\n }\r\n }\r\n async handleKeyDownDown(e) {\r\n e.preventDefault();\r\n const { currentRow } = this;\r\n if (currentRow) {\r\n const nextElementSibling = findIndexedSibling(currentRow, 1);\r\n if (nextElementSibling) {\r\n this.focusRow(nextElementSibling);\r\n }\r\n else {\r\n const { dataSet } = this.props;\r\n await dataSet.nextPage();\r\n this.focusRow(this.firstRow);\r\n }\r\n }\r\n }\r\n handleKeyDownRight(e) {\r\n const { tableStore, props: { expandedRowRenderer, dataSet }, } = this;\r\n if (tableStore.isTree || expandedRowRenderer) {\r\n const { current } = dataSet;\r\n if (current) {\r\n e.preventDefault();\r\n tableStore.setRowExpanded(current, true);\r\n }\r\n }\r\n }\r\n handleKeyDownLeft(e) {\r\n const { tableStore, props: { expandedRowRenderer, dataSet }, } = this;\r\n if (tableStore.isTree || expandedRowRenderer) {\r\n const { current } = dataSet;\r\n if (current) {\r\n e.preventDefault();\r\n tableStore.setRowExpanded(current, false);\r\n }\r\n }\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'columns',\r\n 'header',\r\n 'footer',\r\n 'border',\r\n 'style',\r\n 'selectionMode',\r\n 'onRow',\r\n 'rowRenderer',\r\n 'buttons',\r\n 'rowHeight',\r\n 'queryFields',\r\n 'queryFieldsLimit',\r\n 'queryBar',\r\n 'defaultRowExpanded',\r\n 'expandRowByClick',\r\n 'expandedRowRenderer',\r\n 'expandIconColumnIndex',\r\n 'indentSize',\r\n 'filter',\r\n 'mode',\r\n 'editMode',\r\n 'filterBarFieldName',\r\n 'filterBarPlaceholder',\r\n 'pagination',\r\n 'highLightRow',\r\n 'columnResizable',\r\n 'pristine',\r\n ]);\r\n otherProps.onKeyDown = this.handleKeyDown;\r\n const { rowHeight } = this.tableStore;\r\n if (rowHeight !== 'auto') {\r\n otherProps.style = { lineHeight: pxToRem(rowHeight) };\r\n }\r\n return otherProps;\r\n }\r\n getClassName() {\r\n const { prefixCls, tableStore: { border, rowHeight }, } = this;\r\n return super.getClassName(`${prefixCls}-scroll-position-left`, {\r\n [`${prefixCls}-bordered`]: border,\r\n [`${prefixCls}-row-height-fixed`]: isNumber(rowHeight),\r\n });\r\n }\r\n getWrapperProps(props = {}) {\r\n const { style } = this.props;\r\n const { tableStore } = this;\r\n const newStyle = omit(style, ['width', 'height']);\r\n if (style && style.width !== undefined && style.width !== 'auto') {\r\n newStyle.width = Math.max(style.width, tableStore.leftLeafColumnsWidth + tableStore.rightLeafColumnsWidth + defaultMinWidth);\r\n }\r\n return super.getWrapperProps({\r\n style: newStyle,\r\n ...props,\r\n });\r\n }\r\n componentWillMount() {\r\n super.componentWillMount();\r\n this.initDefaultExpandedRows();\r\n this.processDataSetListener(true);\r\n }\r\n componentDidMount() {\r\n this.syncSize();\r\n this.syncSizeInFrame();\r\n }\r\n componentWillReceiveProps(nextProps, nextContext) {\r\n super.componentWillReceiveProps(nextProps, nextContext);\r\n this.processDataSetListener(false);\r\n this.tableStore.setProps(nextProps);\r\n this.processDataSetListener(true);\r\n }\r\n componentWillUnmount() {\r\n this.processDataSetListener(false);\r\n }\r\n processDataSetListener(flag) {\r\n const { isTree, dataSet, inlineEdit } = this.tableStore;\r\n if (dataSet) {\r\n const handler = flag ? dataSet.addEventListener : dataSet.removeEventListener;\r\n if (isTree) {\r\n handler.call(dataSet, 'load', this.handleDataSetLoad);\r\n }\r\n if (inlineEdit) {\r\n handler.call(dataSet, 'create', this.handleDataSetCreate);\r\n }\r\n }\r\n }\r\n render() {\r\n const { prefixCls, tableStore, tableStore: { overflowX, isAnyColumnsLeftLock, isAnyColumnsRightLock }, props: { dataSet, buttons, queryFields, queryFieldsLimit, filterBarFieldName, filterBarPlaceholder, }, } = this;\r\n const content = this.getTable();\r\n const context = { tableStore };\r\n const pagination = this.getPagination(TablePaginationPosition.top);\r\n return (<ReactResizeObserver resizeProp=\"width\" onResize={this.handleResize}>\n <div {...this.getWrapperProps()}>\n <TableContext.Provider value={context}>\n {this.getHeader()}\n <TableQueryBar prefixCls={prefixCls} buttons={buttons} pagination={pagination} queryFields={queryFields} queryFieldsLimit={queryFieldsLimit} filterBarFieldName={filterBarFieldName} filterBarPlaceholder={filterBarPlaceholder}/>\n <Spin key=\"content\" dataSet={dataSet}>\n <div {...this.getOtherProps()}>\n <div className={`${prefixCls}-content`}>\n {content}\n {isAnyColumnsLeftLock && overflowX && this.getLeftFixedTable()}\n {isAnyColumnsRightLock && overflowX && this.getRightFixedTable()}\n <div ref={this.saveResizeRef} className={`${prefixCls}-split-line`}/>\n </div>\n {this.getFooter()}\n </div>\n </Spin>\n {this.getPagination(TablePaginationPosition.bottom)}\n </TableContext.Provider>\n </div>\n </ReactResizeObserver>);\r\n }\r\n handleBodyScroll(e) {\r\n if (this.scrollId !== undefined) {\r\n raf.cancel(this.scrollId);\r\n }\r\n const { currentTarget } = e;\r\n e.persist();\r\n this.scrollId = raf(() => {\r\n this.handleBodyScrollTop(e, currentTarget);\r\n this.handleBodyScrollLeft(e, currentTarget);\r\n });\r\n }\r\n handleBodyScrollTop(e, currentTarget) {\r\n const { target } = e;\r\n if (this.tableStore.height === undefined ||\r\n currentTarget !== target ||\r\n target === this.tableFootWrap) {\r\n return;\r\n }\r\n const fixedColumnsBodyLeft = this.fixedColumnsBodyLeft;\r\n const bodyTable = this.tableBodyWrap;\r\n const fixedColumnsBodyRight = this.fixedColumnsBodyRight;\r\n const { scrollTop } = target;\r\n if (scrollTop !== this.lastScrollTop) {\r\n if (fixedColumnsBodyLeft && target !== fixedColumnsBodyLeft) {\r\n fixedColumnsBodyLeft.scrollTop = scrollTop;\r\n }\r\n if (bodyTable && target !== bodyTable) {\r\n bodyTable.scrollTop = scrollTop;\r\n }\r\n if (fixedColumnsBodyRight && target !== fixedColumnsBodyRight) {\r\n fixedColumnsBodyRight.scrollTop = scrollTop;\r\n }\r\n }\r\n this.lastScrollTop = scrollTop;\r\n }\r\n handleBodyScrollLeft(e, currentTarget) {\r\n const { target } = e;\r\n const headTable = this.tableHeadWrap;\r\n const bodyTable = this.tableBodyWrap;\r\n const footTable = this.tableFootWrap;\r\n if (this.tableStore.overflowX === undefined ||\r\n currentTarget !== target ||\r\n target === this.fixedColumnsBodyRight ||\r\n target === this.fixedColumnsBodyLeft) {\r\n return;\r\n }\r\n const { scrollLeft } = target;\r\n if (scrollLeft !== this.lastScrollLeft) {\r\n if (headTable && target !== headTable) {\r\n headTable.scrollLeft = scrollLeft;\r\n }\r\n if (bodyTable && target !== bodyTable) {\r\n bodyTable.scrollLeft = scrollLeft;\r\n }\r\n if (footTable && target !== footTable) {\r\n footTable.scrollLeft = scrollLeft;\r\n }\r\n this.setScrollPositionClassName(target);\r\n }\r\n this.lastScrollLeft = scrollLeft;\r\n }\r\n setScrollPositionClassName(target) {\r\n if (this.tableStore.isAnyColumnsLock) {\r\n const node = target || this.tableBodyWrap;\r\n if (node) {\r\n const scrollToLeft = node.scrollLeft === 0;\r\n const table = node.querySelector('table');\r\n const scrollToRight = table && node.scrollLeft >= table.offsetWidth - node.offsetWidth;\r\n if (scrollToLeft && scrollToRight) {\r\n this.setScrollPosition(ScrollPosition.both);\r\n }\r\n else if (scrollToLeft) {\r\n this.setScrollPosition(ScrollPosition.left);\r\n }\r\n else if (scrollToRight) {\r\n this.setScrollPosition(ScrollPosition.right);\r\n }\r\n else {\r\n this.setScrollPosition(ScrollPosition.middle);\r\n }\r\n }\r\n }\r\n }\r\n setScrollPosition(position) {\r\n if (this.scrollPosition !== position) {\r\n this.scrollPosition = position;\r\n const { prefixCls } = this;\r\n const cls = classes(this.element).remove(new RegExp(`^${prefixCls}-scroll-position-.+$`));\r\n if (position === ScrollPosition.both) {\r\n cls.add(`${prefixCls}-scroll-position-left`).add(`${prefixCls}-scroll-position-right`);\r\n }\r\n else {\r\n cls.add(`${prefixCls}-scroll-position-${position}`);\r\n }\r\n }\r\n }\r\n renderTable(hasHeader, hasBody, hasFooter, lock) {\r\n const { prefixCls } = this;\r\n return (<TableWrapper prefixCls={prefixCls} key=\"tableWrapper\" lock={lock} hasBody={hasBody} hasHeader={hasHeader} hasFooter={hasFooter}>\n {hasHeader && this.getTableHeader(lock)}\n {hasBody && this.getTableBody(lock)}\n {hasFooter && this.getTableFooter(lock)}\n </TableWrapper>);\r\n }\r\n getHeader() {\r\n const { prefixCls, props: { header, dataSet }, } = this;\r\n if (header) {\r\n const data = dataSet ? dataSet.records : [];\r\n return (<div key=\"header\" className={`${prefixCls}-header`}>\n {typeof header === 'function' ? header(data) : header}\n </div>);\r\n }\r\n }\r\n getFooter() {\r\n const { prefixCls, props: { footer, dataSet }, } = this;\r\n if (footer) {\r\n const data = dataSet ? dataSet.records : [];\r\n return (<div key=\"footer\" className={`${prefixCls}-footer`}>\n {typeof footer === 'function' ? footer(data) : footer}\n </div>);\r\n }\r\n }\r\n getPagination(position) {\r\n const { prefixCls, props: { dataSet }, tableStore: { pagination }, } = this;\r\n if (pagination !== false && dataSet && dataSet.paging) {\r\n const paginationPosition = getPaginationPosition(pagination);\r\n if (paginationPosition === TablePaginationPosition.both || paginationPosition === position) {\r\n const paginationProps = omit(pagination, 'position');\r\n return (<Pagination key={`pagination-${position}`} {...paginationProps} className={classNames(`${prefixCls}-pagination`, paginationProps.className)} dataSet={dataSet}>\n {this.getCacheSelectionSwitch()}\n </Pagination>);\r\n }\r\n }\r\n }\r\n getCacheSelectionSwitch() {\r\n const { props: { dataSet }, prefixCls, } = this;\r\n if (dataSet && dataSet.cacheSelectionKeys && dataSet.cachedSelected.length) {\r\n const { showCachedSeletion } = this.tableStore;\r\n return (<Tooltip title={$l('Table', showCachedSeletion ? 'hide_cached_seletion' : 'show_cached_seletion')}>\n <Switch className={`${prefixCls}-switch`} checked={showCachedSeletion} onChange={this.handleSwitchChange}/>\n </Tooltip>);\r\n }\r\n }\r\n getTable(lock) {\r\n const { prefixCls } = this;\r\n const { overflowX, height, hasFooter: footer } = this.tableStore;\r\n let tableHead;\r\n let tableBody;\r\n let tableFooter;\r\n if (height !== undefined || overflowX) {\r\n const { lockColumnsBodyRowsHeight, rowHeight } = this.tableStore;\r\n let bodyHeight = height;\r\n let tableHeadRef;\r\n let tableBodyRef;\r\n let tableFootRef;\r\n if (!lock) {\r\n tableHeadRef = node => (this.tableHeadWrap = node);\r\n tableFootRef = node => (this.tableFootWrap = node);\r\n tableBodyRef = node => (this.tableBodyWrap = node);\r\n }\r\n else if (lock === 'right') {\r\n tableBodyRef = node => (this.fixedColumnsBodyRight = node);\r\n }\r\n else {\r\n tableBodyRef = node => (this.fixedColumnsBodyLeft = node);\r\n }\r\n if (bodyHeight !== undefined) {\r\n bodyHeight = Math.max(bodyHeight, isNumber(rowHeight) ? rowHeight : lockColumnsBodyRowsHeight[0] || 0);\r\n if (lock && !footer) {\r\n bodyHeight -= measureScrollbar();\r\n }\r\n }\r\n tableHead = (<div key=\"tableHead\" ref={tableHeadRef} className={`${prefixCls}-head`}>\n {this.renderTable(true, false, false, lock)}\n </div>);\r\n tableBody = (<TableBody key=\"tableBody\" getRef={tableBodyRef} prefixCls={prefixCls} lock={lock} height={bodyHeight} onScroll={this.handleBodyScroll}>\n {this.renderTable(false, true, false, lock)}\n </TableBody>);\r\n if (footer) {\r\n tableFooter = (<div key=\"tableFooter\" ref={tableFootRef} className={`${prefixCls}-foot`} onScroll={this.handleBodyScroll}>\n {this.renderTable(false, false, true, lock)}\n </div>);\r\n }\r\n }\r\n else {\r\n tableBody = this.renderTable(true, true, footer, lock);\r\n }\r\n return [tableHead, tableBody, tableFooter];\r\n }\r\n getLeftFixedTable() {\r\n const { overflowX, height } = this.tableStore;\r\n if (!overflowX && height === undefined) {\r\n return;\r\n }\r\n const { prefixCls } = this;\r\n const table = this.getTable(ColumnLock.left);\r\n return <div className={`${prefixCls}-fixed-left`}>{table}</div>;\r\n }\r\n getRightFixedTable() {\r\n const { overflowX, height } = this.tableStore;\r\n if (!overflowX && height === undefined) {\r\n return;\r\n }\r\n const { prefixCls } = this;\r\n const table = this.getTable(ColumnLock.right);\r\n return <div className={`${prefixCls}-fixed-right`}>{table}</div>;\r\n }\r\n getTableBody(lock) {\r\n const { prefixCls, props: { indentSize }, } = this;\r\n return <TableTBody key=\"tbody\" prefixCls={prefixCls} lock={lock} indentSize={indentSize}/>;\r\n }\r\n getTableHeader(lock) {\r\n const { prefixCls, props: { dataSet }, } = this;\r\n return <TableHeader key=\"thead\" prefixCls={prefixCls} lock={lock} dataSet={dataSet}/>;\r\n }\r\n getTableFooter(lock) {\r\n const { prefixCls, props: { dataSet }, } = this;\r\n return <TableFooter key=\"tfoot\" prefixCls={prefixCls} lock={lock} dataSet={dataSet}/>;\r\n }\r\n getStyleHeight() {\r\n const { style } = this.props;\r\n if (style) {\r\n return toPx(style.height);\r\n }\r\n }\r\n syncSizeInFrame(width = this.getWidth()) {\r\n if (this.nextFrameActionId !== undefined) {\r\n raf.cancel(this.nextFrameActionId);\r\n }\r\n this.nextFrameActionId = raf(this.syncSize.bind(this, width));\r\n }\r\n syncSize(width = this.getWidth()) {\r\n const { element, tableStore } = this;\r\n if (element) {\r\n tableStore.width = Math.floor(width);\r\n const { prefixCls } = this;\r\n let height = this.getStyleHeight();\r\n if (element && isNumber(height)) {\r\n const tableTitle = element.querySelector(`.${prefixCls}-title`);\r\n const tableHeader = element.querySelector(`.${prefixCls}-thead`);\r\n const tableFooter = element.querySelector(`.${prefixCls}-footer`);\r\n const tableFootWrap = element.querySelector(`.${prefixCls}-foot`);\r\n if (tableTitle) {\r\n height -= getHeight(tableTitle);\r\n }\r\n if (tableHeader) {\r\n height -= getHeight(tableHeader);\r\n }\r\n if (tableFooter) {\r\n height -= getHeight(tableFooter);\r\n }\r\n if (tableFootWrap) {\r\n height -= getHeight(tableFootWrap);\r\n }\r\n this.tableStore.height = height;\r\n }\r\n }\r\n this.setScrollPositionClassName();\r\n }\r\n initDefaultExpandedRows() {\r\n const { tableStore, props: { dataSet, defaultRowExpanded }, } = this;\r\n if (tableStore.isTree && defaultRowExpanded && !dataSet.props.expandField) {\r\n tableStore.expandedRows = dataSet.reduce((array, record) => {\r\n if (record.children) {\r\n array.push(record.key);\r\n }\r\n return array;\r\n }, []);\r\n }\r\n }\r\n getWidth() {\r\n const { wrapper } = this;\r\n if (wrapper) {\r\n return Math.floor(wrapper.getBoundingClientRect().width);\r\n }\r\n return 0;\r\n }\r\n};\r\nTable.displayName = 'Table';\r\nTable.Column = Column;\r\nTable.propTypes = {\r\n columns: PropTypes.array,\r\n /**\r\n * 表头\r\n */\r\n header: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\r\n /**\r\n * 表脚\r\n */\r\n footer: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\r\n /**\r\n * 是否显示边框\r\n * @default true\r\n */\r\n border: PropTypes.bool,\r\n /**\r\n * 功能按钮\r\n * 可选值:`add` `delete` `remove` `save` `query` `expandAll` `collapseAll` 或 自定义按钮\r\n */\r\n buttons: PropTypes.arrayOf(PropTypes.oneOfType([\r\n buttonsEnumType,\r\n PropTypes.arrayOf(PropTypes.oneOfType([buttonsEnumType, PropTypes.object])),\r\n PropTypes.node,\r\n ])),\r\n /**\r\n * 自定义查询字段组件\r\n * 默认会根据queryDataSet中定义的field类型自动匹配组件, 匹配类型如下\r\n * lovCode => Lov\r\n * lookupCode => Select\r\n * type:number => NumberField\r\n * type:date => DatePicker\r\n * type:dateTime => DatePicker[mode=dateTime]\r\n * type:week => DatePicker[mode=week]\r\n * default => TextField\r\n */\r\n queryFields: PropTypes.object,\r\n /**\r\n * 头部显示的查询字段的数量,超出限制的查询字段放入弹出窗口\r\n * @default 1\r\n */\r\n queryFieldsLimit: PropTypes.number,\r\n /**\r\n * 显示查询条\r\n * @default true\r\n */\r\n queryBar: PropTypes.oneOfType([\r\n PropTypes.oneOf([\r\n TableQueryBarType.advancedBar,\r\n TableQueryBarType.normal,\r\n TableQueryBarType.bar,\r\n TableQueryBarType.none,\r\n ]),\r\n PropTypes.func,\r\n ]),\r\n /**\r\n * 行高\r\n * @default 30\r\n */\r\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['auto'])]),\r\n defaultRowExpanded: PropTypes.bool,\r\n expandRowByClick: PropTypes.bool,\r\n indentSize: PropTypes.number,\r\n filter: PropTypes.func,\r\n mode: PropTypes.oneOf([TableMode.list, TableMode.tree]),\r\n editMode: PropTypes.oneOf([TableEditMode.inline, TableEditMode.cell]),\r\n filterBarFieldName: PropTypes.string,\r\n filterBarPlaceholder: PropTypes.string,\r\n highLightRow: PropTypes.bool,\r\n ...DataSetComponent.propTypes,\r\n};\r\nTable.defaultProps = {\r\n suffixCls: 'table',\r\n tabIndex: 0,\r\n selectionMode: SelectionMode.rowbox,\r\n queryFields: {},\r\n defaultRowExpanded: false,\r\n expandRowByClick: false,\r\n indentSize: 15,\r\n filterBarFieldName: 'params',\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], Table.prototype, \"saveResizeRef\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Table.prototype, \"handleSwitchChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Table.prototype, \"handleResize\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Table.prototype, \"handleDataSetLoad\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Table.prototype, \"handleDataSetCreate\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Table.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Table.prototype, \"handleBodyScroll\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Table.prototype, \"syncSize\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Table.prototype, \"initDefaultExpandedRows\", null);\r\nTable = tslib_1.__decorate([\r\n observer\r\n], Table);\r\nexport default Table;\r\n","import Table from './Table';\r\nexport default Table;\r\n","import ObserverTextField from './TextField';\r\nexport default ObserverTextField;\r\n","import ObserverNumberField from './NumberField';\r\nexport default ObserverNumberField;\r\n","import Currency from './Currency';\r\nexport default Currency;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport { observer } from 'mobx-react';\r\nimport { action, observable } from 'mobx';\r\nimport { TextField } from '../text-field/TextField';\r\nimport autobind from '../_util/autobind';\r\nimport Icon from '../icon';\r\n// let selectionStart;\r\n// let selectionEnd;\r\nlet Password = class Password extends TextField {\r\n // let selectionStart;\r\n // let selectionEnd;\r\n constructor() {\r\n super(...arguments);\r\n this.type = 'password';\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['reveal']);\r\n }\r\n getOtherPrevNode() {\r\n return <input tabIndex={-1} className={`${this.prefixCls}-fix-autofill`}/>;\r\n }\r\n getInnerSpanButton() {\r\n const { reveal } = this.props;\r\n if (reveal) {\r\n return this.wrapperInnerSpanButton(<Icon type={this.reveal ? 'visibility' : 'visibility_off'} onClick={this.handleToggleReveal}/>);\r\n }\r\n }\r\n handleToggleReveal(e) {\r\n e.preventDefault();\r\n if (!this.isFocused) {\r\n this.focus();\r\n }\r\n const target = this.element;\r\n if (target) {\r\n if (target.type === 'password') {\r\n this.doReveal(target);\r\n }\r\n else {\r\n this.resetReveal(target);\r\n }\r\n }\r\n }\r\n doReveal(target) {\r\n this.selectionEnd = target.selectionEnd;\r\n this.selectionStart = target.selectionStart;\r\n target.type = 'text';\r\n this.type = target.type;\r\n this.reveal = true;\r\n }\r\n resetReveal(target) {\r\n const { selectionStart, selectionEnd } = this;\r\n target.type = 'password';\r\n this.type = target.type;\r\n if (typeof selectionStart !== 'undefined' && typeof selectionEnd !== 'undefined') {\r\n target.setSelectionRange(selectionStart, selectionEnd);\r\n this.selectionStart = undefined;\r\n this.selectionEnd = undefined;\r\n }\r\n this.reveal = false;\r\n }\r\n};\r\nPassword.displayName = 'Password';\r\nPassword.propTypes = {\r\n /**\r\n * 是否可揭示\r\n * @default true\r\n */\r\n reveal: PropTypes.bool,\r\n ...TextField.propTypes,\r\n};\r\nPassword.defaultProps = {\r\n ...TextField.defaultProps,\r\n suffixCls: 'password',\r\n reveal: true,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], Password.prototype, \"reveal\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], Password.prototype, \"handleToggleReveal\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Password.prototype, \"doReveal\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Password.prototype, \"resetReveal\", null);\r\nPassword = tslib_1.__decorate([\r\n observer\r\n], Password);\r\nexport default Password;\r\n","import Password from './Password';\r\nexport default Password;\r\n","import UrlField from './UrlField';\r\nexport default UrlField;\r\n","import EmailField from './EmailField';\r\nexport default EmailField;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport { NumberField } from '../number-field/NumberField';\r\nimport autobind from '../_util/autobind';\r\nimport EventManager from '../_util/EventManager';\r\nimport { FieldType } from '../data-set/enum';\r\nlet Range = class Range extends NumberField {\r\n constructor() {\r\n super(...arguments);\r\n this.dragEvent = new EventManager(typeof window !== 'undefined' && document);\r\n this.type = 'range';\r\n }\r\n getFieldType() {\r\n return FieldType.number;\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['vertical']);\r\n }\r\n getValue() {\r\n return super.getValue() || 0;\r\n }\r\n getWrapperClassNames() {\r\n const { props: { vertical }, prefixCls, } = this;\r\n return super.getWrapperClassNames({\r\n [`${prefixCls}-vertical`]: vertical,\r\n });\r\n }\r\n renderWrapper() {\r\n return (<label key=\"wrapper\" {...this.getWrapperProps()}>\n <input {...this.getOtherProps()} value={this.getValue()}/>\n {this.renderTrack()}\n {this.renderFloatLabel()}\n </label>);\r\n }\r\n renderTrack() {\r\n const percent = this.getPercent();\r\n const { props: { vertical }, prefixCls, } = this;\r\n return (<div className={`${prefixCls}-track`} onMouseDown={this.isReadOnly() || this.isDisabled() ? undefined : this.handleTrackClick}>\n <div className={`${prefixCls}-draghandle`} style={vertical ? { bottom: percent } : { left: percent }}/>\n <div className={`${prefixCls}-selection`} style={vertical ? { height: percent } : { width: percent }}/>\n </div>);\r\n }\r\n handleTrackClick(e) {\r\n this.track = e.currentTarget;\r\n this.handleDrag(e);\r\n this.handleDragStart();\r\n }\r\n handleDragStart() {\r\n this.dragEvent\r\n .addEventListener('mousemove', this.handleDrag)\r\n .addEventListener('mouseup', this.handleDragEnd);\r\n }\r\n handleDragEnd() {\r\n this.dragEvent\r\n .removeEventListener('mousemove', this.handleDrag)\r\n .removeEventListener('mouseup', this.handleDragEnd);\r\n }\r\n handleDrag(e) {\r\n const { track } = this;\r\n const { vertical } = this.props;\r\n const max = this.getProp('max');\r\n const min = this.getProp('min');\r\n const step = this.getProp('step');\r\n const { bottom, left } = track.getBoundingClientRect();\r\n const length = vertical ? bottom - e.clientY : e.clientX - left;\r\n const totalLength = vertical ? track.clientHeight : track.clientWidth;\r\n const oneStepLength = (1 / ((max - min) / step)) * totalLength;\r\n let value = min;\r\n if (length <= 0) {\r\n value = min;\r\n }\r\n else if (length >= totalLength) {\r\n value = max;\r\n }\r\n else {\r\n value = Math.round(length / oneStepLength) * step + min;\r\n }\r\n this.setValue(value);\r\n }\r\n getPercent() {\r\n const value = this.getValue();\r\n const max = this.getProp('max');\r\n const min = this.getProp('min');\r\n if (value <= min) {\r\n return 0;\r\n }\r\n if (value >= max) {\r\n return '100%';\r\n }\r\n return `${((value - min) / (max - min)) * 100}%`;\r\n }\r\n};\r\nRange.displayName = 'Range';\r\nRange.propTypes = {\r\n /**\r\n * 是否垂直方向\r\n * @default\r\n * false\r\n */\r\n vertical: PropTypes.bool,\r\n ...NumberField.propTypes,\r\n};\r\nRange.defaultProps = {\r\n ...NumberField.defaultProps,\r\n suffixCls: 'range',\r\n min: 0,\r\n step: 1,\r\n max: 100,\r\n vertical: false,\r\n};\r\ntslib_1.__decorate([\r\n autobind\r\n], Range.prototype, \"handleTrackClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Range.prototype, \"handleDragStart\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Range.prototype, \"handleDragEnd\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Range.prototype, \"handleDrag\", null);\r\nRange = tslib_1.__decorate([\r\n observer\r\n], Range);\r\nexport default Range;\r\n","export var ResizeType;\r\n(function (ResizeType) {\r\n ResizeType[\"both\"] = \"both\";\r\n ResizeType[\"vertical\"] = \"vertical\";\r\n ResizeType[\"horizontal\"] = \"horizontal\";\r\n ResizeType[\"none\"] = \"none\";\r\n})(ResizeType || (ResizeType = {}));\r\n","import Range from './Range';\r\nexport default Range;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport isString from 'lodash/isString';\r\nimport omit from 'lodash/omit';\r\nimport PropTypes from 'prop-types';\r\nimport { TextField } from '../text-field/TextField';\r\nimport { ResizeType } from './enum';\r\nlet TextArea = class TextArea extends TextField {\r\n getOtherProps() {\r\n const { resize } = this.props;\r\n const otherProps = omit(super.getOtherProps(), ['resize']);\r\n const { style = {} } = otherProps;\r\n style.resize = resize;\r\n if (resize !== ResizeType.none) {\r\n style.transition = 'none';\r\n }\r\n otherProps.style = style;\r\n return otherProps;\r\n }\r\n renderWrapper() {\r\n const text = this.getTextNode();\r\n return (<div key=\"wrapper\" {...this.getWrapperProps()}>\n {this.renderPlaceHolder()}\n <label>\n <textarea {...this.getOtherProps()} readOnly={!this.editable} value={isString(text) ? text : this.getText(this.getValue())}/>\n {this.renderFloatLabel()}\n </label>\n </div>);\r\n }\r\n handleEnterDown() { }\r\n};\r\nTextArea.displayName = 'TextArea';\r\nTextArea.propTypes = {\r\n cols: PropTypes.number,\r\n rows: PropTypes.number,\r\n resize: PropTypes.oneOf([\r\n ResizeType.vertical,\r\n ResizeType.horizontal,\r\n ResizeType.none,\r\n ResizeType.both,\r\n ]),\r\n ...TextField.propTypes,\r\n};\r\nTextArea.defaultProps = {\r\n ...TextField.defaultProps,\r\n suffixCls: 'textarea',\r\n resize: ResizeType.none,\r\n rows: 4,\r\n};\r\nTextArea = tslib_1.__decorate([\r\n observer\r\n], TextArea);\r\nexport default TextArea;\r\n","import TextArea from './TextArea';\r\nexport default TextArea;\r\n","import DatePicker from './DatePicker';\r\nexport default DatePicker;\r\n","import DateTimePicker from './DateTimePicker';\r\nexport default DateTimePicker;\r\n","import DatePicker from '../date-picker/DatePicker';\r\nimport { ViewMode } from '../date-picker/enum';\r\nexport default class TimePicker extends DatePicker {\r\n getLimitWithType(limit, _minOrMax) {\r\n return limit;\r\n }\r\n}\r\nTimePicker.displayName = 'TimePicker';\r\nTimePicker.defaultProps = {\r\n ...DatePicker.defaultProps,\r\n mode: ViewMode.time,\r\n};\r\n","import TimePicker from './TimePicker';\r\nexport default TimePicker;\r\n","import WeekPicker from './WeekPicker';\r\nexport default WeekPicker;\r\n","import MonthPicker from './MonthPicker';\r\nexport default MonthPicker;\r\n","import YearPicker from './YearPicker';\r\nexport default YearPicker;\r\n","import Colorpicker from './ColorPicker';\r\nexport default Colorpicker;\r\n","import Tabs from 'choerodon-ui/lib/tabs';\r\nexport default Tabs;\r\n","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport Icon from '../icon';\r\nexport default class IconItem extends PureComponent {\r\n constructor() {\r\n super(...arguments);\r\n this.handleClick = () => {\r\n const { onSelect, type } = this.props;\r\n onSelect(type);\r\n };\r\n }\r\n render() {\r\n const { prefixCls, type, active } = this.props;\r\n return (<li className={classNames({ [`${prefixCls}-item-selected`]: active })}>\n <div onClick={this.handleClick}>\n <Icon type={type}/>\n <p>{type}</p>\n </div>\n </li>);\r\n }\r\n}\r\nIconItem.displayName = 'IconItem';\r\nIconItem.propTypes = {\r\n prefixCls: PropTypes.string,\r\n active: PropTypes.bool.isRequired,\r\n type: PropTypes.string.isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n};\r\n","import * as tslib_1 from \"tslib\";\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer, PropTypes as MobxPropTypes } from 'mobx-react';\r\nimport { action, observable } from 'mobx';\r\nimport { pxToRem } from 'choerodon-ui/lib/_util/UnitConvertor';\r\nimport measureScrollbar from 'choerodon-ui/lib/_util/measureScrollbar';\r\nimport IconItem from './IconItem';\r\nimport Pagination from '../pagination/Pagination';\r\nimport autobind from '../_util/autobind';\r\nlet IconCategory = class IconCategory extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.setPage(props.page);\r\n }\r\n saveRef(node) {\r\n this.ul = node;\r\n }\r\n handlePageChange(page) {\r\n this.setPage(page);\r\n const { onPageChange, category } = this.props;\r\n if (onPageChange) {\r\n onPageChange(page, category);\r\n }\r\n }\r\n handleItemSelect(icon) {\r\n const { onSelect } = this.props;\r\n onSelect(icon);\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.page && nextProps.page !== this.page) {\r\n this.setPage(nextProps.page);\r\n }\r\n }\r\n componentDidMount() {\r\n this.syncItemPosition();\r\n }\r\n componentDidUpdate() {\r\n this.syncItemPosition();\r\n }\r\n syncItemPosition() {\r\n const { props: { value, prefixCls }, ul, } = this;\r\n if (value && ul) {\r\n const item = ul.querySelector(`li.${prefixCls}-item-selected`);\r\n if (item) {\r\n const { offsetHeight, scrollTop } = ul;\r\n const { offsetTop, offsetHeight: height } = item;\r\n if (offsetTop < scrollTop) {\r\n ul.scrollTo(0, offsetTop);\r\n }\r\n else if (offsetTop + height > scrollTop + offsetHeight) {\r\n ul.scrollTo(0, offsetTop + height - offsetHeight);\r\n }\r\n }\r\n }\r\n }\r\n setPage(page = 1) {\r\n this.page = page;\r\n }\r\n renderPagination() {\r\n const { page, props: { paging, pageSize, prefixCls, icons }, } = this;\r\n const total = icons.length;\r\n if (paging && total > pageSize) {\r\n return (<Pagination key=\"page\" className={`${prefixCls}-pagination`} total={total} page={page} pageSize={pageSize} showSizeChanger={false} onChange={this.handlePageChange} style={{ right: pxToRem(measureScrollbar()) }}/>);\r\n }\r\n }\r\n renderIcons() {\r\n const { value, prefixCls } = this.props;\r\n return this.getIcons().map(icon => (<IconItem key={icon} prefixCls={prefixCls} type={icon} onSelect={this.handleItemSelect} active={value === icon}/>));\r\n }\r\n getIcons() {\r\n const { page, props: { paging, pageSize, icons }, } = this;\r\n if (paging && icons.length > pageSize) {\r\n return icons.slice((page - 1) * pageSize, page * pageSize);\r\n }\r\n return icons;\r\n }\r\n render() {\r\n const { props: { prefixCls }, } = this;\r\n return (<div className={`${prefixCls}-category`}>\n {this.renderPagination()}\n <ul key=\"icon-items\" ref={this.saveRef}>\n {this.renderIcons()}\n </ul>\n </div>);\r\n }\r\n};\r\nIconCategory.displayName = 'IconCategory';\r\nIconCategory.propTypes = {\r\n prefixCls: PropTypes.string,\r\n icons: MobxPropTypes.arrayOrObservableArrayOf(PropTypes.string).isRequired,\r\n value: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onPageChange: PropTypes.func,\r\n pageSize: PropTypes.number,\r\n page: PropTypes.number,\r\n paging: PropTypes.bool,\r\n};\r\nIconCategory.defaultProps = {\r\n paging: true,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], IconCategory.prototype, \"page\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], IconCategory.prototype, \"saveRef\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IconCategory.prototype, \"handlePageChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IconCategory.prototype, \"handleItemSelect\", null);\r\ntslib_1.__decorate([\r\n action\r\n], IconCategory.prototype, \"setPage\", null);\r\nIconCategory = tslib_1.__decorate([\r\n observer\r\n], IconCategory);\r\nexport default IconCategory;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action, computed, isArrayLike, observable, runInAction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport flatten from 'lodash/flatten';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport { getConfig } from 'choerodon-ui/lib/configure';\r\nimport TriggerField from '../trigger-field/TriggerField';\r\nimport Icon from '../icon';\r\nimport Tabs from '../tabs';\r\nimport { $l } from '../locale-context';\r\nimport IconCategory from './IconCategory';\r\nimport autobind from '../_util/autobind';\r\nimport { stopEvent } from '../_util/EventManager';\r\nconst COLUMNS = 5;\r\nlet IconPicker = class IconPicker extends TriggerField {\r\n constructor(props, context) {\r\n super(props, context);\r\n runInAction(() => {\r\n this.categoryPages = {};\r\n this.activeCategory = this.categoryKeys[0];\r\n });\r\n }\r\n get categories() {\r\n const icons = getConfig('icons');\r\n return isArrayLike(icons) ? { default: icons } : icons;\r\n }\r\n get categoryKeys() {\r\n return Object.keys(this.categories);\r\n }\r\n get selectedIndex() {\r\n return this.categories[this.activeCategory].indexOf(this.selectedIcon);\r\n }\r\n get filteredIcons() {\r\n const { text, categories } = this;\r\n if (text) {\r\n return flatten(this.categoryKeys.map(category => categories[category].filter(icon => icon.startsWith(text))));\r\n }\r\n return [];\r\n }\r\n get selectedIcon() {\r\n const { categories } = this;\r\n return this.selected || this.getValue() || categories[this.activeCategory][0];\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), ['pageSize']);\r\n }\r\n setActiveCategory(category) {\r\n this.activeCategory = category;\r\n const page = this.categoryPages[category];\r\n this.changeSelected(this.categories[category][(page - 1) * this.props.pageSize]);\r\n }\r\n setCategoryPage(page, category) {\r\n this.categoryPages[category] = page;\r\n this.changeSelected(this.categories[category][(page - 1) * this.props.pageSize]);\r\n }\r\n handleTabsChange(category) {\r\n this.setActiveCategory(category);\r\n }\r\n handleItemSelect(icon) {\r\n this.choose(icon);\r\n }\r\n handlePageChange(page, category) {\r\n this.setCategoryPage(page, category);\r\n }\r\n handleKeyDown(e) {\r\n if (!this.isDisabled() && !this.isReadOnly()) {\r\n if (this.popup) {\r\n switch (e.keyCode) {\r\n case KeyCode.RIGHT:\r\n stopEvent(e);\r\n this.handleKeyDownRight();\r\n break;\r\n case KeyCode.LEFT:\r\n stopEvent(e);\r\n this.handleKeyDownLeft();\r\n break;\r\n case KeyCode.DOWN:\r\n stopEvent(e);\r\n this.handleKeyDownDown();\r\n break;\r\n case KeyCode.UP:\r\n stopEvent(e);\r\n this.handleKeyDownUp();\r\n break;\r\n case KeyCode.END:\r\n stopEvent(e);\r\n this.handleKeyDownEnd();\r\n break;\r\n case KeyCode.HOME:\r\n stopEvent(e);\r\n this.handleKeyDownHome();\r\n break;\r\n case KeyCode.PAGE_UP:\r\n stopEvent(e);\r\n this.handleKeyDownPageUp();\r\n break;\r\n case KeyCode.PAGE_DOWN:\r\n stopEvent(e);\r\n this.handleKeyDownPageDown();\r\n break;\r\n case KeyCode.ENTER:\r\n e.preventDefault();\r\n this.handleKeyDownEnter();\r\n break;\r\n case KeyCode.TAB:\r\n this.handleKeyDownTab();\r\n break;\r\n case KeyCode.ESC:\r\n e.preventDefault();\r\n this.handleKeyDownEsc();\r\n break;\r\n default:\r\n }\r\n }\r\n else if (e.keyCode === KeyCode.SPACE) {\r\n e.preventDefault();\r\n this.handleKeyDownSpace();\r\n }\r\n }\r\n super.handleKeyDown(e);\r\n }\r\n handleKeyDownHome() {\r\n const { activeCategory, categoryPages, props: { pageSize }, } = this;\r\n const category = this.categories[activeCategory];\r\n const page = categoryPages[activeCategory] || 1;\r\n this.changeSelected(category[(page - 1) * pageSize]);\r\n }\r\n handleKeyDownEnd() {\r\n const { activeCategory, categoryPages, props: { pageSize }, } = this;\r\n const category = this.categories[activeCategory];\r\n const page = categoryPages[activeCategory] || 1;\r\n this.changeSelected(category[page * pageSize - 1] || category[category.length - 1]);\r\n }\r\n handleKeyDownLeftOrRight(isLeft) {\r\n const { activeCategory, selectedIndex, categoryPages, categories, categoryKeys, props: { pageSize }, } = this;\r\n const step = isLeft ? -1 : 1;\r\n let category = categories[activeCategory];\r\n let index = selectedIndex;\r\n if (index % COLUMNS === (isLeft ? 0 : COLUMNS - 1) ||\r\n (!isLeft && index === category.length - 1)) {\r\n const activeCategoryIndex = categoryKeys.indexOf(activeCategory);\r\n if (activeCategoryIndex !== (isLeft ? 0 : categoryKeys.length - 1)) {\r\n const newTabIndex = activeCategoryIndex + step;\r\n const newKey = categoryKeys[newTabIndex];\r\n this.setActiveCategory(newKey);\r\n const page = categoryPages[activeCategory] || 1;\r\n category = categories[newKey];\r\n const newPage = categoryPages[newKey] || 1;\r\n index += (newPage - page) * pageSize;\r\n if (!category[index]) {\r\n index = isLeft ? category.length - 1 : (newPage - 1) * pageSize;\r\n }\r\n }\r\n }\r\n else {\r\n index += step;\r\n }\r\n if (category[index]) {\r\n this.changeSelected(category[index]);\r\n }\r\n }\r\n handleKeyDownUpOrDown(isUP) {\r\n const { activeCategory, selectedIndex, categoryPages, props: { pageSize }, } = this;\r\n const step = isUP ? -1 : 1;\r\n const category = this.categories[activeCategory];\r\n let index = selectedIndex;\r\n const page = categoryPages[activeCategory] || 1;\r\n if (isUP\r\n ? index < (page - 1) * pageSize + COLUMNS && page > 1\r\n : index > page * pageSize - COLUMNS && page < Math.ceil(category.length / pageSize)) {\r\n this.setCategoryPage(page + step, activeCategory);\r\n }\r\n index += step * COLUMNS;\r\n if (category[index]) {\r\n this.changeSelected(category[index]);\r\n }\r\n }\r\n handleKeyDownLeft() {\r\n this.handleKeyDownLeftOrRight(true);\r\n }\r\n handleKeyDownRight() {\r\n this.handleKeyDownLeftOrRight(false);\r\n }\r\n handleKeyDownUp() {\r\n this.handleKeyDownUpOrDown(true);\r\n }\r\n handleKeyDownDown() {\r\n if (this.popup) {\r\n this.handleKeyDownUpOrDown(false);\r\n }\r\n else {\r\n this.expand();\r\n }\r\n }\r\n handleKeyDownPageUp() {\r\n const { activeCategory, selectedIndex, categoryPages, props: { pageSize }, } = this;\r\n const page = categoryPages[activeCategory] || 1;\r\n const category = this.categories[activeCategory];\r\n if (page > 1) {\r\n this.setCategoryPage(page - 1, activeCategory);\r\n this.changeSelected(category[selectedIndex - pageSize]);\r\n }\r\n }\r\n handleKeyDownPageDown() {\r\n const { activeCategory, selectedIndex, categoryPages, props: { pageSize }, } = this;\r\n const page = categoryPages[activeCategory] || 1;\r\n const category = this.categories[activeCategory];\r\n if (page < Math.ceil(category.length / pageSize)) {\r\n this.setCategoryPage(page + 1, activeCategory);\r\n this.changeSelected(category[selectedIndex + pageSize] || category[category.length - 1]);\r\n }\r\n }\r\n handleKeyDownEnter() {\r\n this.choose(this.selectedIcon);\r\n }\r\n handleKeyDownEsc() {\r\n this.collapse();\r\n }\r\n handleKeyDownTab() {\r\n this.collapse();\r\n }\r\n handleKeyDownSpace() {\r\n this.expand();\r\n }\r\n changeSelected(selected) {\r\n this.selected = selected;\r\n }\r\n choose(icon) {\r\n this.prepareSetValue(icon);\r\n this.changeSelected(icon);\r\n if (!this.multiple) {\r\n this.collapse();\r\n }\r\n }\r\n syncValueOnBlur(value) {\r\n if (this.filteredIcons.indexOf(value) !== -1) {\r\n this.choose(value);\r\n }\r\n else {\r\n this.setText(undefined);\r\n }\r\n }\r\n handlePopupAnimateAppear() { }\r\n handlePopupAnimateEnd() { }\r\n getPopupStyleFromAlign() {\r\n return undefined;\r\n }\r\n getTriggerIconFont() {\r\n return 'developer_board';\r\n }\r\n getPopupContent() {\r\n const { text } = this;\r\n if (text) {\r\n return this.renderFilteredIcons();\r\n }\r\n return this.renderIconCategories();\r\n }\r\n getPrefix() {\r\n const value = this.getValue();\r\n if (value) {\r\n return this.wrapperPrefix(<Icon type={value}/>);\r\n }\r\n }\r\n renderFilteredIcons() {\r\n const { prefixCls } = this;\r\n return (<div className={`${prefixCls}-single-tab`}>\n <IconCategory paging={false} value={this.selectedIcon} icons={this.filteredIcons} prefixCls={prefixCls} onSelect={this.handleItemSelect}/>\n </div>);\r\n }\r\n renderIconCategories() {\r\n const { activeCategory, prefixCls, props: { pageSize }, categories, categoryKeys, categoryPages, } = this;\r\n const { TabPane } = Tabs;\r\n if (categoryKeys.length > 1) {\r\n const tabs = categoryKeys.map(category => (<TabPane key={category} tab={$l('Icon', category)} className={`${prefixCls}-tab`}>\n <IconCategory page={categoryPages[category]} pageSize={pageSize} category={category} value={category === activeCategory ? this.selectedIcon : undefined} icons={categories[category]} prefixCls={prefixCls} onSelect={this.handleItemSelect} onPageChange={this.handlePageChange}/>\n </TabPane>));\r\n return (<div>\n <Tabs onChange={this.handleTabsChange} activeKey={activeCategory}>\n {tabs}\n </Tabs>\n </div>);\r\n }\r\n const category = categoryKeys[0];\r\n return (<div className={`${prefixCls}-single-tab`}>\n <IconCategory page={categoryPages[category]} pageSize={pageSize} category={category} value={category === activeCategory ? this.selectedIcon : undefined} icons={categories[category]} prefixCls={prefixCls} onSelect={this.handleItemSelect} onPageChange={this.handlePageChange}/>\n </div>);\r\n }\r\n};\r\nIconPicker.displayName = 'IconPicker';\r\nIconPicker.propTypes = {\r\n ...TriggerField.propTypes,\r\n pageSize: PropTypes.number,\r\n};\r\nIconPicker.defaultProps = {\r\n ...TriggerField.defaultProps,\r\n suffixCls: 'icon-picker',\r\n pageSize: 100,\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], IconPicker.prototype, \"activeCategory\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], IconPicker.prototype, \"selected\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], IconPicker.prototype, \"categoryPages\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], IconPicker.prototype, \"categories\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], IconPicker.prototype, \"categoryKeys\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], IconPicker.prototype, \"selectedIndex\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], IconPicker.prototype, \"filteredIcons\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], IconPicker.prototype, \"selectedIcon\", null);\r\ntslib_1.__decorate([\r\n action\r\n], IconPicker.prototype, \"setActiveCategory\", null);\r\ntslib_1.__decorate([\r\n action\r\n], IconPicker.prototype, \"setCategoryPage\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IconPicker.prototype, \"handleTabsChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IconPicker.prototype, \"handleItemSelect\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IconPicker.prototype, \"handlePageChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], IconPicker.prototype, \"handleKeyDown\", null);\r\ntslib_1.__decorate([\r\n action\r\n], IconPicker.prototype, \"changeSelected\", null);\r\nIconPicker = tslib_1.__decorate([\r\n observer\r\n], IconPicker);\r\nexport default IconPicker;\r\n","import IconPicker from './IconPicker';\r\nexport default IconPicker;\r\n","import IntlField from './IntlField';\r\nexport default IntlField;\r\n","import Lov from './Lov';\r\nexport default Lov;\r\n","import ObserverSelect from './Select';\r\nexport default ObserverSelect;\r\n","import SelectBox from './SelectBox';\r\nexport default SelectBox;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport { computed } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport classNames from 'classnames';\r\nimport omit from 'lodash/omit';\r\nimport ObserverCheckBox from '../check-box/CheckBox';\r\nimport { $l } from '../locale-context';\r\nimport ObserverTextField from '../text-field/TextField';\r\nimport Icon from '../icon';\r\nimport { getItemKey, Select } from '../select/Select';\r\nimport autobind from '../_util/autobind';\r\nimport { stopPropagation } from '../_util/EventManager';\r\nimport ViewComponent from '../core/ViewComponent';\r\nlet TransferList = class TransferList extends Select {\r\n get popup() {\r\n return true;\r\n }\r\n get header() {\r\n const { prefixCls, multiple, observableProps: { header }, } = this;\r\n if (multiple || header) {\r\n return (<div className={`${prefixCls}-header`}>\n {this.getHeaderSelected()}\n {header && <span className={`${prefixCls}-header-title`}>{header}</span>}\n </div>);\r\n }\r\n return undefined;\r\n }\r\n get footer() {\r\n const { prefixCls, filteredOptions, observableProps: { footer }, } = this;\r\n if (footer) {\r\n return <div className={`${prefixCls}-footer`}>{footer(filteredOptions)}</div>;\r\n }\r\n return undefined;\r\n }\r\n getOtherProps() {\r\n return omit(super.getOtherProps(), [\r\n 'type',\r\n 'autoComplete',\r\n 'ref',\r\n 'body',\r\n 'footer',\r\n 'header',\r\n 'selected',\r\n 'onChange',\r\n 'onSelect',\r\n 'onSelectAll',\r\n 'onKeyDown',\r\n ]);\r\n }\r\n getObservableProps(props, context) {\r\n return {\r\n ...super.getObservableProps(props, context),\r\n header: props.header,\r\n footer: props.footer,\r\n };\r\n }\r\n getMenuPrefixCls() {\r\n return `${this.prefixCls}-content`;\r\n }\r\n handleSelectAllChange(value) {\r\n const { onSelectAll } = this.props;\r\n if (onSelectAll) {\r\n onSelectAll(value ? this.filteredOptions : []);\r\n }\r\n }\r\n handleClear() {\r\n this.setText(undefined);\r\n }\r\n getHeaderSelected() {\r\n const { filteredOptions: { length }, multiple, prefixCls, props: { selected: { length: selectedLength }, }, } = this;\r\n const selectedText = selectedLength ? `${selectedLength}/` : '';\r\n if (multiple) {\r\n return (<ObserverCheckBox disabled={this.isDisabled()} onChange={this.handleSelectAllChange} onFocus={stopPropagation} checked={!!length && length === selectedLength} indeterminate={!!selectedLength && length !== selectedLength}>\n <span className={`${prefixCls}-header-selected`}>\n {`${selectedText}${length}${$l('Transfer', 'items')}`}\n </span>\n </ObserverCheckBox>);\r\n }\r\n }\r\n getSearchField() {\r\n const { prefixCls } = this;\r\n return (<div className={`${prefixCls}-body-search-wrapper`}>\n <ObserverTextField ref={this.elementReference} onInput={this.handleChange} onClear={this.handleClear} onKeyDown={this.handleKeyDown} suffix={<Icon type=\"search\"/>} clearButton/>\n </div>);\r\n }\r\n renderBody() {\r\n const { prefixCls, searchable, textField, valueField, props: { selected, onSelect }, } = this;\r\n const searchField = searchable && this.getSearchField();\r\n const classString = classNames(`${prefixCls}-body`, {\r\n [`${prefixCls}-body-with-search`]: searchable,\r\n });\r\n const selectedKeys = selected.map(record => getItemKey(record, record.get(textField), record.get(valueField)));\r\n return (<div className={classString}>\n {searchField}\n <div className={`${prefixCls}-content-wrapper`} onFocus={searchable ? stopPropagation : undefined}>\n {this.getMenu({ selectedKeys, onClick: onSelect, focusable: !this.searchable })}\n </div>\n </div>);\r\n }\r\n getClassName() {\r\n const { prefixCls, header, footer } = this;\r\n return super.getClassName({\r\n [`${prefixCls}-with-header`]: header,\r\n [`${prefixCls}-with-footer`]: footer,\r\n });\r\n }\r\n removeLastValue() { }\r\n handleBlur(e) {\r\n ViewComponent.prototype.handleBlur.call(this, e);\r\n }\r\n render() {\r\n const { header, footer } = this;\r\n return (<div {...this.getOtherProps()}>\n {header}\n {this.renderBody()}\n {footer}\n </div>);\r\n }\r\n};\r\ntslib_1.__decorate([\r\n computed\r\n], TransferList.prototype, \"popup\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TransferList.prototype, \"header\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], TransferList.prototype, \"footer\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TransferList.prototype, \"handleSelectAllChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TransferList.prototype, \"handleClear\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], TransferList.prototype, \"handleBlur\", null);\r\nTransferList = tslib_1.__decorate([\r\n observer\r\n], TransferList);\r\nexport default TransferList;\r\n","import React from 'react';\r\nimport noop from 'lodash/noop';\r\nimport Button from '../button';\r\nimport { Size } from '../core/enum';\r\nimport { ButtonColor } from '../button/enum';\r\nexport default function TransferOperation(props) {\r\n const { moveToLeft = noop, moveToRight = noop, leftActive, rightActive, className, multiple, } = props;\r\n if (multiple) {\r\n return (<div className={className}>\n <Button color={ButtonColor.primary} size={Size.small} disabled={!leftActive} onClick={moveToLeft} icon=\"navigate_before\"/>\n <Button color={ButtonColor.primary} size={Size.small} disabled={!rightActive} onClick={moveToRight} icon=\"navigate_next\"/>\n </div>);\r\n }\r\n return null;\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { action, observable, runInAction } from 'mobx';\r\nimport { Select } from '../select/Select';\r\nimport Option from '../option/Option';\r\nimport OptGroup from '../option/OptGroup';\r\nimport TransferList from './TransferList';\r\nimport TransferOperation from './TransferOperation';\r\nimport autobind from '../_util/autobind';\r\nimport isSameLike from '../_util/isSameLike';\r\nlet Transfer = class Transfer extends Select {\r\n constructor(props, context) {\r\n super(props, context);\r\n runInAction(() => {\r\n this.sourceSelected = [];\r\n this.targetSelected = [];\r\n });\r\n }\r\n sourceFilter(record, index, array) {\r\n const { valueField, props: { optionsFilter }, } = this;\r\n if (optionsFilter && !optionsFilter(record, index, array)) {\r\n return false;\r\n }\r\n const values = this.getValues();\r\n if (values.length) {\r\n return values.every(v => !isSameLike(record.get(valueField), v));\r\n }\r\n return true;\r\n }\r\n targetFilter(record, index, array) {\r\n const { valueField, props: { optionsFilter }, } = this;\r\n if (optionsFilter && !optionsFilter(record, index, array)) {\r\n return false;\r\n }\r\n const values = this.getValues();\r\n if (values.length) {\r\n return values.some(v => isSameLike(record.get(valueField), v));\r\n }\r\n return false;\r\n }\r\n handleMenuClick({ item: { props: { value }, }, }) {\r\n if (this.multiple) {\r\n this.selectRecord(value, this.sourceSelected);\r\n }\r\n else {\r\n this.prepareSetValue(this.processRecordToObject(value));\r\n }\r\n }\r\n handleTargetMenuClick({ item: { props: { value }, }, }) {\r\n if (this.multiple) {\r\n this.selectRecord(value, this.targetSelected);\r\n }\r\n else {\r\n this.removeValue(value);\r\n }\r\n }\r\n handleMoveToLeft() {\r\n const { valueField } = this;\r\n this.removeValues(this.targetSelected.map(record => record.get(valueField)));\r\n this.targetSelected = [];\r\n }\r\n handleMoveToRight() {\r\n const { valueField } = this;\r\n this.prepareSetValue(...this.sourceSelected.map(record => record.get(valueField)));\r\n this.sourceSelected = [];\r\n }\r\n handleSourceSelectAllChange(selected) {\r\n this.sourceSelected = selected;\r\n }\r\n handleTargetSelectAllChange(selected) {\r\n this.targetSelected = selected;\r\n }\r\n selectRecord(value, selected) {\r\n const index = selected.indexOf(value);\r\n if (index !== -1) {\r\n selected.splice(index, 1);\r\n }\r\n else {\r\n selected.push(value);\r\n }\r\n }\r\n renderWrapper() {\r\n const { prefixCls, targetSelected, sourceSelected, multiple, props: { titles = [] }, } = this;\r\n const disabled = this.isDisabled();\r\n return (<span key=\"wrapper\" className={`${prefixCls}-wrapper`}>\n <TransferList {...this.props} options={this.options} selected={sourceSelected} header={titles[0]} onSelectAll={this.handleSourceSelectAllChange} onSelect={this.handleMenuClick} optionsFilter={this.sourceFilter}/>\n <TransferOperation className={`${prefixCls}-operation`} leftActive={!(!targetSelected.length || disabled)} rightActive={!(!sourceSelected.length || disabled)} moveToLeft={this.handleMoveToLeft} moveToRight={this.handleMoveToRight} multiple={multiple}/>\n <TransferList {...this.props} options={this.options} selected={targetSelected} header={titles[1]} onSelectAll={this.handleTargetSelectAllChange} onSelect={this.handleTargetMenuClick} optionsFilter={this.targetFilter}/>\n </span>);\r\n }\r\n};\r\nTransfer.displayName = 'Transfer';\r\nTransfer.propTypes = {\r\n ...Select.propTypes,\r\n titles: PropTypes.arrayOf(PropTypes.node),\r\n};\r\nTransfer.defaultProps = {\r\n ...Select.defaultProps,\r\n suffixCls: 'transfer',\r\n multiple: true,\r\n};\r\nTransfer.Option = Option;\r\nTransfer.OptGroup = OptGroup;\r\ntslib_1.__decorate([\r\n observable\r\n], Transfer.prototype, \"sourceSelected\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Transfer.prototype, \"targetSelected\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], Transfer.prototype, \"sourceFilter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Transfer.prototype, \"targetFilter\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Transfer.prototype, \"handleMenuClick\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Transfer.prototype, \"handleTargetMenuClick\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Transfer.prototype, \"handleMoveToLeft\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Transfer.prototype, \"handleMoveToRight\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Transfer.prototype, \"handleSourceSelectAllChange\", null);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Transfer.prototype, \"handleTargetSelectAllChange\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Transfer.prototype, \"selectRecord\", null);\r\nTransfer = tslib_1.__decorate([\r\n observer\r\n], Transfer);\r\nexport default Transfer;\r\n","import Transfer from './Transfer';\r\nexport default Transfer;\r\n","import ModalContainer from './ModalContainer';\r\nexport default ModalContainer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { FormField } from '../field/FormField';\r\nimport Icon from '../icon';\r\nimport Progress from '../progress';\r\nimport { Size } from '../core/enum';\r\nexport default class UploadList extends FormField {\r\n render() {\r\n const { prefixCls, props: { items, remove, showPreviewImage, previewImageWidth, }, } = this;\r\n const list = items.map(file => {\r\n let previewImg;\r\n let progress;\r\n let removeIcon;\r\n const progressProps = {\r\n value: file.percent,\r\n size: Size.small,\r\n showInfo: false,\r\n };\r\n if (showPreviewImage && file.type.startsWith('image')) {\r\n // temporarily set img[width] to 100\r\n previewImg = <img width={previewImageWidth} alt={file.filename} src={file.url}/>;\r\n }\r\n if (file.status === 'uploading') {\r\n progress = (<div className={`${prefixCls}-item-progress`}>\n <Progress {...progressProps}/>\n </div>);\r\n }\r\n else {\r\n const rmProps = {\r\n className: classnames(`${prefixCls}-item-icon`, {\r\n [`${prefixCls}-item-remove`]: true,\r\n }),\r\n type: 'close',\r\n onClick: () => {\r\n remove(file);\r\n },\r\n };\r\n removeIcon = <Icon {...rmProps}/>;\r\n }\r\n const listProps = {\r\n className: classnames(`${prefixCls}-item`, {\r\n [`${prefixCls}-item-error`]: file.status === 'error',\r\n [`${prefixCls}-item-success`]: file.status === 'success',\r\n }),\r\n };\r\n return (<div {...listProps} key={file.uid}>\n {previewImg}\n <span className={`${prefixCls}-item-name`}>{file.name}</span>\n {progress}\n {removeIcon}\n </div>);\r\n });\r\n const listWrapperCls = items.length ? `${prefixCls}` : `${prefixCls}-empty`;\r\n return (<div className={listWrapperCls}>\n {list}\n </div>);\r\n }\r\n}\r\nUploadList.displayName = 'UploadList';\r\nUploadList.propTypes = {\r\n items: PropTypes.array,\r\n remove: PropTypes.func,\r\n ...FormField.propTypes,\r\n};\r\nUploadList.defaultProps = {\r\n ...FormField.defaultProps,\r\n suffixCls: 'upload-list',\r\n items: [],\r\n};\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action, observable, runInAction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport omit from 'lodash/omit';\r\nimport Button from '../button/Button';\r\nimport { ButtonColor } from '../button/enum';\r\nimport autobind from '../_util/autobind';\r\nimport { FormField } from '../field/FormField';\r\nimport Icon from '../icon';\r\nimport message from '../message';\r\nimport Modal from '../modal';\r\nimport UploadList from './UploadList';\r\nimport Tooltip from '../tooltip/Tooltip';\r\nimport { $l } from '../locale-context';\r\n/**\r\n * 把XMLHttpRequest对象的返回信息转化为字符串\r\n *\r\n * @param {XMLHttpRequest} xhr\r\n * @returns {string}\r\n * @memberof Upload\r\n */\r\nfunction getResponse(xhr) {\r\n const res = xhr.responseText || xhr.response;\r\n if (!res) {\r\n return res;\r\n }\r\n try {\r\n return JSON.parse(res).message;\r\n }\r\n catch (e) {\r\n return '';\r\n }\r\n}\r\nlet Upload = class Upload extends FormField {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.saveNativeInputElement = elem => (this.nativeInputElement = elem);\r\n /**\r\n * 传递包装按钮的点击事件\r\n *\r\n */\r\n this.handleWrapperBtnClick = () => {\r\n this.nativeInputElement.click();\r\n };\r\n this.handleUploadBtnClick = () => {\r\n this.startUpload();\r\n };\r\n this.startUpload = () => {\r\n const fileList = [...this.fileList];\r\n if (fileList.length) {\r\n // <-- 当有文件时才上传\r\n this.uploadFiles(fileList);\r\n this.nativeInputElement.value = '';\r\n }\r\n else {\r\n Modal.error($l('Upload', 'no_file'));\r\n }\r\n };\r\n this.handleRemove = (file) => {\r\n this.removeFileItem(file);\r\n };\r\n runInAction(() => {\r\n this.fileList = [];\r\n });\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), [\r\n 'accept',\r\n 'action',\r\n 'data',\r\n 'header',\r\n 'multiple',\r\n 'onChange',\r\n 'ref',\r\n 'uploadImmediately',\r\n 'fileListMaxLength',\r\n 'showPreviewImage',\r\n 'previewImageWidth',\r\n 'showUploadBtn',\r\n 'onUploadSuccess',\r\n 'onUploadError',\r\n 'onFileChange',\r\n ]);\r\n return otherProps;\r\n }\r\n render() {\r\n const { prefixCls, props: { action: formAction, children, multiple, accept, name = 'file', // <-- convince ts\r\n uploadImmediately, showPreviewImage, previewImageWidth, showUploadBtn, extra, }, } = this;\r\n const uploadProps = {\r\n multiple,\r\n accept: accept ? accept.join(',') : undefined,\r\n action: formAction,\r\n name,\r\n type: 'file',\r\n ref: this.saveNativeInputElement,\r\n onChange: this.handleChange,\r\n ...this.getOtherProps(),\r\n };\r\n const inputWrapperBtn = [\r\n <Button key=\"upload-btn\" onClick={this.handleWrapperBtnClick}>\n <Icon type=\"insert_drive_file\"/>\n <span>{children || $l('Upload', 'file_selection')}</span>\n </Button>,\r\n <input key=\"upload\" {...uploadProps} hidden/>,\r\n ];\r\n const uploadBtn = (<Tooltip title={$l('Upload', 'click_to_upload')} placement=\"right\">\n <Button color={ButtonColor.primary} onClick={this.handleUploadBtnClick}>\n <Icon type=\"file_upload\"/>\n </Button>\n </Tooltip>);\r\n return (<div className={`${prefixCls}`}>\n <div className=\"flex-wrapper\">\n <div className={`${prefixCls}-select`}>\n {inputWrapperBtn}\n {!uploadImmediately && showUploadBtn ? uploadBtn : null}\n </div>\n <div>{extra}</div>\n </div>\n\n <UploadList previewImageWidth={previewImageWidth} showPreviewImage={showPreviewImage} items={[...this.fileList]} remove={this.handleRemove}/>\n </div>);\r\n }\r\n /**\r\n * 处理<input type=\"file\">元素的change事件,\r\n * 主要是取出事件对象中的files对象并传递给uploadFiles方法\r\n *\r\n * @param {*} e <input>元素的change事件对象\r\n * @memberof Upload\r\n */\r\n handleChange(e) {\r\n const fileList = e.target.files;\r\n const files = Array.from(fileList).slice(0);\r\n this.fileList = [];\r\n const fileBuffer = [];\r\n files.forEach((file, index) => {\r\n file.uid = this.getUid(index);\r\n file.url = URL.createObjectURL(file);\r\n fileBuffer.push(file);\r\n });\r\n this.fileList = fileBuffer;\r\n e.target.value = '';\r\n const { uploadImmediately, onFileChange } = this.props;\r\n if (uploadImmediately) {\r\n this.uploadFiles(this.fileList);\r\n }\r\n if (onFileChange) {\r\n onFileChange(this.fileList.slice());\r\n }\r\n }\r\n /**\r\n * 分别上传fileList中的每个文件对象\r\n *\r\n * @param {UploadFile[]} fileList 文件对象数组\r\n * @returns {void}\r\n * @memberof Upload\r\n */\r\n uploadFiles(fileList) {\r\n const { action: formAction, accept, fileListMaxLength = 0, } = this.props;\r\n if (!formAction) {\r\n Modal.error($l('Upload', 'upload_path_unset'));\r\n return;\r\n }\r\n if (!this.isAcceptFiles(fileList)) {\r\n Modal.error($l('Upload', 'not_acceptable_prompt') + accept.join(','));\r\n return;\r\n }\r\n if (fileListMaxLength !== 0 && this.fileList.length > fileListMaxLength) {\r\n Modal.error(`${$l('Upload', 'file_list_max_length')}: ${fileListMaxLength}`);\r\n return;\r\n }\r\n const files = Array.from(fileList).slice(0);\r\n const that = this;\r\n files.forEach((file, index) => {\r\n file.uid = this.getUid(index);\r\n setTimeout(function () {\r\n // that.handleStart(file);\r\n that.upload(file);\r\n }, 0);\r\n });\r\n }\r\n /**\r\n * 上传每个文件对象\r\n *\r\n * @param {*} file\r\n * @returns {void}\r\n * @memberof Upload\r\n */\r\n upload(file) {\r\n const { data, action: formAction, headers, name: filename } = this.props;\r\n if (typeof XMLHttpRequest === 'undefined') {\r\n return;\r\n }\r\n const xhr = new XMLHttpRequest();\r\n const formData = new FormData();\r\n // 修改文件状态,方便UploadList判断是否展示进度条\r\n file.status = 'uploading';\r\n if (xhr.upload) {\r\n xhr.upload.onprogress = e => {\r\n let percent = 0;\r\n if (e.total > 0) {\r\n percent = (e.loaded / e.total) * 100;\r\n }\r\n this.handleProgress(percent, file);\r\n };\r\n }\r\n if (data) {\r\n const newData = typeof data === 'function' ? data(file) : data;\r\n Object.keys(newData).forEach(key => formData.append(key, newData[key]));\r\n }\r\n // TODO: `filename` default value needs better implementation\r\n formData.append(filename || 'file', file);\r\n const errorMsg = `cannot post ${formAction} ${xhr.status}`;\r\n xhr.open('post', formAction, true);\r\n xhr.onload = () => {\r\n // 以二开头的状态码都认为是成功,暂定?\r\n const isSuccessful = xhr.status.toString().startsWith('2');\r\n if (isSuccessful) {\r\n this.handleSuccess(xhr.status, xhr.response, file);\r\n }\r\n else {\r\n this.handleError(new Error(errorMsg), getResponse(xhr), xhr.response, file);\r\n }\r\n };\r\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n if (headers !== undefined) {\r\n Object.keys(headers).forEach(key => {\r\n if ({}.hasOwnProperty.call(headers, key)) {\r\n xhr.setRequestHeader(key, headers[key]);\r\n }\r\n });\r\n }\r\n xhr.send(formData);\r\n xhr.onerror = () => {\r\n this.handleError(new Error(errorMsg), getResponse(xhr), xhr.response, file);\r\n };\r\n xhr.ontimeout = () => {\r\n const timeoutMsg = `The request post for ${action} timed out`;\r\n this.handleError(new Error(timeoutMsg), getResponse(xhr), xhr.response, file);\r\n };\r\n }\r\n /**\r\n * 处理上传成功的函数,根据结果设置文件对象的状态,\r\n * 用于在UploadList中的展示\r\n *\r\n * @param {number} status HTTP状态码\r\n * @param {string} response 响应对象\r\n * @param {UploadFile} file 文件对象\r\n * @returns\r\n */\r\n handleSuccess(status, response, file) {\r\n const targetItem = this.getFileItem(file);\r\n if (targetItem) {\r\n const { onUploadSuccess } = this.props;\r\n targetItem.status = status === 200 ? 'success' : 'done';\r\n targetItem.response = response;\r\n if (onUploadSuccess) {\r\n onUploadSuccess(response, file);\r\n }\r\n this.forceUpdate();\r\n }\r\n }\r\n /**\r\n * 处理上传进度变化的函数,更新文件对象中的percent值,\r\n * 用于在UploadList中展示\r\n *\r\n * @param {number} percent 上传百分比\r\n * @param {UploadFile} file 文件对象\r\n * @returns\r\n */\r\n handleProgress(percent, file) {\r\n const { onUploadProgress } = this.props;\r\n const targetItem = this.getFileItem(file);\r\n if (targetItem) {\r\n targetItem.percent = percent;\r\n if (onUploadProgress) {\r\n onUploadProgress(percent, file);\r\n }\r\n this.forceUpdate();\r\n }\r\n }\r\n /**\r\n * 处理上传出错的函数,用于设置文件对象的status值,\r\n *\r\n * @param {Error} error 错误对象\r\n * @param {string} responseText 处理成字符串的响应对象\r\n * @param {UploadFile} file 文件对象\r\n * @returns\r\n */\r\n handleError(error, responseText, response, file) {\r\n const { onUploadError } = this.props;\r\n const targetItem = this.getFileItem(file);\r\n if (targetItem) {\r\n targetItem.status = 'error';\r\n targetItem.error = error;\r\n targetItem.response = responseText;\r\n if (onUploadError) {\r\n onUploadError(error, response, file);\r\n }\r\n this.forceUpdate();\r\n }\r\n }\r\n /**\r\n * 判断文件后缀名是否合格\r\n * this.props.accept值为falsy时返回true,否则正常判断\r\n *\r\n * @param {UploadFile[]} fileList 文件对象数组\r\n * @returns {boolean}\r\n * @memberof Upload\r\n */\r\n isAcceptFiles(fileList) {\r\n const { accept } = this.props;\r\n if (!accept) {\r\n return true;\r\n }\r\n const acceptTypes = accept.map(type => {\r\n type = type.replace(/\\./g, '\\\\.');\r\n type = type.replace(/\\*/g, '.*');\r\n return new RegExp(type);\r\n });\r\n return fileList.some(({ name, type }) => acceptTypes.some(acceptType => acceptType.test(name) || acceptType.test(type)));\r\n }\r\n /**\r\n * 使用日期获取一个uid\r\n *\r\n * @param {number} index 索引\r\n * @returns {string}\r\n * @memberof Upload\r\n */\r\n getUid(index) {\r\n const { prefixCls } = this;\r\n const now = new Date();\r\n return `${prefixCls}-${now}-${index}`;\r\n }\r\n /**\r\n * 从文件对象数组中获取一个文件对象的引用,\r\n * 首先尝试通过uid属性匹配文件对象,若失败则尝试name\r\n *\r\n * @param {UploadFile} file\r\n * @param {UploadFile[]} fileList 文件对象数组\r\n * @returns {UploadFile}\r\n * @memberof Upload\r\n */\r\n getFileItem(file) {\r\n const matchKey = file.uid !== undefined ? 'uid' : 'name';\r\n return this.fileList.find(item => item[matchKey] === file[matchKey]);\r\n }\r\n /**\r\n * 从文件对象数组中移除一个文件对象,\r\n * 首先尝试通过uid属性匹配文件对象,若失败则尝试name\r\n *\r\n * @param {UploadFile} file\r\n * @param {UploadFile[]} fileList\r\n * @returns {UploadFile[]}\r\n * @memberof Upload\r\n */\r\n removeFileItem(file) {\r\n const { fileList } = this;\r\n const matchKey = file.uid !== undefined ? 'uid' : 'name';\r\n const index = fileList.findIndex(item => item[matchKey] === file[matchKey]);\r\n fileList.splice(index, 1);\r\n }\r\n};\r\nUpload.displayName = 'Upload';\r\nUpload.propTypes = {\r\n /**\r\n * 可接受的上传文件类型\r\n * 可选值: MIME类型字符串组成的数组\r\n */\r\n accept: PropTypes.arrayOf(PropTypes.string),\r\n /**\r\n * 上传文件路径\r\n */\r\n action: PropTypes.string,\r\n /**\r\n * 上传所需参数或者返回上传参数的方法\r\n * @default\r\n * {}\r\n */\r\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\r\n /**\r\n * 设置上传的请求头部\r\n * @default\r\n * {}\r\n */\r\n headers: PropTypes.object,\r\n /**\r\n * 是否支持多选文件\r\n * @default\r\n * false\r\n */\r\n multiple: PropTypes.bool,\r\n uploadImmediately: PropTypes.bool,\r\n fileListMaxLength: PropTypes.number,\r\n showPreviewImage: PropTypes.bool,\r\n previewImageWidth: PropTypes.number,\r\n extra: PropTypes.any,\r\n onFileChange: PropTypes.func,\r\n onUploadProgress: PropTypes.func,\r\n onUploadSuccess: PropTypes.func,\r\n onUploadError: PropTypes.func,\r\n showUploadBtn: PropTypes.bool,\r\n ...FormField.propTypes,\r\n};\r\nUpload.defaultProps = {\r\n ...FormField.defaultProps,\r\n suffixCls: 'upload',\r\n multiple: false,\r\n headers: {},\r\n data: {},\r\n action: '',\r\n name: 'file',\r\n uploadImmediately: true,\r\n fileListMaxLength: 0,\r\n showPreviewImage: true,\r\n previewImageWidth: 100,\r\n showUploadBtn: true,\r\n onUploadSuccess: () => message.success($l('Upload', 'upload_success')),\r\n onUploadError: () => message.error($l('Upload', 'upload_failure')),\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], Upload.prototype, \"fileList\", void 0);\r\ntslib_1.__decorate([\r\n autobind,\r\n action\r\n], Upload.prototype, \"handleChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Upload.prototype, \"uploadFiles\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], Upload.prototype, \"upload\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Upload.prototype, \"handleSuccess\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Upload.prototype, \"handleProgress\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Upload.prototype, \"handleError\", null);\r\ntslib_1.__decorate([\r\n action\r\n], Upload.prototype, \"removeFileItem\", null);\r\nUpload = tslib_1.__decorate([\r\n observer\r\n], Upload);\r\nexport default Upload;\r\n","import Upload from './Upload';\r\nexport default Upload;\r\n","import { Row } from '../grid';\r\nexport default Row;\r\n","import { Col } from '../grid';\r\nexport default Col;\r\n","import Pagination from './Pagination';\r\nexport default Pagination;\r\n","import Menu from 'choerodon-ui/lib/menu';\r\nexport default Menu;\r\n","import Notification from 'choerodon-ui/lib/notification';\r\nexport default Notification;\r\n","import React from 'react';\r\nimport { TreeNode } from 'choerodon-ui/lib/tree';\r\nexport function getKey(record, idField) {\r\n return String(idField ? record.get(idField) : record.id);\r\n}\r\nfunction getTreeNode(record, children, idField, text) {\r\n const key = getKey(record, idField);\r\n return (<TreeNode title={text} key={key} eventKey={key} hasChildren={!!record.children} selectable={record.selectable}>\n {children}\n </TreeNode>);\r\n}\r\nexport function getTreeNodes(dataSet, records = [], forceRenderKeys, renderer, titleField) {\r\n const { idField } = dataSet.props;\r\n return records.map(record => {\r\n const children = forceRenderKeys.indexOf(getKey(record, idField)) !== -1\r\n ? getTreeNodes(dataSet, record.children, forceRenderKeys, renderer)\r\n : null;\r\n return getTreeNode(record, children, idField, renderer({ dataSet, record, text: record.get(titleField) }));\r\n });\r\n}\r\n","import * as tslib_1 from \"tslib\";\r\nimport Set from 'core-js/library/fn/set';\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { observer } from 'mobx-react';\r\nimport { computed, observable, runInAction } from 'mobx';\r\nimport noop from 'lodash/noop';\r\nimport C7NTree, { TreeNode, } from 'choerodon-ui/lib/tree';\r\nimport { getKey, getTreeNodes } from './util';\r\nimport { BooleanValue, DataSetSelection } from '../data-set/enum';\r\nimport Spin from '../spin';\r\nfunction defaultRenderer({ text }) {\r\n return text;\r\n}\r\nlet Tree = class Tree extends Component {\r\n constructor(props, context) {\r\n super(props, context);\r\n this.stateForceRenderKeys = [];\r\n this.handleExpand = (expandedKeys, eventObj) => {\r\n if (this.setExpand(eventObj)) {\r\n runInAction(() => {\r\n this.stateExpandedKeys = expandedKeys;\r\n });\r\n }\r\n const { onExpand = noop } = this.props;\r\n onExpand(expandedKeys, eventObj);\r\n };\r\n this.handleCheck = (checkedKeys, eventObj) => {\r\n if (this.setCheck(eventObj)) {\r\n runInAction(() => {\r\n this.stateCheckedKeys = checkedKeys;\r\n });\r\n }\r\n const { onCheck = noop } = this.props;\r\n onCheck(checkedKeys, eventObj);\r\n };\r\n this.handleSelect = (_selectedKeys, eventObj) => {\r\n const { dataSet } = this.props;\r\n if (dataSet) {\r\n const { idField } = dataSet.props;\r\n const { node, selected } = eventObj;\r\n const { eventKey } = node.props;\r\n const found = dataSet.find(record => eventKey === String(idField ? record.get(idField) : record.id));\r\n if (found) {\r\n if (selected) {\r\n dataSet.select(found);\r\n }\r\n else {\r\n dataSet.unSelect(found);\r\n }\r\n }\r\n }\r\n };\r\n runInAction(() => {\r\n this.stateCheckedKeys = [];\r\n this.stateExpandedKeys = [];\r\n });\r\n }\r\n get forceRenderKeys() {\r\n return (this.stateForceRenderKeys = [\r\n ...new Set([...this.stateForceRenderKeys, ...this.expandedKeys]),\r\n ]);\r\n }\r\n get expandedKeys() {\r\n const { dataSet } = this.props;\r\n if (dataSet) {\r\n const { expandField, idField } = dataSet.props;\r\n if (expandField) {\r\n const keys = [];\r\n dataSet.forEach(record => {\r\n if (record.isExpanded) {\r\n keys.push(getKey(record, idField));\r\n }\r\n });\r\n return keys;\r\n }\r\n }\r\n return this.stateExpandedKeys;\r\n }\r\n get checkedKeys() {\r\n const { dataSet } = this.props;\r\n if (dataSet) {\r\n const { checkField, idField } = dataSet.props;\r\n if (checkField) {\r\n const keys = [];\r\n dataSet.forEach(record => {\r\n const field = record.getField(checkField);\r\n if (record.get(checkField) === (field ? field.get(BooleanValue.trueValue) : true)) {\r\n keys.push(getKey(record, idField));\r\n }\r\n });\r\n return keys;\r\n }\r\n }\r\n return this.stateCheckedKeys;\r\n }\r\n get selectedKeys() {\r\n const { dataSet } = this.props;\r\n if (dataSet) {\r\n const { idField } = dataSet.props;\r\n return dataSet.selected.map(record => getKey(record, idField));\r\n }\r\n return [];\r\n }\r\n setExpand(eventObj) {\r\n const { dataSet } = this.props;\r\n if (dataSet) {\r\n const { expandField, idField } = dataSet.props;\r\n if (expandField) {\r\n const { node, expanded } = eventObj;\r\n const { eventKey } = node.props;\r\n const found = dataSet.find(record => eventKey === getKey(record, idField));\r\n if (found) {\r\n found.isExpanded = expanded;\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n setCheck(eventObj) {\r\n const { dataSet } = this.props;\r\n if (dataSet) {\r\n const { checkField, idField } = dataSet.props;\r\n if (checkField) {\r\n const { node, checked } = eventObj;\r\n const { eventKey } = node.props;\r\n const found = dataSet.find(record => eventKey === String(idField ? record.get(idField) : record.id));\r\n if (found) {\r\n const field = found.getField(checkField);\r\n found.set(checkField, field\r\n ? checked\r\n ? field.get(BooleanValue.trueValue)\r\n : field.get(BooleanValue.falseValue)\r\n : checked);\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n render() {\r\n const { dataSet, renderer = defaultRenderer, titleField, ...otherProps } = this.props;\r\n if (dataSet) {\r\n const props = {};\r\n props.children = getTreeNodes(dataSet, dataSet.treeData, this.forceRenderKeys, renderer, titleField);\r\n props.onExpand = this.handleExpand;\r\n props.onCheck = this.handleCheck;\r\n props.onSelect = this.handleSelect;\r\n props.expandedKeys = this.expandedKeys.slice();\r\n props.checkedKeys = this.checkedKeys.slice();\r\n props.multiple = dataSet.props.selection === DataSetSelection.multiple;\r\n props.selectedKeys = this.selectedKeys.slice();\r\n return (<Spin dataSet={dataSet}>\n <C7NTree {...otherProps} {...props}/>\n </Spin>);\r\n }\r\n return <C7NTree {...otherProps}/>;\r\n }\r\n};\r\nTree.displayName = 'Tree<PRO>';\r\nTree.propTypes = {\r\n prefixCls: PropTypes.string,\r\n className: PropTypes.string,\r\n tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n children: PropTypes.any,\r\n treeData: PropTypes.array,\r\n showLine: PropTypes.bool,\r\n showIcon: PropTypes.bool,\r\n icon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\r\n focusable: PropTypes.bool,\r\n selectable: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n multiple: PropTypes.bool,\r\n checkable: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\r\n checkStrictly: PropTypes.bool,\r\n draggable: PropTypes.bool,\r\n defaultExpandParent: PropTypes.bool,\r\n autoExpandParent: PropTypes.bool,\r\n defaultExpandAll: PropTypes.bool,\r\n defaultExpandedKeys: PropTypes.arrayOf(PropTypes.string),\r\n expandedKeys: PropTypes.arrayOf(PropTypes.string),\r\n defaultCheckedKeys: PropTypes.arrayOf(PropTypes.string),\r\n checkedKeys: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\r\n PropTypes.object,\r\n ]),\r\n defaultSelectedKeys: PropTypes.arrayOf(PropTypes.string),\r\n selectedKeys: PropTypes.arrayOf(PropTypes.string),\r\n onClick: PropTypes.func,\r\n onDoubleClick: PropTypes.func,\r\n onExpand: PropTypes.func,\r\n onCheck: PropTypes.func,\r\n onSelect: PropTypes.func,\r\n onLoad: PropTypes.func,\r\n loadData: PropTypes.func,\r\n loadedKeys: PropTypes.arrayOf(PropTypes.string),\r\n onMouseEnter: PropTypes.func,\r\n onMouseLeave: PropTypes.func,\r\n onRightClick: PropTypes.func,\r\n onDragStart: PropTypes.func,\r\n onDragEnter: PropTypes.func,\r\n onDragOver: PropTypes.func,\r\n onDragLeave: PropTypes.func,\r\n onDragEnd: PropTypes.func,\r\n onDrop: PropTypes.func,\r\n filterTreeNode: PropTypes.func,\r\n openTransitionName: PropTypes.string,\r\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n switcherIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\r\n};\r\nTree.TreeNode = TreeNode;\r\ntslib_1.__decorate([\r\n observable\r\n], Tree.prototype, \"stateCheckedKeys\", void 0);\r\ntslib_1.__decorate([\r\n observable\r\n], Tree.prototype, \"stateExpandedKeys\", void 0);\r\ntslib_1.__decorate([\r\n computed\r\n], Tree.prototype, \"forceRenderKeys\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Tree.prototype, \"expandedKeys\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Tree.prototype, \"checkedKeys\", null);\r\ntslib_1.__decorate([\r\n computed\r\n], Tree.prototype, \"selectedKeys\", null);\r\nTree = tslib_1.__decorate([\r\n observer\r\n], Tree);\r\nexport default Tree;\r\n","import * as tslib_1 from \"tslib\";\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { action, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport isString from 'lodash/isString';\r\nimport isEqual from 'lodash/isEqual';\r\nimport omit from 'lodash/omit';\r\nimport noop from 'lodash/noop';\r\nimport KeyCode from 'choerodon-ui/lib/_util/KeyCode';\r\nimport ObserverFormField from '../field';\r\nimport autobind from '../_util/autobind';\r\nlet CodeMirror;\r\nif (typeof window !== 'undefined') {\r\n // eslint-disable-next-line global-require\r\n CodeMirror = require('react-codemirror2').Controlled;\r\n}\r\nconst defaultCodeMirrorOptions = {\r\n theme: 'neat',\r\n lineNumbers: true,\r\n lint: true,\r\n gutters: ['CodeMirror-lint-markers'],\r\n};\r\nlet CodeArea = class CodeArea extends ObserverFormField {\r\n constructor() {\r\n super(...arguments);\r\n this.cmOptions = this.getCodeMirrorOptions();\r\n this.emptyValue = '';\r\n /**\r\n * 编辑器失去焦点时,调用父类方法,同步DataSet中的内容\r\n *\r\n * @memberof CodeArea\r\n */\r\n this.handleCodeMirrorBlur = (codeMirrorInstance) => {\r\n const { formatter } = this.props;\r\n // 更新DataSet的值之前,先去拿到原始的raw格式\r\n const codeMirrorText = codeMirrorInstance.getValue();\r\n this.setValue(formatter ? formatter.getRaw(codeMirrorText) : codeMirrorText);\r\n };\r\n /**\r\n * 在CodeMirror编辑器实例挂载前添加额外配置\r\n *\r\n * @memberof CodeArea\r\n */\r\n this.handleCodeMirrorDidMount = (editor) => {\r\n const { formatter, style, formatHotKey, unFormatHotKey } = this.props;\r\n const { width = '100%', height = 100 } = style || {};\r\n const options = {\r\n Tab(cm) {\r\n if (cm.somethingSelected()) {\r\n cm.indentSelection('add'); // 有选中内容时整体缩进\r\n }\r\n else {\r\n // 使用空格代替缩进\r\n const spaces = Array(cm.getOption('indentUnit') + 1).join(' ');\r\n cm.replaceSelection(spaces);\r\n }\r\n },\r\n };\r\n if (formatter) {\r\n if (formatHotKey) {\r\n // default: 'Alt-F'\r\n options[formatHotKey] = cm => cm.setValue(formatter.getFormatted(cm.getValue()));\r\n }\r\n if (unFormatHotKey) {\r\n // default: 'Alt-R'\r\n options[unFormatHotKey] = cm => cm.setValue(formatter.getRaw(cm.getValue()));\r\n }\r\n }\r\n editor.setSize(width, height); // default size: ('100%', 100)\r\n editor.setOption('extraKeys', options);\r\n };\r\n }\r\n handleBeforeChange(_editor, _data, value) {\r\n this.setText(value);\r\n }\r\n handleCodeMirrorKeyDown(cm, e) {\r\n const { onKeyDown = noop, onEnterDown = noop } = this.props;\r\n switch (e.keyCode) {\r\n case KeyCode.ENTER:\r\n onEnterDown(e);\r\n break;\r\n case KeyCode.ESC:\r\n cm.getInputField().blur();\r\n break;\r\n default:\r\n }\r\n onKeyDown(e);\r\n }\r\n getCodeMirrorOptions(options = this.props.options) {\r\n return { ...defaultCodeMirrorOptions, ...options };\r\n }\r\n getOtherProps() {\r\n const otherProps = omit(super.getOtherProps(), ['onChange', 'formatHotKey', 'unFormatHotKey']);\r\n otherProps.onKeyDown = this.handleCodeMirrorKeyDown;\r\n return otherProps;\r\n }\r\n componentWillReceiveProps(nextProps, nextContext) {\r\n const { options } = nextProps;\r\n if (!isEqual(options, this.props.options)) {\r\n this.cmOptions = this.getCodeMirrorOptions(options);\r\n }\r\n super.componentWillReceiveProps(nextProps, nextContext);\r\n }\r\n renderWrapper() {\r\n if (CodeMirror) {\r\n this.cmOptions.readOnly = this.isDisabled() ? 'nocursor' : this.isReadOnly();\r\n const text = this.getTextNode();\r\n return (<div {...this.getWrapperProps()}>\n <label>\n <CodeMirror {...this.getOtherProps()} value={isString(text) ? text : this.getText(this.getValue())} options={this.cmOptions} onBeforeChange={this.handleBeforeChange} onBlur={this.handleCodeMirrorBlur} editorDidMount={this.handleCodeMirrorDidMount}/>\n {this.renderFloatLabel()}\n </label>\n </div>);\r\n }\r\n }\r\n setText(text) {\r\n this.text = text;\r\n }\r\n getTextNode() {\r\n return this.text === undefined ? super.getTextNode() || '' : this.text;\r\n }\r\n processValue(value) {\r\n const text = super.processValue(value);\r\n const { formatter } = this.props;\r\n return formatter ? formatter.getFormatted(text) : text;\r\n }\r\n};\r\nCodeArea.displayName = 'CodeArea';\r\nCodeArea.propTypes = {\r\n options: PropTypes.object,\r\n formatHotKey: PropTypes.string,\r\n unFormatHotKey: PropTypes.string,\r\n formatter: PropTypes.object,\r\n ...ObserverFormField.propTypes,\r\n};\r\nCodeArea.defaultProps = {\r\n ...ObserverFormField.defaultProps,\r\n suffixCls: 'code-area',\r\n formatHotKey: 'Alt-F',\r\n unFormatHotKey: 'Alt-R',\r\n};\r\ntslib_1.__decorate([\r\n observable\r\n], CodeArea.prototype, \"text\", void 0);\r\ntslib_1.__decorate([\r\n autobind\r\n], CodeArea.prototype, \"handleBeforeChange\", null);\r\ntslib_1.__decorate([\r\n autobind\r\n], CodeArea.prototype, \"handleCodeMirrorKeyDown\", null);\r\ntslib_1.__decorate([\r\n action\r\n], CodeArea.prototype, \"setText\", null);\r\nCodeArea = tslib_1.__decorate([\r\n observer\r\n], CodeArea);\r\nexport default CodeArea;\r\n","import Dropdown from './Dropdown';\r\nexport default Dropdown;\r\n","import Output from './Output';\r\nexport default Output;\r\n","import Switch from './Switch';\r\nexport default Switch;\r\n","import lookupStore from './LookupCodeStore';\r\nimport lovStore from './LovCodeStore';\r\nconst stores = {\r\n LovCodeStore: lovStore,\r\n LookupCodeStore: lookupStore,\r\n};\r\nexport default stores;\r\n","import ObserverFormField from './FormField';\r\nexport default ObserverFormField;\r\n","import CodeArea from './CodeArea';\r\nexport default CodeArea;\r\n","/* @remove-on-es-build-begin */\r\n// this file is not used if use https://www.npmjs.com/package/babel-plugin-import\r\nconst ENV = process.env.NODE_ENV;\r\nif (ENV !== 'production' &&\r\n ENV !== 'test' &&\r\n typeof console !== 'undefined' &&\r\n console.warn &&\r\n typeof window !== 'undefined') {\r\n console.warn('You are using a whole package of choerodon-ui/pro, ' +\r\n 'please use https://www.npmjs.com/package/babel-plugin-import to reduce app bundle size.');\r\n}\r\n/* @remove-on-es-build-end */\r\nexport { default as Axios } from './axios';\r\nexport { default as DataSet } from './data-set';\r\nexport { default as Form } from './form';\r\nexport { default as Table } from './table';\r\nexport { default as Button } from './button';\r\nexport { default as CheckBox } from './check-box';\r\nexport { default as Radio } from './radio';\r\nexport { default as TextField } from './text-field';\r\nexport { default as NumberField } from './number-field';\r\nexport { default as Currency } from './currency';\r\nexport { default as Password } from './password';\r\nexport { default as UrlField } from './url-field';\r\nexport { default as EmailField } from './email-field';\r\nexport { default as Range } from './range';\r\nexport { default as TextArea } from './text-area';\r\nexport { default as DatePicker } from './date-picker';\r\nexport { default as DateTimePicker } from './date-time-picker';\r\nexport { default as TimePicker } from './time-picker';\r\nexport { default as WeekPicker } from './week-picker';\r\nexport { default as MonthPicker } from './month-picker';\r\nexport { default as YearPicker } from './year-picker';\r\nexport { default as ColorPicker } from './color-picker';\r\nexport { default as IconPicker } from './icon-picker';\r\nexport { default as IntlField } from './intl-field';\r\nexport { default as Lov } from './lov';\r\nexport { default as Select } from './select';\r\nexport { default as SelectBox } from './select-box';\r\nexport { default as Transfer } from './transfer';\r\nexport { default as Progress } from './progress';\r\nexport { default as Modal } from './modal';\r\nexport { default as ModalContainer } from './modal-container';\r\nexport { default as Upload } from './upload';\r\nexport { default as Icon } from './icon';\r\nexport { default as Row } from './row';\r\nexport { default as Col } from './col';\r\nexport { default as localeContext } from './locale-context';\r\nexport { default as Pagination } from './pagination';\r\nexport { default as Menu } from './menu';\r\nexport { default as Tabs } from './tabs';\r\nexport { default as Spin } from './spin';\r\nexport { default as Tooltip } from './tooltip';\r\nexport { default as message } from './message';\r\nexport { default as notification } from './notification';\r\nexport { default as Tree } from './tree';\r\nexport { default as Dropdown } from './dropdown';\r\nexport { default as Output } from './output';\r\nexport { default as Switch } from './switch';\r\nexport { default as Stores } from './stores';\r\nexport { default as Animate } from './animate';\r\nexport { default as CodeArea } from './code-area';\r\n","const c7n = require('./components-pro');\n\nconst req = require.context('./components-pro', true, /^\\.\\/locale-context\\/.+_.+\\.tsx$/);\n\nc7n.locales = {};\n\nreq.keys().forEach(mod => {\n const match = mod.match(/\\/([^/]+).tsx$/);\n c7n.locales[match[1]] = req(mod).default;\n});\n\nmodule.exports = c7n;\n","var map = {\n\t\"./locale-context/en_GB.tsx\": 976,\n\t\"./locale-context/en_US.tsx\": 977,\n\t\"./locale-context/ja_JP.tsx\": 978,\n\t\"./locale-context/zh_CN.tsx\": 238\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 = 975;","import { Lang } from './enum';\r\nconst locale = {\r\n lang: Lang.en_GB,\r\n Table: {\r\n show_cached_seletion: 'Show all selected records',\r\n hide_cached_seletion: 'Hide all selected records',\r\n edit_button: 'Edit',\r\n create_button: 'Create',\r\n save_button: 'Save',\r\n cancel_button: 'Cancel',\r\n delete_button: 'Delete',\r\n remove_button: 'Remove',\r\n reset_button: 'Reset',\r\n query_button: 'Query',\r\n expand_button: 'Expand',\r\n collapse_button: 'Collapse',\r\n export_button: 'Export',\r\n advanced_search: 'Advanced Search',\r\n dirty_info: 'Display condition has changed.',\r\n restore: 'Restore',\r\n empty_data: 'No data',\r\n choose_export_columns: 'Please select the column to export',\r\n column_name: 'Column Name',\r\n filter_bar_placeholder: 'Table Filter',\r\n advanced_query: 'Advanced Query',\r\n advanced_query_conditions: 'Advanced Queries',\r\n },\r\n Pagination: {\r\n records_per_page: 'Number of items per page:',\r\n },\r\n Upload: {\r\n file_selection: 'Select File',\r\n click_to_upload: 'Click to Upload',\r\n upload_success: 'Upload successfully',\r\n upload_failure: 'Fail to upload',\r\n no_file: 'No File',\r\n upload_path_unset: 'Upload path unset',\r\n not_acceptable_prompt: 'Upload List contains unacceptable file, accept:',\r\n file_list_max_length: 'Number of files exceeded the maximum',\r\n },\r\n Modal: {\r\n ok: 'OK',\r\n cancel: 'Cancel',\r\n },\r\n DataSet: {\r\n unsaved_data_confirm: `There's unsaved data, continue?`,\r\n invalid_query_dataset: 'Invalid query DataSet.',\r\n delete_selected_row_confirm: 'Are you sure to delete the selected row?',\r\n delete_all_row_confirm: 'Are you sure to delete all rows?',\r\n query_failure: 'Fail to query data.',\r\n submit_success: 'Submit successfully.',\r\n submit_failure: 'Fail to submit data.',\r\n cannot_add_record_when_head_no_current: `Can't create new row record when head record unselected.`,\r\n },\r\n DatePicker: {\r\n value_missing_no_label: 'Please choose a date.',\r\n value_missing: 'Please select {label}.',\r\n type_mismatch: 'Please enter a valid date.',\r\n ok: 'OK',\r\n today: 'Today',\r\n now: 'Now',\r\n this_week: 'This week',\r\n },\r\n EmailField: {\r\n value_missing_no_label: 'Please input an email address.',\r\n value_missing: 'Please input {label}.',\r\n type_mismatch: 'Please input a valid email address.',\r\n },\r\n IntlField: {\r\n modal_title: 'Input multi-language information.',\r\n },\r\n NumberField: {\r\n value_missing_no_label: 'Please input a number.',\r\n value_missing: 'Please input {label}.',\r\n },\r\n Radio: {\r\n value_missing_no_label: 'Please make a choice.',\r\n value_missing: 'Please select {label}.',\r\n },\r\n SelectBox: {\r\n value_missing_no_label: 'Please make a choice.',\r\n value_missing: 'Please select {label}.',\r\n },\r\n Select: {\r\n value_missing_no_label: 'Please make a choice.',\r\n value_missing: 'Please select {label}.',\r\n no_matching_results: 'No matching results.',\r\n select_all: 'Select All',\r\n unselect_all: 'None',\r\n },\r\n Lov: {\r\n choose: 'Choose',\r\n },\r\n Transfer: {\r\n items: 'items',\r\n },\r\n UrlField: {\r\n value_missing_no_label: 'Please input a url address.',\r\n value_missing: 'Please input {label}.',\r\n type_mismatch: 'Please input a valid url address.',\r\n },\r\n ColorPicker: {\r\n value_missing_no_label: 'Please select a color.',\r\n value_missing: 'Please select {label}.',\r\n type_mismatch: 'Please select a valid color.',\r\n },\r\n Validator: {\r\n bad_input: 'Please input a number.',\r\n pattern_mismatch: 'Please input a valid value.',\r\n range_overflow: '{label} must be less than or equal to {max}.',\r\n range_underflow: '{label} must be greater than or equal to {min}.',\r\n step_mismatch: 'Please input a valid value. The closest valid value is {0}.',\r\n step_mismatch_between: 'Please input a valid value. The two closest valid values are {0} and {1}.',\r\n too_long: 'Please decrease the length of the value down to {maxLength} or less characters (You have input {length} characters).',\r\n too_short: 'Please increase the length of the value down to {minLength} or more characters (You have input {length} characters).',\r\n type_mismatch: 'Please input a value to match the given type.',\r\n value_missing_no_label: 'Please input a value.',\r\n value_missing: 'Please input {label}.',\r\n unique: 'The value is duplicate, please input another one.',\r\n unknown: 'Unknown error.',\r\n },\r\n Icon: {\r\n icons: ' Icons',\r\n whatsNew: 'New',\r\n direction: 'Directional',\r\n suggestion: 'Suggested',\r\n edit: 'Editor',\r\n data: 'Data',\r\n other: 'Application',\r\n series: 'Series',\r\n },\r\n};\r\nexport default locale;\r\n","import { Lang } from './enum';\r\nconst locale = {\r\n lang: Lang.en_US,\r\n Table: {\r\n show_cached_seletion: 'Show all selected records',\r\n hide_cached_seletion: 'Hide all selected records',\r\n edit_button: 'Edit',\r\n create_button: 'Create',\r\n save_button: 'Save',\r\n cancel_button: 'Cancel',\r\n delete_button: 'Delete',\r\n remove_button: 'Remove',\r\n reset_button: 'Reset',\r\n query_button: 'Query',\r\n expand_button: 'Expand',\r\n collapse_button: 'Collapse',\r\n export_button: 'Export',\r\n advanced_search: 'Advanced Search',\r\n dirty_info: 'Display condition has changed.',\r\n restore: 'Restore',\r\n empty_data: 'No data',\r\n choose_export_columns: 'Please select the column to export',\r\n column_name: 'Column Name',\r\n filter_bar_placeholder: 'Table Filter',\r\n advanced_query: 'Advanced Query',\r\n advanced_query_conditions: 'Advanced Queries',\r\n },\r\n Pagination: {\r\n records_per_page: 'Number of items per page:',\r\n },\r\n Upload: {\r\n file_selection: 'Select File',\r\n click_to_upload: 'Click to Upload',\r\n upload_success: 'Upload successfully',\r\n upload_failure: 'Fail to upload',\r\n no_file: 'No File',\r\n upload_path_unset: 'Upload path unset',\r\n not_acceptable_prompt: 'Upload List contains unacceptable file, accept:',\r\n file_list_max_length: 'Number of files exceeded the maximum',\r\n },\r\n Modal: {\r\n ok: 'OK',\r\n cancel: 'Cancel',\r\n },\r\n DataSet: {\r\n unsaved_data_confirm: `There's unsaved data, continue?`,\r\n invalid_query_dataset: 'Invalid query DataSet.',\r\n delete_selected_row_confirm: 'Are you sure to delete the selected row?',\r\n delete_all_row_confirm: 'Are you sure to delete all rows?',\r\n query_failure: 'Fail to query data.',\r\n submit_success: 'Submit successfully.',\r\n submit_failure: 'Fail to submit data.',\r\n cannot_add_record_when_head_no_current: `Can't create new row record when head record unselected.`,\r\n },\r\n DatePicker: {\r\n value_missing_no_label: 'Please choose a date.',\r\n value_missing: 'Please select {label}.',\r\n type_mismatch: 'Please enter a valid date.',\r\n ok: 'OK',\r\n today: 'Today',\r\n now: 'Now',\r\n this_week: 'This week',\r\n },\r\n EmailField: {\r\n value_missing_no_label: 'Please input an email address.',\r\n value_missing: 'Please input {label}.',\r\n type_mismatch: 'Please input a valid email address.',\r\n },\r\n IntlField: {\r\n modal_title: 'Input multi-language information.',\r\n },\r\n NumberField: {\r\n value_missing_no_label: 'Please input a number.',\r\n value_missing: 'Please input {label}.',\r\n },\r\n Radio: {\r\n value_missing_no_label: 'Please make a choice.',\r\n value_missing: 'Please select {label}.',\r\n },\r\n SelectBox: {\r\n value_missing_no_label: 'Please make a choice.',\r\n value_missing: 'Please select {label}.',\r\n },\r\n Select: {\r\n value_missing_no_label: 'Please make a choice.',\r\n value_missing: 'Please select {label}.',\r\n no_matching_results: 'No matching results.',\r\n select_all: 'Select All',\r\n unselect_all: 'None',\r\n },\r\n Lov: {\r\n choose: 'Choose',\r\n },\r\n Transfer: {\r\n items: 'items',\r\n },\r\n UrlField: {\r\n value_missing_no_label: 'Please input a url address.',\r\n value_missing: 'Please input {label}.',\r\n type_mismatch: 'Please input a valid url address.',\r\n },\r\n ColorPicker: {\r\n value_missing_no_label: 'Please select a color.',\r\n value_missing: 'Please select {label}.',\r\n type_mismatch: 'Please select a valid color.',\r\n },\r\n Validator: {\r\n bad_input: 'Please input a number.',\r\n pattern_mismatch: 'Please input a valid value.',\r\n range_overflow: '{label} must be less than or equal to {max}.',\r\n range_underflow: '{label} must be greater than or equal to {min}.',\r\n step_mismatch: 'Please input a valid value. The closest valid value is {0}.',\r\n step_mismatch_between: 'Please input a valid value. The two closest valid values are {0} and {1}.',\r\n too_long: 'Please decrease the length of the value down to {maxLength} or less characters (You have input {length} characters).',\r\n too_short: 'Please increase the length of the value down to {minLength} or more characters (You have input {length} characters).',\r\n type_mismatch: 'Please input a value to match the given type.',\r\n value_missing_no_label: 'Please input a value.',\r\n value_missing: 'Please input {label}.',\r\n unique: 'The value is duplicate, please input another one.',\r\n unknown: 'Unknown error.',\r\n },\r\n Icon: {\r\n icons: ' Icons',\r\n whatsNew: 'New',\r\n direction: 'Directional',\r\n suggestion: 'Suggested',\r\n edit: 'Editor',\r\n data: 'Data',\r\n other: 'Application',\r\n series: 'Series',\r\n },\r\n};\r\nexport default locale;\r\n","import { Lang } from './enum';\r\nconst locale = {\r\n lang: Lang.ja_JP,\r\n Table: {\r\n show_cached_seletion: '選択したすべてのレコードを表示',\r\n hide_cached_seletion: '選択したすべてのレコードを非表示にする',\r\n edit_button: '編集',\r\n create_button: '追加',\r\n save_button: 'セーブ',\r\n cancel_button: 'キャンセル',\r\n delete_button: '削除',\r\n remove_button: '削除',\r\n reset_button: 'リセット',\r\n query_button: 'クエリ',\r\n expand_button: '展開',\r\n collapse_button: '折り畳み',\r\n export_button: '書き出す',\r\n advanced_search: '高度な検索',\r\n dirty_info: '表示条件が変更されました',\r\n restore: '復元',\r\n empty_data: 'データがまだありません',\r\n choose_export_columns: 'エクスポートする列を選択してください',\r\n column_name: '列名',\r\n filter_bar_placeholder: 'フィルターテーブル',\r\n advanced_query: '高度なクエリ',\r\n advanced_query_conditions: '高度なクエリ条件',\r\n },\r\n Pagination: {\r\n records_per_page: 'ページあたりの行数:',\r\n },\r\n Upload: {\r\n file_selection: 'ファイルを選択',\r\n click_to_upload: 'クリックアップロード',\r\n upload_success: 'アップロード成功',\r\n upload_failure: 'アップロードに失敗しました',\r\n no_file: 'ファイルなし',\r\n upload_path_unset: 'アップロードパスが設定されていません',\r\n not_acceptable_prompt: 'アップロードタイプのファイルが一致しません。予想:',\r\n file_list_max_length: 'ファイル数が上限を超えています',\r\n },\r\n Modal: {\r\n ok: 'OK',\r\n cancel: 'キャンセル',\r\n },\r\n DataSet: {\r\n unsaved_data_confirm: '未保存のデータがあります。続行しますか? ',\r\n invalid_query_dataset: 'クエリ条件セットがパスしません',\r\n delete_selected_row_confirm: '選択した行を削除してもよろしいですか? ',\r\n delete_all_row_confirm: '本当にすべての行を削除しますか? ',\r\n query_failure: 'クエリに失敗しました',\r\n submit_success: '送信に成功しました',\r\n submit_failure: '送信に失敗しました',\r\n cannot_add_record_when_head_no_current: 'ヘッダーが選択されていません。新しい行レコードを作成できません',\r\n },\r\n DatePicker: {\r\n value_missing_no_label: '日付を選択してください。',\r\n value_missing: '{label}を選択してください。',\r\n type_mismatch: '有効な日付を入力してください。',\r\n ok: 'OK',\r\n today: '今日',\r\n now: 'この瞬間',\r\n this_week: '今週',\r\n },\r\n EmailField: {\r\n value_missing_no_label: 'メールアドレスを入力してください',\r\n value_missing: '{label}を入力してください。',\r\n type_mismatch: '有効なメールアドレスを入力してください',\r\n },\r\n IntlField: {\r\n modal_title: '多言語情報を入力してください',\r\n },\r\n NumberField: {\r\n value_missing_no_label: '数字を入力してください',\r\n value_missing: '{label}を入力してください。',\r\n },\r\n Radio: {\r\n value_missing_no_label: '選択してください。',\r\n value_missing: '{label}を選択してください。',\r\n },\r\n SelectBox: {\r\n value_missing_no_label: '選択してください。',\r\n value_missing: '{label}を選択してください。',\r\n },\r\n Select: {\r\n value_missing_no_label: '選択してください。',\r\n value_missing: '{label}を選択してください。',\r\n no_matching_results: '一致結果はありません。',\r\n select_all: 'すべて選択',\r\n unselect_all: 'いや',\r\n },\r\n Lov: {\r\n choose: '選択してください',\r\n },\r\n Transfer: {\r\n items: 'アイテム',\r\n },\r\n UrlField: {\r\n value_missing_no_label: 'urlを入力してください。',\r\n value_missing: '{label}を入力してください。',\r\n type_mismatch: '有効なurlを入力してください。',\r\n },\r\n ColorPicker: {\r\n value_missing_no_label: '色を選択してください',\r\n value_missing: '{label}を選択してください。',\r\n type_mismatch: '有効な色を選択してください。',\r\n },\r\n Validator: {\r\n bad_input: '数字を入力してください。',\r\n pattern_mismatch: '有効な値を入力してください。',\r\n range_overflow: '{label}は{max}以下でなければなりません。',\r\n range_underflow: '{label}は{min}以上でなければなりません。',\r\n step_mismatch: '有効な値を入力してください。 最も近い有効な値は{0}です。',\r\n step_mismatch_between: '有効な値を入力してください。 最も近い有効な2つの値は、それぞれ{0}と{1}です。',\r\n too_long: 'コンテンツを{maxlength}以下の文字に減らしてください(現在は{length}文字を使用しています)。',\r\n too_short: 'コンテンツを{minlength}以上の文字に増やしてください(現在は{length}文字を使用しています)。',\r\n type_mismatch: 'タイプに一致する有効な値を入力してください。',\r\n value_missing_no_label: 'このフィールドに入力してください。',\r\n value_missing: '{label}を入力してください。',\r\n unique: 'このフィールドの値は一意ではありません。再入力してください。',\r\n unknown: '不明なエラー。',\r\n },\r\n Icon: {\r\n icons: 'アイコン',\r\n whatsNew: '追加',\r\n direction: '方向性',\r\n suggestion: 'プロンプト提案',\r\n edit: 'クラスの編集',\r\n data: 'データクラス',\r\n other: 'Webサイト全般',\r\n series: 'セット',\r\n },\r\n};\r\nexport default locale;\r\n"],"sourceRoot":""}
\No newline at end of file